Sufiksy symboli i inne nazwy instrumentów: pułapka w kodzie bota
W skrócie: u jednych brokerów złoto to XAUUSD, u innych GOLD, a do nazwy dochodzi często końcówka: kropka z literą, “m”, “pro”, kreska. Bot, który zakłada konkretną nazwę, u innego brokera w najlepszym razie nie wystartuje, w najgorszym zacznie handlować innym instrumentem, niż myślisz. Nazwy sprawdzam przed pierwszym uruchomieniem, a w kodzie ich nie wpisuję na sztywno.
Skąd się biorą sufiksy
Broker prowadzi często kilka rodzajów kont na tych samych serwerach: standardowe, z prowizją (raw), centowe, z innym rodzajem wykonania. Rozróżnia je właśnie końcówką nazwy. Zwykły EURUSD może więc mieć obok EURUSD.r albo EURUSDm, a każdy z tych symboli ma własną specyfikację: inny spread, czasem inny minimalny lot albo rozmiar kontraktu. Do tego dochodzą różnice nazewnictwa samych instrumentów, o których pisałem przy Nasdaq i Dow. Ten sam indeks bywa U30, US30, DJ30 albo WS30. Przykłady nazw podaję jako ilustrację, każdy broker ma własne.
Gdzie nazwa symbolu psuje bota
- Nazwa wpisana w kodzie albo filtr “tylko ten symbol”. Bot kończy działanie z komunikatem o niewłaściwym symbolu albo po cichu nie ma czego handlować. Objaw wygląda jak jedna z przyczyn z artykułu o bocie, który nie otwiera pozycji.
- Symbol z wykresu a symbol w ustawieniach. Jeśli bot ma input z nazwą drugiego symbolu (na przykład do korelacji albo do kalendarza), ten input zostaje ze starego brokera, a symbol nie istnieje na nowym.
- Dopasowanie po fragmencie nazwy. Kod, który szuka w nazwie ciągu “GOLD” albo “XAU”, złapie też symbole, których nie miał na myśli, na przykład z innej rodziny kontraktów.
- Zapisane dane po nazwie. Pliki z historią, zmienne globalne i pliki stanu klucza po nazwie symbolu mają osobne wpisy dla XAUUSD i XAUUSD.r. Zmiana nazwy po aktualizacji oznacza, że bot “zapomina” stan.
- Test i produkcja na różnych symbolach. Wynik z Testera na symbolu bez sufiksu u brokera A nie dotyczy symbolu z sufiksem u brokera B, nawet jeśli oba mają ten sam kształt wykresu.
Jak się zabezpieczam
- Bot używa symbolu wykresu, a nie nazwy wpisanej w kodzie. Symbol dodatkowy podaje przez input, bez wartości domyślnej zakładającej konkretnego brokera.
- Przy starcie sprawdzam, czy symbol istnieje i jest widoczny w Obserwacji rynku. Jeśli nie, bot zgłasza to w dzienniku i nie handluje, zamiast pracować na pustych danych.
- Po zmianie brokera przechodzę przez specyfikację symbolu. Kontrakt, tick, minimalny lot i godziny są u nowego symbolu inne, co opisuje artykuł o specyfikacji symbolu.
- Wynik testu zapisuję razem z pełną nazwą symbolu i serwerem. Bez tego nie wiadomo, czego dotyczy.
- Przy kilku symbolach w jednym bocie trzymam mapę nazw w jednym miejscu, żeby zmiana brokera oznaczała jedną poprawkę.
[DO UZUPEŁNIENIA: własny przypadek, w którym bot nie wystartował albo zaczął działać inaczej po zmianie nazwy symbolu]
Checklista
- Znam dokładną nazwę symbolu na koncie, na którym bot ma pracować.
- W kodzie i inputach nie ma nazwy symbolu zakładającej jednego brokera.
- Symbol jest widoczny w Obserwacji rynku i ma dane historyczne.
- Specyfikacja nowego symbolu sprawdzona (kontrakt, tick, lot).
- W zapisie wyniku testu jest pełna nazwa symbolu i serwer.
Powiązane
- Specyfikacja symbolu: co sprawdzić przed uruchomieniem bota
- Ten sam bot u trzech brokerów
- Nasdaq i Dow w MT5: nazwy symboli
- Słowniczek: sufiks symbolu; skorowidz: skorowidz
Ostrzeżenie: nazwy w tekście to przykłady, nie lista brokerów. Handel CFD wiąże się z wysokim ryzykiem utraty kapitału; to nie jest porada inwestycyjna.