Forex/ya_SwingOVT1/Zmiany
Spis treści
- 1 Warunki testowe
- 2 Zmiany w kolejnych wersjach
- 2.1 Wersja 259.271
- 2.2 Wersja 259.210
- 2.3 Wersja 259.160
- 2.4 Wersja 249.040
- 2.5 Wersja 249.010
- 2.6 Wersja 248.260 (H4@USDJPY)
- 2.7 Wersja 248.213
- 2.8 Wersja 248.210 (H1@USDJPY)
- 2.9 Wersja 248.183 (H1@USDJPY)
- 2.10 Wersja 248.180
- 2.11 Wersja 248.047
- 2.12 Wersja 248.041
- 2.13 Wersja 247.315
- 2.14 Wersja 247.314
- 2.15 Wersja 247.312
- 2.16 Wersja 247.310
- 2.17 Wersja 247.306
- 2.18 Wersja 247.305
- 2.19 Wersja 247.304
- 2.20 Wersja 247.303
- 2.21 Wersja 247.302
- 2.22 Wersja 247.301
- 2.23 Wersja 247.290
- 2.24 Wersja 247.281
- 2.25 Wersja 247.271
- 2.26 Wersja 247.183
- 2.27 Wersja 247.181
- 2.28 Wersja 247.172
- 2.29 Wersja 247.170
- 2.30 Wersja 247.161
- 2.31 Wersja 247.160
- 2.32 Wersja 247.152
- 2.33 Wersja 246.245
- 2.34 Wersja 246.214
Warunki testowe
S&P500, D1 sesyjne
Głównym przedziałem czasu do testów, jest przestawiony w filmie wykres S&P500 od października 2023 do kwietnia 2024. Zakres ten jest używany do uruchomienia i weryfikacji działania poszczególnych scenariuszy oraz funkcjonalności. Wykorzystana jest opcja robota uwzględniania tylko świeczek pomiędzy wskazanymi godzinami — domyślnie od 15:30 do 22:00 czasu polskiego, z uwzględnieniem tygodni w marcu i październiku, kiedy występuje przesunięcie w zmianie czasu na letni pomiędzy Europą a USA. Uwzględniane są również skrócone godziny działania giełdy. Od połowy 2019 do połowy 2024 robot otwiera od 7 do 70 pozycji (zależnie od ustawień) i od 60% do 90% z nich jest zyskownych — procenty te się zmniejszają wraz ze zwiększeniem liczby otwieranych pozycji. Porównaniem jest zysk około $13800 dla 0.1 lota (wartość zawyżona, bo nie uwzględnia rolowań) z pozycji BUY otwartej w kwietniu 2019 — robot, grający w obie strony, uzyskuje obecnie od 110% do 125% tej kwoty — ale również nie traci w lutym i marcu 2020, kiedy pozycja BUY byłaby na stracie przekraczającej $3200.
Ponieważ zarządzanie kapitałem nie jest celem tego robota, więc nie jest planowane zwiększanie pozycji w miarę zwiększania kapitału. Ewentualnie jako opcja może być wprowadzony podział pozycji na dwie połowy, z których jedna będzie realizacją zysku w momencie przestawienia SL drugiej na BE.
USDJPY, H1 całodobowo
Jednym z pokazanych przykładów jest wykres USDJPY od marca 2024, kiedy następuje wybicie w dół stanu wąskiego. Wybicie takie jest rozpoznawane jako scenariusz 5. Niemniej robot uruchomiony na H1 na dowolnej parze walut nie uzyskuje takiego wskaźnika zysku, jak dla indeksów amerykańskich giełd (ponad 10). Może to wynikać z niewykrytych jeszcze błędów działania albo z ograniczonej efektywności strategii.
EURUSD, M15 całodobowo
Na początku września 2024, w osobnym filmie podane przykłady otwarcia pozycji wg scenariusza 5 i następnie wg scenariusza 1, w czerwcu, lipcu i sierpniu 2024. Ponieważ użyte zostało raczej SMA30 niż SMA20, algorytm został przeniesiony do osobnego robota pochodnego — ya_Wieloryb1.
EURUSD, H4 całodobowo
Na początku września 2024, w osobnym filmie podane przykłady otwarcia pozycji wg scenariusza 5 i następnie wg scenariusza 1 — sierpień 2024. Przykłady te stanowią bazę do testów osobnego robota pochodnego — ya_Wieloryb4.
Zmiany w kolejnych wersjach
Opis zmian w najnowszych wersjach jest u góry. Jeśli nie podano inaczej, otwierane są pozycje o rozmiarze 0.1 lota (wielkość kontraktu: 50), aby porównać efektywność otwierania pozycji. Zarządzanie kapitałem może być następnie dodane jako zupełnie niezależny algorytm (w tym dobieranie rozmiaru pozycji do rozmiaru pierwotnego SL). Jeśli nie podano inaczej, wyniki dotyczą S&P500 na świeczkach dziennych w czasie sesji USA.
Wersja 259.271
- Dodany moduł Audytor. Wraz z listą zakresu dat otwarcia pozycji (póki co dla US500) pozwala efektywniej sprawdzić pochylenia średnich w przedziałach zainteresowania.
- W scenariuszu 1 dodany został wymóg, aby SMA40 miała przynajmniej 50% pochylenia SMA20. Ograniczyło to straty na dwóch najbardziej stratnych pozycjach w 2019 i 2020. Być może warunek ten trzeba będzie zmodyfikować na osiąganie minimalnego pochylenia na obu średnich (wstępne testy nie dały lepszego rozwiązania). Dotychczas brak pochylenia na średnich przełączał na stan wąski, natomiast nie był powiązany z zezwoleniem na otwarcie pozycji.
- W scenariuszu 7 dodany wymóg, że świeczka wybijająca formację musi przekroczyć 5 poprzednich świec. Warunek ten jest zgodny z wytycznymi algorytmu, a wcześniej był pominięty (jednak niektóre zyskowne wcześniej pozycje nie są teraz otwierane). Wraz z korektą początkowego SL na bardziej odległą z wartości SMA20 i HL świeczki podniosło to zysk do +$9965, a wskaźnik zysku jest prawie 15.
- Obecnie w okresie kontrolnym jest 6 stratnych pozycji na 39 wszystkich, dwie są zamykane na zero (z powodu braku kontynuacji przekroczenia straty ostrożnościowej). Jedna stratna ma nieprawidłowo przestawiany SL na zysku, jedna ma nieprawidłowy czas otwarcia, dwie nie mają kontynuacji (brak przesłanek do uniknięcia straty), dla jednej poprzednie odbicie nie osiągnęło niższego dołka względem wcześniejszego, jedna ma nieprawidłowo rozpoznane odbicie.
- Jest dużo potencjalnie zyskownych pozycji, które zostały odfiltrowane w celu uniknięcia najbardziej stratnych. Ponieważ większość stratnych pozycji jest już wyeliminowana, poszukiwane będą dodatkowe warunki, typu brak kontynuacji dużych świeczek potencjalnie kończących jazdę szynową (np. spadkowych — nie wszystkie mają kontynuację w postaci kolejnej świecy i w takim przypadku jazda szynowa jest kontynuowana). Sprawdzane będą też rozmiary i położenia luk otwarcia, które najczęściej sygnalizują zakończenie jazdy szynowej (zaburzenie następstwa świeczek).
- Dodana możliwość otwierania pozycji o wielkości określonej procentem dostępnego kapitału — należy wpisać zerową wartość lota oraz procent ryzyka i maksymalną liczbę lotów (50 kontraktów na lot — to raczej będzie zmienione w przyszłości). Opcja ta służy do porównywania z innymi robotami, które rozgrywają z SL początkowym określonym jako procent kapitału.
- Ustawianie godzin sesji zostało uproszczone — zamiast podawania godzin bezpośrednio, można wybrać typ sesji wg nazwy z listy typu ENUM. Liczby przypisane poszczególnym sesjom zawierają standardowe godziny rozpoczęcia i zakończenia w UTC, jest więc to czytelne w plikach SET.
Wersja 259.210
Po naprawieniu błędów w działaniu ringu liczącego średnie oraz wstępnej synchronizacji zmian z robotami typu Wieloryb, robot osiąga w okresie referencyjnym +$8100, natomiast przez kolejny rok +$3800 przy zachowaniu wskaźnika zysku około 4 w obu przypadkach. Wersja sprzed roku (249.292) osiągała w okresie referencyjnym +$12000 ze wskaźnikiem zysku około 10, natomiast przez kolejny rok nie zrobiła istotnego zysku.
Plan na najbliższy czas to przegląd algorytmów otwierania pozycji wraz z początkowym SL, dodanie modułu Audytora (usprawnienie weryfikacji otwieranych pozycji pomiędzy kolejnymi wersjami) i rozpisanie oczekiwanych reakcji robota w poszczególnych dniach (otwieranie pozycji, przestawianie SL, przestawianie TP, zamykanie) dla US500, US100, US30, DE40, PL20 i JP255.
Wersja 259.160
Po uruchomieniu i przetestowaniu robotów typu Wieloryb, rozgrywających waluty na H1 i H4, robot SwingOVT1 nie był odpowiednio aktualizowany i testowany (używają tych samych modułów kodu). Obecna wersja od 2019-01 do 2024-09 wypracowuje zysk $2940 przy wskaźniku zysku 2.1, co jest dużym pogorszeniem efektywności. Lekka optymalizacja parametrów przesunęła wyniki w stronę zysku $5000 przy wskaźniku zysku powyżej 3. W najbliższym czasie będzie sprawdzane, w jaki sposób zmiany potrzebne do robotów typu Wieloryb wpłynęły na działanie SwingOVT1.
Istotne zmiany działania modułów kodu:
- Wartość rolowania jest dzielona na dni pomiędzy rolowaniami i raz dziennie korygowane są średnie, ma to wpływ na położenie średnich oraz ich pochylenie, co jest powiązane ze skrajnymi wartościami podawanymi w parametrach. Zmiana obsługi rolowań wyniknęła z kalibracji danymi sesyjnymi D1 na US30.
- Godziny sesji podawane są obecnie w UTC dla czasu zimowego, tryb zmiany czasu na letni ustala się osobno dla rynku oraz dla brokera, różnica jest wyliczana (nie wybiera się różnicy w ustawieniach).
- Uzupełniona została tablica świąt i skróconych sesji dla rynków USA.
- Zmieniony sposób określania typu świeczki wg długości knotów oraz obliczania rozmiaru średniej świecy.
Efekty testów na platformach różnych brokerów:
- Dopracowane pobieranie strefy czasowej i trybu zmiany czasu ze zmiennych globalnych terminala — brak potrzeby ręcznego dostosowania ustawień w parametrach robota.
- Zbliżone działanie robota na wykresie z rolowaniami i bez.
- Wyliczenie rozmiaru pozycji z uwzględnieniem wielkości kontraktu (50 vs 1), aby wyniki w dolarach były porównywalne.
Wersja 249.040
Dodane wykrywanie pochylenia średnich bez osiągania stanu wąskiego, poprzez regresję liniową wartości średnich z ostatnich 10 świeczek. Waga uśredniania rozmiaru świeczek zmieniona z 1% na 2% dla dodawanej świecy. Suma zysków w okresie kontrolnym to +$15500 przy sumie strat -$1360 (w porównaniu do wcześniejszych wersji nie został uwzględniony potencjalny zysk około $2000 na pozycji SELL otwieranej w marcu 2020).
Wersja 249.010
Przywrócone działanie na S&P500 z zachowaniem dotychczasowych funkcjonalności (ustawienie wirtualnej doby, obsługa świeczek krótszych niż D1, ustalanie średniego rozmiaru świecy z wagą 1%). Osiągnięty zysk +$14100 przy sumie strat -$1430 — jest to punkt wyjścia do dodania funkcjonalności, takich jak wyznaczanie TP (dotychczasowe jest niepoprawne), zmiana kierunku trendu bez stanu wąskiego oraz odbicie od SMA200.
Wersja 248.260 (H4@USDJPY)
Wersja dostosowana do obsługi świeczek H4 z możliwością ustawienia wirtualnej północy (wstępnie łączone są świeczki M30). Rezultaty działania nie są warte odnotowania, dużo większy zysk można osiągnąć z H1. Wprowadzone zmiany otwierają możliwość przeprowadzenia testów na innych okresach wielogodzinnych, np. H2, H3.
Wersja 248.213
Wyrównane kwestie ustalania średnich świeczek: dla świeczek, których rozmiar OC przekracza 50% dotychczasowej miary, dodawany jest on do dotychczasowego pomiaru z wagą 1% (wcześniejsza waga nowej świecy to 10%). Jednocześnie rozmiar znaczącej świecy został ustalony na 250% średniego rozmiaru (wcześniej 150%, ale dla USDJPY bardziej pasowało 280%). Poprawia to wyniki testów (również na USDJPY). Zysk sięga +$17000 przy sumie strat -$2400. Zwiększyła się liczba i suma stratnych pozycji, jednak nie były analizowane możliwości ich ograniczenia (do przerobienia nadal jest algorytm ustalania TP). Wyłączony został jeden z algorytmów asymetrii (nieprzekraczanie poziomów), ponieważ przestał poprawiać wynik (w przypadku USDJPY lepsze wyniki są, gdy jest włączony dla obu kierunków). Uruchomiony scenariusz 5 nie uzyskuje warunków otwarcia pozycji (świeczki D1 nie oscylują wokół SMA200 ze znaczącym wybiciem). Zmieniony też został warunek wyjścia ze stanu wąskiego w sposób inny niż wybicie (tzn. gdy istotny ruch z przeszłości przestaje być wliczany do średniej arytmetycznej) — obecnie parametry muszą przekroczyć 150% wartości warunkujących wejście w stan wąski.
Wersja 248.210 (H1@USDJPY)
Uruchomiony scenariusz 5 (wybicie dużą świecą stanu wąskiego zawierającego SMA200). Wymagał osobnego algorytmu do przestawiania SL, ponieważ zmniejszone świeczki w stanie wąskim zaniżały rozmiar rozpoznawania świeczek dużych i następnie po wybiciu stanu wąskiego prawie każda świeczka była uważana za dużą. Docelowo musi być zmieniony algorytm rozpoznawania dużych świeczek aby dni z niewielkim ruchem (na H1) nie zaburzały percepcji — być może świeczki trzeba uśredniać w ramach dnia i następnie tygodnia. Scenariusz 5, mimo niewielu pozycji, potrafi dać zyski rzędu 50% zysków wypracowanych w scenariuszach 1 oraz 2 (z osobna).
Wersja 248.183 (H1@USDJPY)
Wersja dostosowana do użycia na H1. Wyłączone zostały ograniczniki potrzebne do wydzielania świeczek M30 w czasie sesji giełdowej. Na testach od 2019 do 2024 scenariusze 1 i 2 dają nierównomierny zysk, z długimi okresami równoważenia zysków i start. Scenariusze 3 i 7 nie poprawiają wyniku, wychodzą w najlepszym razie na zero, chociaż niektóre pozycje wyglądają obiecująco. Dwie z trzech asymetrii zostały przerobione na konfigurowalne, ale ich ustawienie nie ma istotnego wpływu na wynik. Trzecia asymetria dotyczy liczby punktów używanych dla regresji linii przechodzącej przez maksymalne odchylenia od średnich, jest to obecnie używane jako TP, natomiast powinno być użyte do badania równoległości do SMA20 i SMA40.
Wersja 248.180
Wersja przystosowana do otwierania pozycji przed zakończeniem świecy dziennej. Urealnia to trochę testy dla założenia, że pozycje powinny być otwierane w czasie sesji — chociaż nadal SL/TP może się wykonać w przerwie nocnej. Z testów wynikło, że warunki wybicia stanu wąskiego powinny bazować na pełnych świecach, natomiast samo otwieranie pozycji może być w oparciu o niepełną świecę. Zysk się nieznacznie zmniejszył, do +15700, przy sumie strat -$1400. Kolejne optymalizacje algorytmu będą wykonywane z uwzględnieniem otwierania pozycji pod koniec świecy dziennej.
Wersja 248.047
Poprawione warunki otwierania pozycji na odbiciu od SMA40. Sprawdzany jest rozmiar świecy, który neguje 5 poprzednich i jedynie duże świece są traktowane w specjalny sposób. Sprawdzanie przebicia poprzedniej wartości połączone zostało z wcześniejszym algorytmem, blokującym ponowne otwarcia na odbiciu od SMA40. Uzyskane są dwie opcje, jedna to zysk +$17400 przy sumie strat sięgającej około -$2000, a druga to zysk +$16500 przy sumie strat -$925.
Wersja 248.041
Dodana została wstępna analiza struktury rynku. Po przebiciu SMA20 i przekroczeniu dozwolonego czasu na powrót, uruchamiany jest algorytm wykrywający odbicia od SMA40. Obecnie dodatkowo zapamiętywany jest ostatni szczyt przed przecięciem SMA20 i odbicie od SMA40 musi dać wyższy szczyt niż ten poprzedni. Jeśli wyższy szczyt nie został osiągnięty, drugie odbicie od SMA40 nie otworzy pozycji BUY. Analogiczny mechanizm został wprowadzony również dla pozycji SELL, jednak nie wprowadza żadnych zmian (prawdopodobnie ze względu na asymetrię rynku i znacznie mniejszą liczbę pozycji SELL). Osiągnięty zysk to +$14800 przy sumie strat -$975 (42 pozycje długie i 6 krótkich, łącznie zyskownych jest 36 pozycji na 48 otwieranych). Rozwiązanie takie nie jest przestawione jawnie w filmie, wynika z założenia, że dla ciągłości trendu każde odbicie od wsparcia powinno dawać wyższy szczyt, a szczególnie odbicie od SMA40. Oprócz nieotwierania pozycji, która dotychczas generowała największą stratę, nie są otwierane pozycje, które były zamykane na zero, gdy świeczka zamknęła się poniżej SMA40. Również kilka zyskownych wcześniej pozycji nie jest otwierane, co będzie jeszcze analizowane.
Wersja 247.315
Wstępny SL dla scenariusza 7 został przemieszczony ze skrajnej wartości ostatnich pięciu świeczek na średnią z tej wartości oraz zamknięcia świecy wyzwalającej scenariusz. Poprawiło to zysk do +$16500 przy sumie strat -$1750. Zmniejszyły się straty na kilku stratnych pozycjach kosztem nieotwarcia jednej ewentualnie zyskownej (w początkowym obszarze danych testowych, gdzie algorytm nie działa w pełni poprawnie z powodu ograniczonych możliwości liczenia średnich — nie wiadomo, czy ten początkowy zakres danych byłby uznany za nowy stan wąski, czy za kontynuację rozpoczętego w styczniu 2019). Planowane jest przetestowanie na wcześniejszych danych (pobranych jako M30 ze względu na godziny otwarcia giełdy), jednak na razie nie będzie to realizowane ze względu na możliwość porównywania wyników.
Wersja 247.314
Ignorowanie świeczek zostało przełączone z powrotem na poziom 50% dotychczasowej wartości średniego rozmiaru korpusu, co nieznacznie poprawiło zysk i zmniejszyło straty, będzie to jeszcze analizowane dalej. Przetestowana została opcja regresji dla TP z dwóch ostatnich dołków (zamiast trzech) i zysk na pozycjach krótkich zwiększył się, łącznie osiągając +$16200 przy sumie strat -$2125. Jest to trzecia już asymetria, więc prawdopodobnie robot będzie zawierał osobny blok ustawień dla asymetrii (domyślnie osobne warunki dla BUY i SELL, z opcją wyboru jednego algorytmu dla obu kierunków, a także zamiany warunków — w przypadku par walut asymetrie mogą nie być przydatne i trzeba będzie wybrać korzystniejszy zestaw warunków na podstawie optymalizacji).
Wersja 247.312
Ustawianie TP jest wykonywane przy każdej świeczce, o ile tylko da się wyliczyć TP z regresji liniowej. Zwiększyło to nieznacznie zysk i zmniejszyło straty, ale również obcięło kilka pozycji, które wcześniej uzyskiwały znacznie większy zysk. Druga zmiana jest związana z oceną wielkości korpusów świeczek: pomijane jako nieistotne są świeczki, których korpus jest mniejszy niż 40% uzyskanego wcześniej średniego rozmiaru. Jednocześnie, zmieniony został warunek rozmiaru świecy uznawanej za większą od średniej: próg został obniżony z 200% do 150% średniego rozmiaru. Zwiększyło to zysk do +$15900 przy sumie strat -$2270. Otwierane jest 51 pozycji długich i 6 krótkich.
Wersja 247.310
Wszystkie scenariusze otwierają pozycje bez wstępnego ustawienia TP, dzięki temu mechanizm ustalania TP nie zostaje zablokowany zbyt dużą wartością. Przestawienie TP na mniejszą wartość zostaje wymuszone przez świeczkę przekraczającą średni rozmiar korpusu, która jednocześnie wybija się poza pięć wcześniejszych świec — inaczej TP może być przestawione tylko na większą wartość (tzn. zwiększającą zysk). Jeśli ruch ceny jest w stronę SMA200, to TP zostaje przestawione na wartość SMA200, niezależnie od wartości wyliczonej z regresji. Obecny zysk to +$14780 przy sumie strat -$2440.
Wersja 247.306
Dodawanie pierwszego punktu dla regresji liniowej maksymalnych odchyleń od średniej przeniesione z pierwszego wybicia stanu wąskiego na zanegowanie powrotu do SMA20, dzięki czemu zysk zwiększył się ponad +$14300 przy sumie strat -$2650.
Wersja 247.305
TP dla scenariusza 7 zostało zmienione na 2.5 rozmiaru stanu wąskiego od jego granicy. Wcześniej TP było zależne ustawione na 2.5 wysokości (HL) bloku ostatnich pięciu świeczek. Zysk zwiększył się do +$14200 przy sumie strat -$2550. Ustawienie TP dla scenariusza 7 nie może być wykonane jako regresja ekstremów, ponieważ jest to wybicie ze stanu wąskiego (określa pierwszy punkt do użycia w regresji), a dobieranie granicy do największego zysku jest raczej dopasowaniem algorytmu do wykresu.
Wersja 247.304
Po usunięciu dwóch prowizorycznych algorytmów przestawiania SL (które kiedyś ograniczały utratę zysku), oraz zmianie sposobu modyfikacji SL na dużych świeczkach, zysk zwiększył się do +$13800 przy sumie strat -$2550.
Wersja 247.303
Analiza świeczek wykazała, że SL jest niepotrzebnie przestawiany przy dosyć małych świeczkach (w porównaniu z maksymalnymi w niedalekiej przeszłości). Zmieniony został algorytm szacowania rozmiarów korpusów świeczek. Świeczki mniejsze niż połowa średniej są obecnie pomijane przy liczeniu średniego rozmiaru świeczek, ponieważ małe świeczki niepotrzebnie zaniżały granicę podziału pomiędzy świeczkami średniej wielkości, a świeczkami wybijającymi się istotnie ponad średnią. Zwiększyło to zysk do +$13400 przy sumie strat -$2600, co jest już bezpośrednim nawiązaniem rywalizacji z wynikiem uzyskanym przez indeks. W związku z wymaganiem większych świeczek zmniejszyła się liczba otwieranych pozycji do 49 długich i 6 krótkich.
Wersja 247.302
Dodane dwa ograniczenia na użycie regresji do ustawiania TP. Po pierwsze, regresja dla TP nie jest używana w okolicy stanu wąskiego, wstępnie został przyjęty obszar o szerokości stanu wąskiego w każdą stronę. Po drugie, linia regresji musi mieć minimalne pochylenie, wstępnie określone jako większa z wartości pochylenia SMA20 i SMA40, które przełączają ze stanu wybicia stanu wąskiego na stan trendu. W efekcie zysk wzrósł do +$12400 przy pozostawieniu sumy strat na dotychczasowym poziomie -$1930. Użycie linii regresji wydaje się już wykorzystane, więc bardziej przydałoby się zająć sytuacjami związanymi z przebijaniem SMA200, które powoduje niepotrzebne straty i ogranicza zysk poprzez zamknięcie pozycji przed osiągnięciem SMA200. Do uruchomienia jest również scenariusz 6, mający otwierać pozycje na odbiciu od SMA200, o ile nie następuje gwałtowne przebicie jedną świeczką.
Wersja 247.301
Wyłączone zostało uwzględniane SMA20 przy przestawianiu SL, prawdopodobnie za szybko przestawiało SL dla niedawno otwartych pozycji. Dla scenariuszy innych niż 7 wyłączone zostało ustawianie TP na pierwotnie przyjęte wartości (ich ustawienie blokowało możliwość przestawiania TP przy użyciu regresji liniowej). Uzyskany wynik to zysk +$11400 przy sumie strat -$1930. Kilkanaście pozycji zamyka się obecnie na TP, jednak zahamowało to wzrost zysku na kilku z nich.
Wersja 247.290
Wykryty błąd w analizie świeczek: ustawianie SL nie było powiązane z parametrami ostatniej świeczki, zamiast tego była używana pierwsza świeczka dodana do ringu. W efekcie głównym mechanizmem ustawiania SL stał się kod dodany jako łatka do awaryjnego ratowania zysków. Po naprawieniu analizy świeczek okazało się, że kod w łatce się już nie wykonuje, za to nieznacznie zmienił się układ otwieranych pozycji. Pewną wskazówką błędnego działania były inaczej otwierane pozycje dla innej daty początkowej. Obecnie robot wypracowuje zysk +$11190 przy sumie strat -$2070 (53 pozycje długie, 7 krótkich, ponad 70% zyskownych), ale jest to przed analizą konsekwencji poprawek. Największe straty (rzędu $500 na 0.1 lota) są na dwóch pozycjach, z których jedna to niepełne zanegowanie dużej świecy sprzed 2 dni i może być wyprowadzona na zero kilka dni później, natomiast druga jest związana z odbiciem od SMA200 podczas jej przebijania i również mogłaby być wyprowadzona na zero.
Wersja 247.281
Poprawiony algorytm modyfikacji SL i TP: unikanie zmiany TP i SL, jeśli pozycja ma już takowe ustawione, co skutkowało logowaniem wielu błędów o kodzie 1. Wykryty został błąd w realizacji scenariuszy 3 oraz 4: ze względu na błędnie wyliczony TP przy otwieraniu pozycji, nie zostały otwarte dwie pozycje, z których jedna generuje dosyć dużą stratę ($900). Pozycje te mogą być odfiltrowane na różne sposoby, np. poprzez zablokowanie scenariuszy 3 i 4, gdy cena znajduje się na zewnątrz odbicia SMA200 względem SMA20 (stan podwójnie szeroki) — po zastosowaniu wyniki wróciły do poprzedniego stanu, jednak dotyczy to zbyt małej liczby pozycji, aby uznać to rozwiązanie za optymalne i właściwe. Unikanie otwierania pozycji w stanie podwójnie szerokim nie było omawiane bezpośrednio, jednak wynika z innych filmów autora — bezpieczne jest jedynie wejście na wybiciu ze stanu wąskiego i podciąganie SL, natomiast prawdopodobieństwo dalszego poszerzenia stanu szerokiego jest niewielkie i lepiej jest poczekać, aż średnie uzyskają pochylenia.
Wersja 247.271
Dodana została wstępna aproksymacja liniowa szczytów jako linia do wyznaczania TP dla kolejnego dnia. Zysk zwiększył się do +$11340 przy niezmienionej sumie strat -$2200 — dwie pozycje w 2024 uzyskały większy zysk (obie są ponownym otwarciem po rolowaniu). Wcześniej pozycje nie zamykały się na TP, ponieważ jako TP były przyjmowane zbyt odległe wartości. Obecny mechanizm wykazuje przydatność, natomiast musi być jeszcze przetestowany i zoptymalizowany.
Wersja 247.183
Po zrobieniu optymalizacji rozmiaru stanu wąskiego uruchomione zostało podobne wykrywanie świeczki negującej 5 poprzednich dla kierunku SELL. Jednak warunek wykrywania odbicia pomiędzy SMA20 i SMA40 jest nieco inny i tu pozostała asymetria. Efektem jest zysk +$11120 przy sumie strat -$2200. Optymalizacja parametrów stanu wąskiego jest poniekąd dopasowaniem algorytmu do wykresu, jednak współczynniki dają równie dobre wyniki dla szerokiego zakresu wartości ("ciaśniejszy" stan wąski daje mniej otwartych pozycji, mniejszy zysk i mniejszą liczbę stratnych pozycji — poprawia się wskaźnik zysku). Optymalizacja jest wykonywana w celu sprawdzenia, czy przy innych parametrach możliwe jest otwieranie większej liczby pozycji, które dadzą większy zysk, aby sprawdzić możliwość uniknięcia stratnych pozycji w inny sposób niż ogólnie rzadsze otwieranie pozycji. Robot otwiera obecnie 58 pozycji, w tym 51 długich i 7 krótkich — średnio jedną na miesiąc. Z drugiej strony, zmiany w algorytmie mogą powodować, że pozycje będą otwierane innego dnia albo lepsze prowadzenie SL i TP może wygenerować zysk na pozycjach, które wcześniej dobrze było odfiltrować jako stratne.
Wersja 247.181
Uruchomione zostało wykrywanie świeczki, która neguje 5 poprzednich dla kierunku BUY (kolejna asymetria, bo dla SELL pogarsza). Świeczka taka blokuje scenariusze 1, 3 i 4 (odbicia od średnich szybkich) w podobny sposób, jak przebicie SMA20 — sprawdzane jest dopiero odbicie pomiędzy SMA20 i SMA40. Zysk się zwiększył do +$10460 przy sumie strat -$3230.
Wersja 247.172
Dodany został warunek, że uruchomienie swingu poprzez zanegowanie powrotu do średniej ma być wykonane w okolicy stanu wąskiego, a nie daleko od niego. Najlepsze rezultaty uzyskuje się, gdy odbicie następuje pomiędzy granicą stanu wąskiego a powieleniem jego szerokości. Przy czym odbicie w granicach stanu wąskiego daje mniejszy zysk, przy mniejszych stratach (+$5000 do -$900), natomiast przedział od połowy do podwojenia większy zysk przy większych stratach (+$9900 do -$3300). Do dalszych prac przyjęty będzie drugi wariant, ponieważ efektywność robota ma być mierzona zyskiem, a zawsze można "zacieśnić" parametry, uzyskując mniej pozycji stratnych, a utratę zysku zrekompensować zwiększeniem pozycji. Optymalizacje algorytmu mają być prowadzone w kierunku ustalenia lepszych warunków otwierania możliwie dużej liczby pozycji.
Wersja 247.170
Dodany warunek, że po wybiciu stanu wąskiego świeczka nie może się zamknąć poniżej minimum odbicia. Takie zamknięcie neguje kontynuację swingu. Warunek zastosowany dla kierunku BUY zmienił nieznacznie układ otwieranych pozycji (niektóre się już nie otwierają, za to otwierają się nowe, gdyż wcześniej wykrywany jest nowy stan wąski) i poprawił efektywność (+$9600 przy sumie strat $3580). Zastosowany dla SELL pogorszył wyniki. Warunek będzie jeszcze analizowany i testowany, aby usunąć asymetrię.
Wersja 247.161
Ograniczenie otwierania pozycji do pół godziny od otwarcia giełdy oraz pół godziny przed zamknięciem zmniejszyło liczbę otwartych pozycji i nieznacznie poprawiło efektywność ($9135 zysku przy sumie strat $3600). Otwieranie pozycji w złym czasie jest niezgodne z założeniami co do działania robota i musi być jeszcze sprawdzone i wyeliminowane, chwilowo została użyta prowizoryczna łatka wstrzymująca nieprawidłowe działanie.
Wersja 247.160
Niektóre stratne pozycje były efektem ponownego otwarcia pozycji zamkniętych na SL. Dodany został warunek, aby robot nie otwierał więcej niż jednej pozycji tego samego dnia. Zmniejszyło to liczbę otwartych pozycji długich o 2, poprawiając zysk o 1% ($9080 zysku przy sumie strat $3700).
Wersja 247.152
Dodana została opcja regulacji odległości świeczki od SMA20, jeśli świeczka tworząca odbicie nie przecina średniej. Dotychczas uwzględniana była odległość między skrajem świecy a poziomem zamknięcia (H-C albo L-C, zależnie od położenia świecy względem średniej — średnia się musiała znaleźć w podwojeniu tej odległości), obecnie wartość ta jest mnożona przez dodatkowy współczynnik. Dla wartości około 0.95 (zamiast dotychczasowego 1.0) nie jest otwierana jedna z pozycji, która przyniosła dosyć dużą stratę ($300 na 0.1 lota). Współczynnik nie był optymalizowany wraz z pozostałymi. Ustawienie różnych wartości pomiędzy 0.0 a 2.0 pozwala precyzyjniej zbadać różne konfiguracje, w zakresie bliskości świecy do średniej. W przypadku SMA13 oraz SMA8 wprowadzenie dodatkowego współczynnika nie zmieniło rezultatów w sposób istotny (wartość 4.0 poprawia zyski, ale trudno w tym przypadku mówić, że to jest "blisko" średniej). Podsumowując, określanie bliskości średniej w obecny sposób ma niewielkie znaczenie praktyczne, a dobór współczynnika jest raczej dopasowaniem do wykresu niż poprawą algorytmu. Niemniej, wspólna optymalizacja wielu parametrów może w przyszłości wskazać lepszą wartość współczynnika (np. bardziej w kierunku 0.5 albo w kierunku 2.0), co pozwoli ograniczyć liczbę stratnych pozycji lub zwiększyć liczbę otwieranych pozycji zyskownych. Testowane będą również inne algorytmy ustalania "bliskości" świecy nieprzecinającej średniej, np. z użyciem ceny wyznaczonej przez średnią z OHLC.
Wersja 246.245
Po drobnych poprawkach otwierane jest 61 pozycji długich (64% zyskownych) oraz 9 krótkich (67% zyskownych). Dla 0.1 lota od 2019 do połowy 2024 zysk wychodzi ponad $8600 przy łącznych stratach na SL około $4100. W poprzednich wersjach niektóre pozycje były otwierane poza dozwolonym czasem, a ich usunięcie zmniejszyło zysk. Nadal do uwzględnienia pozostają dwie ważne funkcjonalności, które powinny zwiększyć zysk poprzez wyznaczanie TP zamiast zamykania na SL.
Wersja 246.214
Otwierając 53 pozycje po 0.1 lota zyskuje $5400 od 2019 do połowy 2024, tracąc przy tym $3900 na SL. Nie jest dopracowane zamykanie pozycji na TP, nie działa liczenie świeczek. Również do przejrzenia są wszystkie otwierane pozycje, czy otwierane są we właściwych momentach. Największy zysk jest na 6 pozycjach, również największe straty są na 6 pozycjach. Pozostałe pozycje generują znikome zyski albo niewielkie straty. Dla większej wiarygodności testów pozycje są zamykane w dniu przed rolowaniem i otwierane ponownie po północy w dniu z rolowaniem. Ze względu na ograniczenia algorytmu pozycje są otwierane o godzinie 22:00 (teoretycznie zaraz po zamknięciu giełdy, ewentualnie powinny być minutę wcześniej), natomiast SL mogą się wykonać podczas przerw nocnych. Planowane jest wstępne uwzględnianie świeczki na kilka minut przed zamknięciem i podejmowanie decyzji na tej podstawie. Analiza świeczek M30 w ciągu dnia raczej nie będzie robiona w ramach robota w wersji "1".
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). |