Własny EA - optymalizacja

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
reptile
Maniak
Maniak
Posty: 2799
Rejestracja: 13 gru 2008, 13:48

Re: Własny EA - optymalizacja

Nieprzeczytany post autor: reptile »

Miałem taką samą refleksję jak green7..

@green7
Tak sobie myślę, z tymi własnymi rozwiązaniami, bo też coś dłubię.. :p
O ile obliczenia spoko majonez, to przy optymalizacjach sprawy się mogą komplikować.
Z drugiej strony Tymek wskazał dość istotną rzecz.. PRZYZWYCZAJENIA
Fajnie zrobić szybki test i iść z tematem dalej.. przyjąć odrzucić. Wygląda na to, że Tymek zamiast walczyć z wątkami zaimplementował je "w sobie" ; )
Tyle, że mam wrażenie co do tych EA, że są raczej z tych prostszych?
Widzę, że wszyscy jakby stronią od tego mt5.. hm.
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)

Awatar użytkownika
Tymek
Pasjonat
Pasjonat
Posty: 648
Rejestracja: 20 mar 2006, 13:39

Re: Własny EA - optymalizacja

Nieprzeczytany post autor: Tymek »

Lubie programować i tworzyć nowy soft, ale w momencie gdy mam do wyboru pracę nad ulepszeniem EA
lub poświęcić czas na rozwiązanie czegoś inaczej co już zostało zrobione (może źle lub nie optymalnie)
to wolę mój cenny czas który już do mnie nie wróci ;) poświęcić na EA lub inne sprawy związane z FX.
Co do mt5 to jakoś jeszcze nie widać tego by wszyscy brokerzy mieli go w ofercie, a ograniczać się
do tych co go obecnie mają to tak jak wyciąć dużą część swoich możliwości. Dlatego nie skupiam się
na samej platformie tylko na EA, które jest w C#.

Co do EA wcale nie są takie proste wbrew nazwom ;) To, że nie korzystam ze standardowych indyków
zaimplementowanych w jakiejś platformie nie oznacza, że ich nie używam w swoich programach.
Większość indyków jest z kodem źródłowym więc przepisanie kodu na inny język to pikuś. ;)
Każdy chce mieć pieniądze, ale pieniądze nie zawsze chcą każdego ;)

green7
Maniak
Maniak
Posty: 2060
Rejestracja: 16 sty 2008, 18:44

Re: Własny EA - optymalizacja

Nieprzeczytany post autor: green7 »

Tymek pisze:Ten system napisałem 2 lata temu i sprawdza się dobrze bo mogę łatwo go skalować.
Co do "competition" myślę, że cokolwiek byś nie napisał to 1 PC nawet najsilniejszy nie pokona
rozproszonego przetwarzania na 10 bladach czyli 80 corach. Przy kilku bilionach kombinacji
parametrów nawet kilku wątkowe przetwarzanie na 1 PC nie da rady systemowi rozproszonemu.
No zapewne tak. Ale interesuje mnie to jaka będzie różnica. Można by policzyć np. jakieś MA dla paru okresów/instrumentów. Może pomyślę o jakimś prostym teście (jak już dojdę do robienia MA) - chciałoby Ci się odpalić go dla porównania na Twoim rozproszonym ustrojstwie ?
Tymek pisze:I tak dochodzi już do tego ze MT4 tylko przesyła aktualna cenę i wykonuje proste operacje BUY/SELL/CHANGE TP nic więcej, reszta jest w DLLkach. EA w MQL sprowadza się do kilku linii kodu, które wywołują funkcje
z DLL. Jak widzisz przejść na inną platformę nie stanowi problemu. Platforma potrzebna mi jest tylko
przy testach do zarządzania koszykiem co nie jest trudne do zrobienia samemu ale ważniejsza dla mnie
była sama strategia niż skupianie się na rzeczach dookoła.
Skoro EA w MQLu tylko przekazuje cenę do dllki oraz obsługuje ordery to co ze wskaźnikami ? Też je liczysz w dllu? Czy może również mql je oblicza i przekazuje do dllki ?
Green
Obrazek
Obrazek

