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
Zamykanie wszystkich zleceń
- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
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 =" );
_______________________________________________________
AccountBalance – funkcja zwraca wartość stanu konta wszystkich zamkniętych pozycji w walucie bazowej konta klienta.
Przykład:
Print( "Stan konta =" );
_______________________________________________________
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.
Funkcji chyba nie ma , ale na podstawie skryptów zamykających można napisać .
http://www.tradingsystemforex.com/scrip ... rders.html
Uruchamia się toto z katalogu experts/scripts
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);
}
Nie spiesz się , zawsze zdążysz stracić .
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
Jeśli więcej to musisz zysk liczyć zarówno za pomocą pętli (lecisz wszystkie transakcje i wyszukujesz swoje


======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..