Aktualizacja bota bez utraty ustawień
W skrócie: ustawienia działającego bota leżą w pliku wykresu, nie w pliku bota. Podmiana wersji .ex5 zwykle ich nie rusza,
ale zmiana nazwy lub typu inputu cicho przywraca wartość domyślną, także dla ryzyka. Dlatego przed każdą aktualizacją robię kopię
wykresu, po niej porównuję ustawienia z wzorcem i sprawdzam wersję w logu.
Gdzie naprawdę są ustawienia
Bot na wykresie ma trzy miejsca, w których siedzą jego wartości:
- plik
.ex5(kod, tu są tylko wartości domyślne), - plik wykresu
.chrw profilu terminala (tu są wartości z chwili, gdy bota wrzuciłem na wykres), - plik
.set(kopia ustawień, z której wczytuję wartości ręcznie).
Pracujący bot czyta wykres, nie .set. Zmiana pliku .set nic mu nie robi, dopóki nie wczytam go ręcznie na wykres.
Odwrotnie też: nowy .ex5 nie zna mojego .set, więc o wartościach decyduje to, co zostało zapisane w wykresie.
Co psuje ustawienia po cichu
Najczęstsza pułapka to zmiana nazwy inputu. Nowa wersja ma pole o innej nazwie, wykres go nie zna i terminal wstawia wartość
domyślną z kodu. Nikt tego nie ogłasza, w oknie wejść nic się nie zmienia, a bot dostaje inne ryzyko albo wyłączony filtr.
Przy zmianie nazwy ryzyka musiałem przepisać wartości zarówno w wykresach, jak i w plikach .set. Tak samo działa zmiana
typu (liczba zamiast tekstu) i przestawienie kolejności pozycji na liście wyboru.
Druga pułapka: edycja pliku wykresu na działającym terminalu. Terminal zapisze swoją wersję przy zamknięciu i mój wpis przepadnie. Pliki wykresów zmieniam tylko wtedy, gdy terminal jest zamknięty, a zamknięcie sprawdzam w logu (wpis o zamknięciu), nie na oko.
Jak aktualizuję jeden terminal
- Zamykam terminal (albo, na teście, wiem że nic nie zapisze wykresu).
- Kopiuję stare
.ex5i pliki wykresów do osobnego folderu z datą. Niczego nie kasuję, kopie wędrują do kosza dopiero po kilku dniach. - Wgrywam nowe
.ex5i liczę sumę kontrolną kopii z repo i z terminala. Zgadza się albo nie wchodzę dalej. - Jeżeli nowa wersja zmieniła nazwy lub typy inputów, przepisuję je w wykresach. Wartości ryzyka bierze się z wykresu, nie z
.set, bo to wykres jest prawdą o tym, co bot robi. - Uruchamiam terminal i szukam w zakładce Eksperci wpisu o starcie bota z numerem wersji. Brak wpisu albo stara wersja oznacza, że podmiana nie zadziałała.
- Porównuję wartości z wykresów z wzorcowym
.set(ryzyko, saldo początkowe, godziny zamknięcia). Rozjazd to sygnał, że coś wróciło do domyślnych.
Wiele terminali i wiele botów
Nowa wersja bota idzie na wszystkie terminale, na których on pracuje, razem z .set i kopią wykresu. Połowiczne wdrożenie jest gorsze
niż żadne: jedno konto działa na starej wersji, drugie na nowej, a porównanie wyników traci sens. Terminale produkcyjne zamykam i startuję
w jednym oknie czasowym (u mnie niedziela, rynek zamknięty, bez testów), według stałej listy etapów. Szczegóły tej procedury są
w artykule o niedzielnej aktualizacji floty.
Wersję bota podbijam przy każdej edycji kodu. Dzięki temu w logu od razu widać, co chodzi na koncie, i nie muszę zgadywać po dacie pliku.
Checklista
- Kopia starego
.ex5i wykresów z datą, nic nie skasowane. - Terminal zamknięty (potwierdzone w logu) przed edycją wykresu.
- Suma kontrolna
.ex5zgadza się z repozytorium. - Sprawdzone, czy nowa wersja zmieniła nazwy lub typy inputów.
- Po starcie w logu jest wpis z numerem nowej wersji.
- Ryzyko, saldo początkowe i godzina zamknięcia na wykresie zgodne ze wzorcem.
- Ta sama wersja na każdym terminalu z tym botem.
[DO UZUPEŁNIENIA: własny przypadek, w którym po aktualizacji coś wróciło do wartości domyślnych, i co to było]
Powiązane
- Wersjonowanie EA i changelog
- Niedzielna aktualizacja floty terminali
- Zmienne globalne giną przy utracie zasilania
- Słowniczek, skorowidz
Ostrzeżenie: artykuł opisuje moją praktykę, nie poradę inwestycyjną. Aktualizacja bota na koncie z prawdziwymi pieniędzmi to zmiana kodu, który otwiera pozycje. Pierwszy start nowej wersji obserwuj, najlepiej na demo.