Awatar użytkownika
Tymek
Pasjonat
Pasjonat
Posty: 648
Rejestracja: 20 mar 2006, 13:39

Re: Własny EA - optymalizacja

Nieprzeczytany post autor: Tymek »

Wszystko liczę w DLL. Co do IMA to mam swoje własne szybsze rozwiązanie ;)
Nie sumuję za każdym razem wszystkich świeczek tylko mam listę oraz sumę całości.
Gdy dochodzi nowa świeczka to odejmuję tę która wypada z listy a dodaję tę co przychodzi.
W ten sposób przy długich IMA oszczędzasz wiele czasu ;)
Jeżeli chodzi o mojego testera to mogę testować jednocześnie kilkaset parametrów.
Dzięki temu gdy np. kilka EA używa ten sam wskaźnik z tymi samymi parametrami to jest on liczony
globalnie dla wszystkich. Każde EA zgłasza co używa i z jakimi parametrami i w ten sposób obliczam to tylko raz.
Ale jak powiedziałem jeszcze daleka droga do całego produktu z którego będę zadowolony.
Tak naprawdę ograniczeniem jednoczesnych testów jest tylko pamięć jak na razie tak dla jaj
sprawdziłem, że bez problemów proste EA może być powielone 1mln razy bez problemów i liczba
obliczeń jest niewielka. Niestety mam mały problem ze wspólnym koszykiem by nie przeliczać wielokrotnie
wszystkich orderów (bo przecież przy takiej dużej masie EA zdarzaj się często ordery na tych samych poziomach)
- profit/stratę i SL/TP staram się je skumulować, czyli jeden wielki basket a każde EA ma swój mały basket ze
wskaźnikami do głównego basketu.
Stosuję również trick z tym że EA jest tylko kodem i dane są klasą, tak więc jest jeden kod i wiele klas z danymi.
Nie potrzeba powielać w ten sposób kodu przy nowych instancjach. Tak naprawdę jest tego dużo ale jak mówiłem
nie jest to moim priorytetem. To jest tylko zabawa, która może być interesująca po zakończeniu o ile starczy mi sił.
Myślałem kiedyś o stworzeniu grupy programistów pracujących nad takim problemem, ale każdy chce widzieć
profit a nie zabawę ;)
Do tego rozdzielenie kodu od danych daje ci upgrade kodu bez restartowania EA ;) Nowy kod przejmuje dane
tłumaczy je lub używa takiej samej struktury i działa dalej. To taki trick stosowany w mojej poprzedniej pracy.
(magia używania interface'ów)
Każdy chce mieć pieniądze, ale pieniądze nie zawsze chcą każdego ;)

green7
Maniak
Maniak
Posty: 2060
Rejestracja: 16 sty 2008, 18:44

Re: Własny EA - optymalizacja

Nieprzeczytany post autor: green7 »

Tymek pisze:Wszystko liczę w DLL. Co do IMA to mam swoje własne szybsze rozwiązanie ;)
Nie sumuję za każdym razem wszystkich świeczek tylko mam listę oraz sumę całości.
Gdy dochodzi nowa świeczka to odejmuję tę która wypada z listy a dodaję tę co przychodzi.
W ten sposób przy długich IMA oszczędzasz wiele czasu ;)
Twoje jak Twoje. Rzekłbym, że takie ono Twoje jak i moje :) To od razu narzucająca się optymalizacja, i zapewne wiele platform tak robi (OpenQuant na pewno). Jak liczy mt4 to nie wiadomo bo nie ma kodu do MA.

