Pierwszy projekt algorytmiczny nie musi handlować. Może zapisywać sygnały, pilnować limitu ekspozycji albo liczyć wielkość pozycji. Zacznij od jednej czynności, której wynik umiesz sprawdzić. Dopiero później rozważ przekazanie programowi prawa do składania zleceń.
Zdecyduj, co właściwie automatyzujesz
Automatyzacja może dotyczyć wyboru sygnału, wykonania wcześniej podjętej decyzji, zarządzania pozycją lub raportowania. To odrębne zadania. Algorytm rozkładający duże zlecenie na części nie musi przewidywać kierunku rynku; detaliczny EA może natomiast łączyć sygnał i wykonanie.
Raport BIS o algorytmach wykonawczych dotyczy głównie struktury rynku i realizacji zleceń. Opisane tam korzyści oraz ryzyka nie są dowodem rentowności robota sprzedawanego inwestorom indywidualnym. W materiałach BIS skrót EA może oznaczać execution algorithm, a w MetaTraderze Expert Advisor.
Automat wykonuje zaprogramowany proces, ale nie usuwa decyzji człowieka o danych, parametrach, limicie ryzyka i nadzorze. Może ograniczyć błędy ręcznego klikania oraz wprowadzić inne, na przykład powielanie zleceń po restarcie. Poprawność programu i jakość strategii trzeba sprawdzać oddzielnie.
Spisz regułę tak, aby dało się ją odtworzyć
Zapisz instrument, godziny działania, źródło danych, warunek wejścia, moment decyzji i sposób wyjścia. Dopisz wielkość pozycji, maksymalną ekspozycję oraz zachowanie, gdy pozycja już istnieje. „Kupuję przy dobrym wybiciu” wymaga rozwinięcia; samo użycie średniej nie usuwa niejednoznaczności.
Własny przykład specyfikacji do ćwiczenia: po zamknięciu świecy H1 porównujesz dwie średnie liczone z zakończonych świec i zapisujesz wystąpienie przecięcia. Na tym etapie program nie kupuje. Dzięki temu możesz sprawdzić, czy sygnał pojawia się raz na świecę i czy nie wykorzystuje jej późniejszego przebiegu.
Ustal także przypadki, w których nic się nie dzieje: brak historii, nieaktualne kwotowanie, zamknięta sesja lub przekroczony limit. Instrukcja „nie otwieraj nowej pozycji” jest pełnoprawną częścią algorytmu. Program nie musi handlować na każdym sygnale technicznym.
Nie myl procentu ryzyka z wielkością pozycji
„Pozycja 1% kapitału” może oznaczać nominał, depozyt albo planowaną stratę do stopa. To różne liczby. W specyfikacji określ, co liczysz, w jakiej walucie i z jakim modelem kosztów. Nie pozostawiaj tej decyzji domyślnemu wolumenowi platformy.
Własny przykład rachunkowy, bez rekomendacji poziomu ryzyka: kapitał wynosi 10 000 USD, przyjęty limit straty cenowej 0,5%, stop 25 pipsów, a wartość pipsa dla standardowego lota EUR/USD 10 USD. Limit to 50 USD. Wolumen przed kosztami wynosi 50 / (25 × 10) = 0,20 lota.
| Element | Wartość i znaczenie |
|---|---|
| Kapitał | 10 000 USD |
| Przyjęty limit | 50 USD = 0,5% kapitału |
| Strata cenowa na 1 lot | 25 pipsów × 10 USD = 250 USD |
| Wyliczony wolumen | 0,20 lota przed kosztami |
| Nominał przy kontrakcie 100 000 EUR | 20 000 EUR; nie jest to limit straty |
Po uwzględnieniu prowizji i założeń wykonania dopuszczalny wolumen może być mniejszy. Dopasuj go do kroku kontraktu bez przekraczania przyjętej granicy. Stop loss nie gwarantuje ceny przy luce, więc planowane ryzyko nie jest bezwarunkowym maksimum straty.
Wybierz najkrótszy potrzebny zestaw narzędzi
Alarm może wystarczyć do powiadomienia o warunku. EA w MQL5 pasuje do pracy wewnątrz MT5. Python może służyć do analizy danych albo komunikacji przez terminal lub API. Nie ma obowiązkowej drabiny alarm → MQL5 → Python → FIX.
Nie trzeba przepisywać każdego pomysłu do dwóch języków. Wybierz środowisko odpowiadające rachunkowi, danym i własnym umiejętnościom. MT5 obsługuje testy wieloinstrumentowe, a Python nie gwarantuje szybszego raportu w każdej konfiguracji. Różnice opisuje porównanie MQL5 i Pythona.
Standardowy alarm cenowy platformy nie rozpoznaje dowolnej wielowarunkowej strategii. Jeżeli warunek obejmuje średnie i ATR, sprawdź, czy potrzebny jest wskaźnik, skrypt lub EA. Samo wpisanie ceny w oknie Alerts nie zastępuje obliczenia sygnału.
Sprawdź program na małych, wyjaśnialnych przypadkach
Najpierw prześledź jeden sygnał, brak sygnału i zmianę świecy. Potem sprawdź restart, brak danych oraz istniejącą pozycję. W logu zapisz czas dostępności informacji, wersję reguły i powód decyzji. Nie wystarczy, że program uruchamia się bez błędu składni.
Wysyłanie zleceń dodawaj w kontrolowanym środowisku demo, z jawną identyfikacją rachunku. Żądanie i jego wykonanie to różne etapy. Po niejednoznacznej odpowiedzi sprawdź stan zleceń i pozycji przed ponowieniem. Podstawy wyjaśnia mechanika Expert Advisora.
Przy porównaniu ręcznej oceny i programu sprawdzaj te same daty oraz definicje. Różnica może wynikać z błędu kodu, innej strony kwotowania albo nieprecyzyjnej reguły. Zbliżony końcowy zysk też nie dowodzi zgodności, jeśli program wykonał zupełnie inne transakcje.
Nie składaj kwotowania z dwóch różnych chwil
Pierwszy program może błędnie policzyć spread, mimo prawidłowych pojedynczych cen. W hipotetycznym strumieniu odczyt t 1 ma Bid = 1,1000 i Ask = 1,1002, a t 2 Bid = 1,1010 i Ask = 1,1012. Oba spready wynoszą 2 pipsy przy pipie 0,0001.
Jeżeli program zachowa Ask z t 1, a następnie po zmianie rynku pobierze Bid z t 2, uzyska (1,1002 − 1,1010)/0,0001 = −8 pipsów. To kwotowanie stworzone przez mieszanie chwil, nie obserwacja ujemnego spreadu na rynku. Filtr „spread < 2,5” przepuściłby taki błędny wynik.
MQL5 udostępnia SymbolInfoTick, zwracające bieżące ceny i czas ostatniej aktualizacji w jednej strukturze MqlTick. Sprawdź powodzenie odczytu, zachowaj strukturę i obliczaj warunki z jej pól, zamiast dowolnie łączyć pamiętane wartości. Sam poprawny odczyt nie zapewnia jednak aktualnej płynności ani przyszłej ceny wykonania.
Dodaj do testu dwa szybko zmieniające się, lecz poprawne kwotowania. Porównaj wynik wspólnego odczytu z celowo pomieszanym. To sprawdza spójność wejść programu, zanim zaczniesz interpretować ujemny spread jako okazję albo problem brokera.
Dopiero potem badaj wynik ekonomiczny
Backtest powinien uwzględniać koszty, dane odpowiadające produktowi i prawidłową chronologię. Rejestruj wszystkie wypróbowane warianty. Oddziel okres rozwoju od sprawdzianu; zmiana reguły po obejrzeniu OOS wykorzystuje ten fragment do tworzenia strategii.
Skuteczność, średnia wygrana i średnia strata opisują inne aspekty niż profit factor. Ten ostatni jest stosunkiem sumy zysków do bezwzględnej sumy strat. Dla stałych wygranych 2R i strat 1R skuteczność 40% daje przed kosztami 0,2R średnio oraz profit factor około 1,33 — to arytmetyka, nie wynik zbadanej strategii.
Nie ma magicznego minimum transakcji ani reguły, że pięć parametrów zawsze tworzy fałszywy sukces. Znaczenie mają zależności, zakres warunków i liczba prób. Stosuj plan walidacji obejmujący także możliwość odrzucenia projektu.
Przed kolejną wersją zachowaj poprzedni raport i powód zmiany. Błąd w kodzie może unieważnić wcześniejszy wynik, a nowy filtr tworzy kolejny badany wariant. Nie usuwaj nieudanych prób z dokumentacji tylko dlatego, że następny wykres wygląda lepiej.
Zaplanuj utrzymanie, zanim zwiększysz zakres
Obserwacja na bieżących danych pomaga sprawdzić działanie, lecz demo nie gwarantuje identycznego wykonania live. Długość próby wynika z potrzebnych zdarzeń, nie z harmonogramu trzech czy sześciu miesięcy. Nie musisz przechodzić na prawdziwe pieniądze po osiągnięciu daty w kalendarzu.
Zapisz procedurę zatrzymania, restartu i aktualizacji. Wyłączenie lokalnego AutoTrading nie zamyka pozycji. Rozróżnij zabezpieczenie przyjęte przez serwer od reguły działającej tylko w programie. VPS również wymaga nadzoru; nie usuwa wszystkich awarii.
Policz koszty danych, hostingu, licencji i czasu utrzymania, nawet jeśli język jest bezpłatny. Dobrym zakończeniem pierwszego projektu może być wiarygodny dziennik sygnałów. Dalszy rozwój powinien wynikać ze sprawdzonych potrzeb, a nie z obietnicy dochodu bez pracy.
Sprawdź, czy rozumiesz
Jedno krótkie ćwiczenie
Przy limicie 50 USD, stopie 25 pipsów i wartości 10 USD/pips na lot jaki wolumen wynika z samego ryzyka cenowego?
Sprawdź odpowiedź
50 / (25 × 10) = 0,20 lota przed kosztami. Trzeba jeszcze uwzględnić warunki kontraktu i wykonania; stop nie gwarantuje maksymalnej straty przy luce.
