Robot śpi, a my pracowaliśmy

Anonim

Jak się okazało, robot cały miesiąc nie mógł dokonywać transakcji. Stało się to w wyniku dość częstego błędu: w ustawieniach terminalu zabroniono wykonywania ekspertyz handlowych do eksperta. Nawet nie spojrzałem na serwer na czystość eksperymentu i nie patrząc na to, co tam się działo. I zagrał okrutny żart.

Nie wyklucza to jednak wprowadzenia dodatków do kodu eksperta. W tej chwili zwróć uwagę na ryzyko.

Suplement №1

Jestem zwolennikiem bardzo konserwatywnych systemów obrotu, w którym transakcje odbywają się otwarte przez kilka miesięcy, a na nich zagrożenia są ściśle kontrolowane. W przypadku tego robota mamy zupełnie inny obraz. Eksperci handlowi zobowiązują się do zamknięcia transakcji. Ryzyko nie jest praktycznie kontrolowane. Ważnym i użytecznym dodatkiem będzie limit całkowitego ryzyka , który robot może ponieść w ciągu miesiąca.

Moduł końcowy (funkcja) ma następujący kod:

// + ----------------------------------- + // | Określenie, że robot osiągnęła poziomu dopuszczalnego wypłat

|

bool is_mn_max_los (podwójne percent_of_max_los) { dwukrotnie start_depo_mn = 0. 0, tmp_value = 0. 0;

int i = 0; //

Licznik

do cyklu for (i = OrdersHistoryTotal () - 1, i> = 0; i-) { if (OrderSelect (I SELECT_BY_POS, MODE_HISTORY)!) nadal;

// Jeżeli tak nie jest zaznaczone - przejście do następnego etapu cyklu

if (OrderCloseTime ()> iTime (NULL PERIOD_MN1, 0))

tmp_value + = OrderProfit () + OrderCommission () + OrderSwap ();

}

for (i = OrdersTotal () - 1, i> = 0; i-) {

if (! OrderSelect (I SELECT_BY_POS, MODE_OPEN)) Dalej;

// Jeżeli tak nie jest zaznaczone - przejście do następnego etapu cyklu

tmp_value + = OrderProfit () + OrderCommission () + OrderSwap ();

}

start_depo_mn = AccountEquity () - tmp_value;

GlobalVariableSet («ForTrader_5min», iTime (NULL, PERIOD_M5, 0));

if ((- 1) * tmp_value> (start_depo_mn / 100) * percent_of_max_los)

zwrotny (prawda); // jeśli straciliśmy więcej niż dozwolone, - zwraca true

return (false);

}

// |

Definiowanie fakt, że robot osiągnął poziom dopuszczalny wypłat

| // + ------------------ ----------------- + Suplement №2

Ponieważ osiągnięcie akceptowalnego poziomu wypłaty uzgodnionej

, aby zamknąć wszystkie otwarte transakcje robota,

trzeba będzie funkcjonować, że zapewni. Wezmę gotowy do działania z ich zestaw, który pozwala zamknąć wszystkie zlecenia tego typu z liczbą magiczną: // + ------------------------ ----------- + // | oferty zamknięcia operacja

|

bool CBM (int magia, int slipage, int type) { / *

blisko magii (zamknąć wszystkie zlecenia tego typu z MagicNumber)

Należy przestrzegać maksymalnej dopuszczalnej Spadek (slipage)

stosować

the

close_by_ticket. * / Int n = 0;

do (Int i2 = OrdersTotal () - 1; i2> = 0; i2-) {

if (! OrderSelect (I2 SELECT_BY_POS, MODE_TRADES)) break;

jeśli

((

OrderType () == typu) && (OrderMagicNumber () == magia)) {// jeśli transakcja tego typu, a jego magiczna liczba odpowiedni close_by_ticket (OrderTicket (), slipage); // blisko

deal n ++; // zwiększamy licznik zamkniętych transakcji (w rzeczywistości - próby zamknięcia) } // end if (((OrderType () == OP_BUY) || (OrderType () == OP_SELL)) && (OrderMagicNumber () == magiczne))

} // koniec dla (int i2 = OrdersTotal () - 1, i2> = 0, i2 -)

if (n> 0) // Jeżeli próby zamknięcia nie były większe niż 0, ponownie funkcyjnych prawda

zwrotny (prawda);

zwrotny (fałsz);

} // koniec bool CBM (int magia, int slipage, int type)

// | oferty zamknięcia operacja

|

// + ----------------------------------- + w związku z tym oddziaływanie tych funkcji robot powinien wyglądać następująco: if (is_mn_max_los (Percent_Of_Max_Los)) {

CBM (Magic_Number, Slipage, OP_BUY);

CBM (Magic_Number, Slipage, OP_SELL);

Komentarz («Wewnątrz tego miesiąca osiągnął limit strat, Percent_Of_Max_Los«»% depozytu na początku miesiąca!");

zwrotny (0);

Kod całego robota handlowego miał następującą postać:

Pobierz eksperta

Wniosek

Niestety artykuł był mniejszy niż planowałem. Błąd jest moim błędem, kiedy ostatnio zacząłem robota. Ale teraz, gdy biegnie wreszcie ekspert, będzie wystarczająco dużo materiału do oceny jego skuteczności, analizy błędów (jeśli takie istnieją) i uaktualnienia serca eksperta ds. Handlu

- algorytmu wyszukiwania sygnałów. Ponadto planowane jest dodanie dodatków do obliczania części robót i śledzenia zagrożeń (oprócz uzupełnień).