Forex/ya_ScalperRB

Z Rainsted
Skocz do: nawigacji, wyszukiwania

Kod robota autorstwa René Balke został opublikowany w październiku 2022 pod filmem na YouTube (kod: o7ZG8SvzBDw). Kod przeznaczony dla MT5 dostosowałem następnie do MT4 (opracowując moduł częściowej zgodności z CTrade) i dodałem własną obsługę SL. Na koniec roku 2023 uzyskiwany zysk teoretyczny stanowił motywację do dalszej pracy nad bardziej zaawansowanymi robotami. Poniższa strona nie opisuje pierwotnego rozwiązania, tylko dalszy rozwój nim zainspirowany.

Z uwagi na krótki czas (5 minut) przestawienia pierwotnego TP na poziom ewakuacyjny, robot ma bardzo dużo zyskownych pozycji, jednak w większości zyski te są bardzo małe. Jednocześnie mechanizm ten znacznie zaburza ocenę efektywności (bo takie pozycje powinny być ignorowane). Dlatego traktuję tego robota jako odniesienie do porównania z innymi robotami, bo mimo swej ułomności, potrafi zrobić konsekwentny zysk.

Podstawy merytoryczne

Film: Easy Scalping Strategy For EURUSD | Free MT5 Expert Advisor Coding

Główna koncepcja polega na wybiciu konsolidacji. Robot wyszukuje szczyty i dołki w danych historycznych i ustawia pozycje STOP na ich wybicie.

Parametry

Z uwagi na symulowanie ticków w MT4 (na podstawie OHLC i liczby zmian, również dane M1 służą do symulowania ruchów wewnątrz M15), wyniki na danych historycznych mogą nie być wiarygodne (np. pozycja z ciasnym SL nie zostaje zamknięta ze stratą, co może wynikać z własności tejże symulacji). MT5 pozwala testować na danych tickowych i tam wychodziły zyski dla pierwotnego rozwiązania. Planowane jest uruchomienie w MT4 symulacji danych tickowych dla wybranych świeczek (kolejne wartości Bid i Ask pobierane z pliku zamiast symulowanych przez algorytmy MT4), co powinno poprawić wiarygodność testów, jednak funkcjonalność ta ma niski priorytet i może się okazać zbędna, jeśli prace zostałyby przeniesione na MT5.

Główne parametry:

  • okres: M15, M30, H1 — dla każdego okresu pozostałe parametry mogą mieć inne wartości optymalne
  • po ilu minutach na BE — jeśli pozycja nie wyszła ze straty we wskazanym czasie od otwarcia, będzie miała przestawiony TP na BE (cena otwarcia plus potrójny spread)
  • punkty TP i SL
  • liczba świeczek do sprawdzania wstecz — z optymalizacji M30 wyszło 360
  • po jakim czasie wyłączyć pozycje STOP — z optymalizacji M30 wyszło 21h

Parametry rynku

Parametry te są zasadniczo wspólne dla wszystkich robotów.

  • Godziny otwarcia i zamknięcia rynku (plus dodatkowe godziny przed otwarciem i przed zamknięciem, tu nieistotne).
  • Czy świeczki tylko z godzin otwarcia — nieużywane w wersji 248.290, ewentualnie ma umożliwić ignorowanie świeczek nocnych (jednocześnie blokować otwieranie pozycji).
  • Czy ograniczyć pozycje do godzin otwarcia — nieużywane w wersji 248.290, ewentualnie ma zablokować otwieranie pozycji w nocy.
  • Strefa czasowa brokera (1 — Polska, 2 — Cypr).
  • Wirtualna północ (2 — Cypr, 3 — zamknięcie w USA) dla wirtualnej doby.
  • Tablica otwarć — 48 znaków dla poszczególnych okresów M30 wirtualnej doby: "1" można otwierać pozycje, "0" nie otwierać.

Dalszy rozwój

Przymierzam się do ponownej analizy działania robota po dopracowaniu koncepcji OVT. W planach jest sprawdzenie, czy koncepcje OVT mogą poprawić zysk z pozycji albo udział zyskownych pozycji.