Tymek pisze:Jeżeli chodzi o mojego testera to mogę testować jednocześnie kilkaset parametrów.
Dzięki temu gdy np. kilka EA używa ten sam wskaźnik z tymi samymi parametrami to jest on liczony
globalnie dla wszystkich. Każde EA zgłasza co używa i z jakimi parametrami i w ten sposób obliczam to tylko raz.
Ale jak powiedziałem jeszcze daleka droga do całego produktu z którego będę zadowolony.
Tak naprawdę ograniczeniem jednoczesnych testów jest tylko pamięć jak na razie tak dla jaj
sprawdziłem, że bez problemów proste EA może być powielone 1mln razy bez problemów i liczba
obliczeń jest niewielka. Niestety mam mały problem ze wspólnym koszykiem by nie przeliczać wielokrotnie
wszystkich orderów (bo przecież przy takiej dużej masie EA zdarzaj się często ordery na tych samych poziomach)
- profit/stratę i SL/TP staram się je skumulować, czyli jeden wielki basket a każde EA ma swój mały basket ze
wskaźnikami do głównego basketu.

Nieźle. Cóż takiego Ty tam obliczasz. To wygląda na jakieś GA ?
Tymek pisze:Stosuję również trick z tym że EA jest tylko kodem i dane są klasą, tak więc jest jeden kod i wiele klas z danymi. Nie potrzeba powielać w ten sposób kodu przy nowych instancjach. Tak naprawdę jest tego dużo ale jak mówiłem nie jest to moim priorytetem. To jest tylko zabawa, która może być interesująca po zakończeniu o ile starczy mi sił.Myślałem kiedyś o stworzeniu grupy programistów pracujących nad takim problemem, ale każdy chce widzieć
profit a nie zabawę ;)
Profit nie wyklucza zabawy :) Niestety z grupą ten problem, że mało sensownych ludzi. Osobiście jakby był ciekawy pomysł to byłbym zainteresowany taką "zabawą".
Tymek pisze:Do tego rozdzielenie kodu od danych daje ci upgrade kodu bez restartowania EA ;) Nowy kod przejmuje dane tłumaczy je lub używa takiej samej struktury i działa dalej. To taki trick stosowany w mojej poprzedniej pracy.
(magia używania interface'ów)
:) A widzisz ja miałem niedawno dylemat jak daleko iść ze stosowaniem interfaców. Czy np. warto opisać pojedynczy słupek OHLC jako interface czy nie. Na razie wyszło mi, że nie. Choć np. taki tradelink zastosował inne podejście, tam praktycznie nawet każda struktura danych jest interfacem. Tyle, że IMHO zupełnie tego później nie wykorzystują.

Na jakich danych robisz te testy ? Tickowe, dukas czy coś innego ?
Green
Obrazek
Obrazek

Awatar użytkownika
Tymek
Pasjonat
Pasjonat
Posty: 648
Rejestracja: 20 mar 2006, 13:39

Re: Własny EA - optymalizacja

Nieprzeczytany post autor: Tymek »

Nie testuje na tickach bo moje strategie upierają się na otwarciu świec a potem ustawiany jest odpowiedni TP
i tyle ;) Reszta to czekanie na TP lub SL. A dane mam rożne, również z dukasa.

Co do interface'ow to ja praktycznie stosuje je do każdej klasy, ułatwia to później życie.
Do tego jeżeli wyprowadzisz interface do osobnego projektu to nie będziesz miał problemow z circular link
projektów. Do tego łatwiej będzie podmieniać DLL z nowym kodem bo nie trzeba kompilować wszystkich projektów.
Każdy chce mieć pieniądze, ale pieniądze nie zawsze chcą każdego ;)

Awatar użytkownika
sgorn
Pasjonat
Pasjonat
Posty: 1208
Rejestracja: 25 paź 2008, 17:29

Re: Własny EA - optymalizacja

Nieprzeczytany post autor: sgorn »

TYMEK, czy optymalizujesz na bieżąco swoje dzialajace w realu EA? robisz raz na jakis czas testy/optymalizacje?
Wicks reject areas and bodies explore them-MightyOne
Nie ważne czy miałeś rację czy nie,ważne jak dużo zarobiłeś posiadając rację i jak mało straciłeś, myląc się.

Awatar użytkownika
Tymek
Pasjonat
Pasjonat
Posty: 648
Rejestracja: 20 mar 2006, 13:39

Re: Własny EA - optymalizacja

Nieprzeczytany post autor: Tymek »

