Zamykanie wszystkich zleceń

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
oiro
Pasjonat
Pasjonat
Posty: 423
Rejestracja: 05 mar 2008, 00:40

Zamykanie wszystkich zleceń

Nieprzeczytany post autor: oiro »

Witam,
mam pewien problem, otwieram dużo pozycji (kiladziesiąt) i chciałbym je wszystkie zamknąć gdy łączny zysk będzie powyżej danej wartości czyli :
if(OrderProfit>x){},
czy w mql'u jest jakaś funkcja zamykająca wszystkie zlecenie??
A jeśli nie to jak możnaby taką zimplementować??
Z góry dziekuje za pomoz
Pozdrawiam

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

Moze od Equity odejmij balance i Ci wyjdzie całkowity zysk otwartych zleceń. Jeśli wynik bedzie wiekszy niż X to zamyka zlecenia.

_______________________________________________________

AccountEquity – funkcja zwraca wartość rachunku obrotów bieżących. Podaje w walucie rachunku bieżącego wartość aktualnego stanu konta (balans) powiększoną/pomniejszoną o wartość aktualnie otwartych pozycji.


Przykład:
Print( "Aktualny stan konta ="

Kod: Zaznacz cały

AccountEquity()
);


_______________________________________________________

AccountBalance – funkcja zwraca wartość stanu konta wszystkich zamkniętych pozycji w walucie bazowej konta klienta.



Przykład:
Print( "Stan konta ="

Kod: Zaznacz cały

AccountBalance()
);
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

dulf
Pasjonat
Pasjonat
Posty: 399
Rejestracja: 24 kwie 2010, 15:13

Nieprzeczytany post autor: dulf »

Funkcji chyba nie ma , ale na podstawie skryptów zamykających można napisać .

http://www.tradingsystemforex.com/scrip ... rders.html

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                            close-all-orders.mq4  |
//|                                  Copyright © 2005, Matias Romeo. |
//|                                       Custom Metatrader Systems. |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2005, Matias Romeo."
#property link      "mailto:matiasDOTromeoATgmail.com"

int start()
{
  int total = OrdersTotal();
  for(int i=total-1;i>=0;i--)
  {
    OrderSelect(i, SELECT_BY_POS);
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, CLR_NONE);
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, CLR_NONE );
                          
    }
    
    if(result == false)
    {
      Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      Sleep(3000);
    }  
  }
  
  return(0);
}
Uruchamia się toto z katalogu experts/scripts
Nie spiesz się , zawsze zdążysz stracić .

Awatar użytkownika
bbq
Pasjonat
Pasjonat
Posty: 604
Rejestracja: 10 maja 2011, 17:12

Nieprzeczytany post autor: bbq »


Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Jeśli używasz tylko 1 strategii to AccountBallance() - AccountEquity()
Jeśli więcej to musisz zysk liczyć zarówno za pomocą pętli (lecisz wszystkie transakcje i wyszukujesz swoje -> Magic i Symbol, to samo z zamykaniem -> wszystko pojedyńczo
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

ODPOWIEDZ