Zmiany do przemyślenia:

  • Jednoczesna analiza M15, M30 oraz H1.
  • Uwzględnienie wszystkich kosztów pozycji przy przesuwaniu SL. Obecnie liczenie jest w punktach względem ceny otwarcia, co nie uwzględnia np. prowizji (i swapu raczej też nie). Korekta ceny otwarcia o dodatkowe koszty wymaga również przeliczenia walut, zwłaszcza jeśli konto nie jest prowadzone w USD.
  • Naprawienie powtórnego otwierania zlecenia oczekującego (nie wykrywa?). Otwarcie kolejnej pozycji może również wynikać z nieznacznej różnicy pomiędzy znalezionymi szczytami/dołkami.
  • Użycie obiektu TPozycje do obsługi SL — tam powinno być zrobione wyliczanie ceny odniesienia (z uwzględnieniem kosztów). Obecnie obiekt TPozycje jest używany pośrednio jako emulacja CTrade z MT5 — docelowo roboty mają działać na strukturach pośrednich, aby algorytmy były niezależne od platformy — użycie CTrade powinno być traktowane jako prowizorka do wyeliminowania później.

Testy

Wersja 248.290

Dodana obsługa wirtualnej doby (do statystyk), jednak bez dopracowania. W stanie na listopad 2024 robot otwiera więcej pozycji i z większą zyskownością niż pozostałe (licząc od 2019), jednak wyniki na danych 2024 roku są słabsze niż we wcześniejszych latach. Generuje ponad 80% zyskownych pozycji, jednak większość z nich jest zamykana nieco powyżej ceny otwarcia, ponieważ nie mają zysku w zadanym czasie (5 minut).

  • EURUSD, M15: średnio 400 pozycji rocznie (ponad 1.5 dziennie), wskaźnik zysku 2.5. Jednak od marca 2024 przynosi straty (do listopada zniwelował zysk wypracowany na początku 2024).
  • EURUSD, M30: 200 pozycji rocznie, od 2019 wskaźnik zysku około 5, od maja 2024 zmniejszona efektywność (wskaźnik zysku 2.6).
  • EURUSD, H1: 160 pozycji rocznie, od 2019 wskaźnik zysku 3.6, w 2024 wskaźnik zysku 2.25 (czyli nieco lepiej niż 1:1).
  • Uruchomiony na żywo na EURUSD/M30 (konto demo) robi duże straty i małe zyski, ponieważ przy podciąganiu SL nie uwzględnia kwoty prowizji. Należałoby przerobić algorytm SL tak, by zostały uwzględnione wszystkie koszty.

Robot Podstrony Dodatkowe informacje
2301 ya_ScalperRB Zmiany Wybijanie poprzednich szczytów i dołków (RB).
2302 ya_Wybijacz Zmiany Pozycje STOP na zewnątrz ruchu we wskazanych godzinach (Orchard).
2403 ya_FAB4 Zmiany Rozgrywanie otwarcia indeksów giełdowych (OVT).
2405 ya_SwingOVT1 Zmiany Równoległość średnich na S&P500/D1 (OVT).
2406 ya_Wieloryb1 Zmiany Wybicia ze SMA200 — przykłady EURUSD/M15 (OVT).
2507 ya_Wieloryb4 Zmiany Wybicia ze SMA200 — przykłady EURUSD/H4 oraz USDJPY/H1 (OVT).
2508 ya_LK2410 Zmiany Rozgrywanie z podziałem na sesje Azja/Londyn/NY (LK).
Wskaźnik Podstrony Dodatkowe informacje
ya_M2OVT Wyliczanie średnich dla M2 całodobowych i sesyjnych (OVT).
ya_D1OVT Wyliczanie średnich sesyjnych z łączeniem świeczek M30 — S&P500/D1 (OVT).
ya_H4OVT Wyliczanie średnich dla H4 z łączonych świeczek H1 i ustawianej północy (OVT).
ya_Audytor Przewijanie wykresu wg listy wygenerowanej przez robota (własny).
ya_CandlesM2 Prostokąty obrazujące świece M2 na wykresie M1 (OVT).
ya_Kalibrator Przetwarzanie plików CSV (własny).