PDA

Zobacz pełną wersję : Zamykanie wielu pozycji w tym samym czasie



murielc
01-11-2007 13:31, 13:31
Cześć chłopaki,

Uczę się kodować MQL4
https://www.forex-instant.com/attachments/1529225097.png, jakiej funkcji mogę użyć do zamykania wielu pozycji naraz. Jeśli jest na to EA, doceniam, że ktoś może to opublikować.

Oto skrypt, który napisałem, problemem jest to, że nie działa, jeśli jest więcej niż 2 pozycje, zwraca błąd # 129
================================================== ======
extern double R.O.I = 3;/Zwrot z inwestycji w%
extern double L.O.I = -3;/Strata z inwestycji w%

int start ()
{
//Zmienne, w których będą znajdować się bilety zleceń każdego typu
//zapamiętany
int BuyStopOrder = 0, SellStopOrder = 0, BuyOrder = 0,
SellOrder = 0;
int _GetLastError = 0, _OrdersTotal = OrdersTotal ();
//szukaj we wszystkich otwartych pozycjach i zapamiętywać, pozycje których
//typ został już otwarty:
for (int z = _OrdersTotal - 1; z gt; = 0; z -)
{
//jeśli wystąpi błąd przy wyszukiwaniu pozycji, idź
//do następnego
if (! OrderSelect (z, SELECT_BY_POS))
{
_GetLastError = GetLastError ();
Drukuj (OrderSelect (, z,, SELECT_BY_POS) - Error #,
_GetLastError);
dalej;
}

//jeśli pozycja została ot nie dla bieżącego symbolu, pomiń go
if (OrderSymbol ()! = Symbol ()) kontynuuj;

//w zależności od typu pozycji, zmień wartość parametru
//zmienna:
przełącznik (OrderType ())
{
case OP_BUY: BuyOrder = OrderTicket (); złamać;
case OP_SELL: SellOrder = OrderTicket (); złamać;
case OP_BUYSTOP: BuyStopOrder = OrderTicket (); złamać;
case OP_SELLSTOP: SellStopOrder = OrderTicket (); złamać;
}
}

if ((AccountEquity ()AccountBalance () - 1) * 100gt; = R.O.I || (AccountEquity ()AccountBalance () - 1) * 100lt; = L.O.I)
{
if (SellStopOrder gt; 0)
{
if (! OrderDelete (SellStopOrder))
{
Alert (OrderDelete Error #, GetLastError ());
return (-1);
}
}
if (BuyStopOrder gt; 0)
{
if (! OrderDelete (BuyStopOrder))
{
Alert (OrderDelete Error #, GetLastError ());
return (-1);
}
}
if (BuyOrder gt; 0)
{
if (! OrderClose (OrderTicket (), OrderLots (), Bid, 3, Blue))
{
Alert (OrderClose Error #, GetLastError ());
return (-1);
}
}
if (SellOrder gt; 0)
{
if (! OrderClose (OrderTicket (), OrderLots (), Bid, 3, Blue))
{
Alert (OrderClose Error #, GetLastError ());
return (-1);
}
}
}
}
================================================== ======
Z góry dziękuję
Szczęśliwy handel

xelipao
11-25-2021 09:37, 09:37
1 Załączniki Przepraszamy, ale nie mogę pomóc, ale jestem raczej hakerem kodu niż programistą. Może jednak znajdziesz tutaj interesujący kod, szczególnie funkcję CloseAll (). Powodzenia :-)
https://www.forex-instant.com/attachments/1529225100758291989.mq4

murielc
11-25-2021 10:58, 10:58
1 Załącznik (-i) Dzięki, mam też ekspertów, którzy mogą zamknąć wszystkie pozycje w tym samym czasie. Po prostu dołączę je tutaj, na wypadek, gdyby ktoś potrzebował. Upewnij się, że przetestowałeś je na demo, zanim użyjesz ich na żywo. Szczęśliwy handel
https://www.forex-instant.com/attachments/1529225102660537915.mq4

murielc
11-25-2021 12:18, 12:18
4 Załącznik (-i) Oto kilka innych
https://www.forex-instant.com/attachments/15292251041734439581.mq4
https://www.forex-instant.com/attachments/1529225105469817314.mq4
https://www.forex-instant.com/attachments/15292251071416918389.mq4
https://www.forex-instant.com/attachments/1529225109223543257.mq4

murielc
11-25-2021 13:39, 13:39
4 Attachment (s) Oto ostatnie 4 ... Happy guys handlu
https://www.forex-instant.com/attachments/15292251111899565234.mq4
https://www.forex-instant.com/attachments/15292251121043177982.mq4
https://www.forex-instant.com/attachments/15292251151760719489.mq4
https://www.forex-instant.com/attachments/15292251171806259487.mq4

asdregvegar
11-25-2021 15:00, 15:00
Dzięki, że dzielisz się z nami tym wszystkim.