Przewodnik po testowaniu i optymalizacji doradcy eksperckiego AI | Deriv Blog
Udoskonal swojego doradcę eksperckiego AI dzięki odpowiednim technikom testowania. Nasz przewodnik obejmuje typowe problemy, metody testowania i optymalizację doradcy eksperckiego pod kątem niezawodnych botów handlowych.
Redakcja Deriv · 21 kwietnia 2025 · 4 min czytania

Doradcy eksperccy AI do handlu już tu są — ale nadal musisz je testować i dopracowywać.
Jeśli korzystałeś już z narzędzi AI, takich jak Claude lub ChatGPT, do stworzenia doradcy eksperckiego na Deriv MT5 lub cBota na Deriv cTrader, to dobry początek. Ale nawet gdy kod wygląda poprawnie, może nadal zawierać błędy, które wpływają na działanie bota.
Zanim uruchomisz swojego doradcę eksperckiego (EA) na rynku na żywo, ważne jest, aby go przetestować i upewnić się, że działa zgodnie z oczekiwaniami.
W tym przewodniku omówimy typowe błędy w kodzie EA generowanych przez AI, sposoby ich naprawiania oraz praktyczne wskazówki, jak poprawić wydajność bota.
Typowe błędy kodowania AI w MQL5
Oto niektóre z najczęstszych problemów występujących w EA generowanych przez AI oraz sposoby ich korekty:
- Błąd undeclared identifier w MQL5
Ten błąd pojawia się, gdy bot używa zmiennej lub nazwy, która nie została prawidłowo zdefiniowana, na przykład gdy brakuje parametru lub użyto nieprawidłowej nazwy w wskaźnikach takich jak iMA().
Rozwiązanie:
Sprawdź parametry wskaźnika i upewnij się, że wszystkie nazwy zmiennych odpowiadają temu, czego oczekuje MetaEditor (narzędzie do kodowania w MT5).
- Brakujące funkcje realizacji transakcji Buy/Sell
Niektóre boty generowane przez AI pomijają kluczową logikę otwierania transakcji.
Rozwiązanie:
Ręcznie dodaj podstawowe funkcje realizacji transakcji. Oto przykład podstawowej struktury do złożenia zlecenia kupna:
void OpenBuy() {
MqlTradeRequest request; MqlTradeResult result;
request.action = TRADE_ACTION_DEAL;
request.type = ORDER_TYPE_BUY;
request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
request.volume = 0.1; request.magic = 12345;
OrderSend(request, result);
}
Upewnij się również, że dodasz logikę dla zleceń sprzedaży oraz zdefiniujesz warunki, w których transakcje powinny być otwierane.
- Nieprawidłowe warunki pętli w Deriv cTrader
W Deriv cTrader logika bota musi działać wewnątrz określonych funkcji, takich jak OnBar() lub OnTick(). Są one uruchamiane automatycznie, gdy rynek się porusza. Jeśli Twój kod znajduje się poza tymi sekcjami, na przykład w niewłaściwej pętli lub w zakresie globalnym, nie będzie działał zgodnie z oczekiwaniami.
Rozwiązanie:
Upewnij się, że bary i ticki są obsługiwane wewnątrz OnBar() lub OnTick(). Dzięki temu bot będzie prawidłowo reagował na nowe ticki lub bary podczas backtestingu i handlu na żywo.
- Błędne obliczanie wielkości lota na podstawie procentu salda
Gdy AI próbuje ustawić wielkość lota na podstawie salda konta (np. ryzyko 2% na transakcję), może pominąć ważny szczegół — wielkość kontraktu. Może to prowadzić do niedokładnych wielkości lotów. Nie wywoła to błędu w kodzie, ale podczas testowania zobaczysz wielkości transakcji, które nie odpowiadają Twoim ustawieniom ryzyka, co w handlu na żywo skutkuje nadmierną lub zbyt małą ekspozycją.
Rozwiązanie:
Użyj formuły uwzględniającej wielkość kontraktu przy obliczaniu lota, na przykład:
//-----------------------------------------------------------------
double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
double riskMoney = accountBalance * (RiskPercent / 100.0);
double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double pointValue = tickValue / tickSize;
double contractSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE);
if(contractSize > 0)
pointValue = pointValue / contractSize;
double lotSize = riskMoney / (StopLossPoints * pointValue);
double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
lotSize = MathMax(lotSize, minLot);
lotSize = MathMin(lotSize, maxLot);
lotSize = MathFloor(lotSize / lotStep) * lotStep;
- Inne błędy
Jeśli napotkasz jeden z tych błędów — lub jakikolwiek inny — zawsze możesz poprosić swój model AI o pomoc w zidentyfikowaniu i naprawieniu problemu.
Po prostu skopiuj komunikat o błędzie oraz odpowiedni fragment kodu, a następnie prześlij je do modelu AI. W większości przypadków powinien on wskazać problem i zaproponować poprawkę lub możliwe rozwiązania.
Wskazówka: Zawsze uruchamiaj backtest przed przejściem na rynek na żywo. Tego typu problemy ujawniają się dopiero, gdy przetestujesz strategię na rzeczywistych danych rynkowych.
Ulepsz swojego doradcę eksperckiego wygenerowanego przez AI
Gdy bot już działa, możesz wprowadzić drobne zmiany, aby poprawić jego wydajność i stabilność. Oto kilka popularnych trików:
- Dodaj logikę obsługi błędów, aby zarządzać nieoczekiwanym zachowaniem podczas wysokiej zmienności lub problemów z połączeniem.
- Użyj trailing stop-loss, aby zabezpieczyć potencjalne zyski, gdy rynek porusza się na Twoją korzyść.
- Przetestuj strategię wstecznie (backtest) na danych historycznych, aby sprawdzić, jak wypadałaby w przeszłości.
- Uporządkuj i zorganizuj kod, aby poprawić jego czytelność i efektywność. Ułatwi to późniejszą aktualizację lub rozwiązywanie problemów.
Wskazówka: Użyj debugera MetaEditor (w MT5), aby testować działanie bota krok po kroku.
Dlaczego backtesting transakcji jest kluczowy
Boty generowane przez AI to świetny sposób na automatyzację handlu bez konieczności kodowania od zera. Ale nawet z AI Twoja strategia nadal wymaga ludzkiej weryfikacji i dostosowań, aby dobrze działać w warunkach na żywo.
Zanim przejdziesz na rynek na żywo, poświęć czas na dokładne testy i drobne ulepszenia. Nawet niewielkie poprawki mogą znacząco wpłynąć na to, jak konsekwentnie i skutecznie działa Twój EA.