Nie nie robię. Sprawdzam jak działa na danych rzeczywistych i gdy odchodzi od założonych ram
(określonych na danych historycznych) wyłączam i sprawdzam czy problem był po stronie EA,
czy był to odosobniony przypadek, czy broker nie pozwolił wstawić zlecenia i strategia idzie
w diabły. Generalnie staram się nie dotykać. Jeżeli sprawdziłem, że działa na ostatnich 10 latach
i nie traci to zakładam, że będzie zarabiać w przyszłości. Oczywiście nie ma 100% gwarancji.
Ale gdy przyrost roczny jest np. 50% a ryzyko ustawione na 15% to jedno odejście od ram strategii
z jakiegokolwiek powodu nie psuje całości wyniku, 35% rocznie to też dobry wynik. Inwestorzy
cieszą się gdy maja więcej niż 7% ;) A mam takich gdzie 2% rocznie przy kapitale w USD robi
wielki uśmiech na twarzach.
Każdy chce mieć pieniądze, ale pieniądze nie zawsze chcą każdego ;)

Awatar użytkownika
sgorn
Pasjonat
Pasjonat
Posty: 1208
Rejestracja: 25 paź 2008, 17:29

Re: Własny EA - optymalizacja

Nieprzeczytany post autor: sgorn »

TYMEK dzieki za odpowiedz. Ciekawy post, dales do myslenia.

"gdy odchodzi od założonych ram (określonych na danych historycznych) wyłączam i sprawdzam czy problem był po stronie EA"
"Ale gdy przyrost roczny jest np. 50% a ryzyko ustawione na 15% to jedno odejście od ram strategii z jakiegokolwiek powodu nie psuje całości wyniku"
co masz na mysli? np zalozony max DD, ciag strat, spadek skutecznosci? rozpatrujesz tutaj typowe parametry znajdujace sie w historycznym performance EA?

-- Dodano: wt 29-10-2013, 13:50 --

jeszcze kolejne pytanko. Czy jak EA w trakcie testow 10-letnich, zaliczy stratę w danym roku, np w 2009, to go odrzucasz?
Wicks reject areas and bodies explore them-MightyOne
Nie ważne czy miałeś rację czy nie,ważne jak dużo zarobiłeś posiadając rację i jak mało straciłeś, myląc się.

Awatar użytkownika
Tymek
Pasjonat
Pasjonat
Posty: 648
Rejestracja: 20 mar 2006, 13:39

Re: Własny EA - optymalizacja

Nieprzeczytany post autor: Tymek »

Załóżmy że startuję EA z ryzykiem 15% (MaxDD + Marging < 15%).
Z testów na danych historycznych mogę wyznaczyć kwotę potrzebna na jedno minimalne zlecenie. np. 1000USD
Więc gdy mam na koncie 100000 to 15% z tego to 15000 więc mogę grać 0.15 lota.
W teorii nie powinna strategia osiągnąć 15% bo nigdy nie wezmę do wyliczeń 1000 tylko powiedzmy 1200.
Tak więc gdy EA jest bliskie 15% dostaję info z EA, że coś jest nie tak i muszę przyjrzeć się sytuacji.
Jeżeli strategia przy takich założeniach ma zarabiać 50% rocznie od całej kwoty 100K przy ryzyku 15%
to jedna wpadka 15% nie robi wielkiej tragedii, bo czas odrobienia tych 15% nie jest stosunkowo długi.
Oczywiście trzeba przeanalizować dlaczego tak się stało. Czasami bywa, że dosłownie 1pip było do TP
a potem cena zawróciła, czasami tak bywa bo broker zmienia SPREAD i może być dupa. Dlatego
konta z realnymi pieniędzmi mają swoje odpowiedniki w kontach demo u dwóch innych brokerów.
Grają tak samo z tą samą kwotą, daje to możliwość weryfikacji gdzie leży problem. Tak my to
realizujemy obecnie.

Co do 2009 i straty, tak odrzucam. W każdym roku testowym musi być zyskowne. Nikt nie zainwestuje
w EA które kiedyś tam nagle niespodziewanie traci.
Każdy chce mieć pieniądze, ale pieniądze nie zawsze chcą każdego ;)

ODPOWIEDZ