Własne EA, czyli poszukiwanie Złotego Grala

Tu można dyskutować o wszystkich sprawach związanych z rynkiem Forex.

Czy wierzysz w istnienie EA, które regularnie zarabia ?

Tak
246
50%
Nie
100
20%
Tak, ale trzeba je nieustannie modyfikować
146
30%
 
Liczba głosów: 492

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

elky_obi pisze:Ja mam już swojego Grala, "jeden słownie" (1) wskaźnik, jak idę w górę to kopię jak idę w dół to ciągnę, skuteczność 100 % od 2 lat - małe kwoty = system = człowiek = wierzysz w co chcesz = Ostrołęka, najpiękniejsze miasto tryliarderów..
To wskaźnik z MT4, czy jakiś własny ?
No i to nie wszystko. Większość strategii zależy od zarządzania pozycją. Tam właśnie moze być ukryty Grall ;)
Solą życia jest kasa.

Awatar użytkownika
rayzeel
Gaduła
Gaduła
Posty: 357
Rejestracja: 05 lis 2008, 14:47

Nieprzeczytany post autor: rayzeel »

Mój tester to jeszcze długo pozostanie w fazie produkcji. Cały czas pojawiają się jakieś nowe kwestie na które trzeba znaleźć możliwie najlepsze rozwiązanie. Od początku zakładałem, że to zajmie dużo czasu i tak też to idzie. Niestety nie mam umiejętności jak co niektórzy goście chociażby z forex factory. Rzucę jeden screen, aby trochę zobrazować to co robię i powiedzieć jaki jest cel. Trochę po to aby się pochwalić, ale też może rozpali to w kimś chęć podobnych poszukiwań. Na dzień dzisiejszy zakończyłem w 90% pisanie klas odpowiadających za wykonanie testu (na razie nie optymalizowałem kodu). Test który widać na screenie wykonał się w 2792ms i przeszedł prawie 4 miliony świeczek od 2001 roku. Także prędkość jest niebywała. Dodatkowo jak widać mogę wykonać test wielu strategii jednocześnie i docelowo jednocześnie będzie szło kilka walorów. Teraz zacząłem budować algorytm genetyczny, który będzie wyszukiwał najlepsze rozwiązanie. Głównym problemem GA jest prawidłowe zbudowanie funkcji przystosowania, aby móc prawidłowo zlokalizować taki zestaw algorytmów, który nie będzie przeoptymalizowany i będzie dawał kontynuację na danych outsample.
Jeśli kogoś interesuje to wzoruję się w dużej części na tym wątku http://www.forexfactory.com/showthread.php?t=167720 , przeczytałem go już chyba z 6 razy :) Dobre miejsce do rozpoczęcia. Dużo praktycznej wiedzy. Jeśli ktoś ma jakieś konkretne pytania bądź jakąś opinie na temat mojej pracy to proszę pisać. Krytyka mile widziana, gdyż pomimo starań pewnie jakieś błędy po drodze mi się zakradają, a na pytania chętnie odpowiem, gdyż obecnie głównie tym się zajmuję. Pozdrawiam!
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
mike_05
Maniak
Maniak
Posty: 1668
Rejestracja: 02 wrz 2010, 11:55

Nieprzeczytany post autor: mike_05 »

Załóżmy, że stworzysz doskonały tester.
Jakie znaczenie ma jego przewaga, po przeniesieniu potem skutków ustawień strategii do trejdowania za pomocą ułomnego MT4?
Jeżeli chcesz odnieść sukces, naucz się cenić ludzi.

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

Nieprzeczytany post autor: green7 »

rayzeel pisze:Jeśli kogoś interesuje to wzoruję się w dużej części na tym wątku http://www.forexfactory.com/showthread.php?t=167720 , przeczytałem go już chyba z 6 razy Smile Dobre miejsce do rozpoczęcia.
Heh to mój ulubiony wątek z ff :)

Widzę, że robimy podobne rzeczy. Też "wymęczyłem" własny tester - sporo zabawy i nadal mam niektóre problemy nie rozwiązane. W czym to piszesz ?
Apropo wielu walorów to warto wbudować ich obsługę na samym początku to upraszcza sprawę. No i spowolni siłą rzeczy testy :)
Green
Obrazek
Obrazek

Awatar użytkownika
matka
Pasjonat
Pasjonat
Posty: 642
Rejestracja: 17 lis 2008, 15:53

Nieprzeczytany post autor: matka »

rayzeel pisze: Test który widać na screenie wykonał się w 2792ms i przeszedł prawie 4 miliony świeczek od 2001 roku.
Jeśli mogę zapytać, korzystasz z bazy czy plików tekstowych?
Obrazek
Unfortunately, more to come

Awatar użytkownika
rayzeel
Gaduła
Gaduła
Posty: 357
Rejestracja: 05 lis 2008, 14:47

Nieprzeczytany post autor: rayzeel »

green7 pisze:W czym to piszesz ?
java

A co do walorów to chcę je mieć jednocześnie w jednym teście więc będę musiał odpowiednio skomponować dane, ułożyć je czasowo i uruchomić razem. Czas się niestety wydłuży, ale jeśli strategię będę chciał testować na jednym roku to i tak będzie to poniżej sekundy na test. Poza tym mam to wszystko rozdzielone w klasach także modyfikacje poszczególnych elementów nie są kłopotliwe.
Jeśli mogę zapytać, korzystasz z bazy czy plików tekstowych?
Myślałem o bazie danych, ale w końcu stwierdziłem, że czas na załadowanie danych do pamięci nie ma znaczenia bo robię to tylko raz i zostałem przy csv.
mike_05 pisze:Jakie znaczenie ma jego przewaga, po przeniesieniu potem skutków ustawień strategii do trejdowania za pomocą ułomnego MT4?
Nie zamierzam przenosić strategii do MT4. Docelowo chciałbym pobierać dane z np ducscopy i ewentualnie kopiować sygnały do mt4 za pomocą bazy danych lub w jakiś inny sposób. Oczywiście jeśli nie mt4 to składanie zleceń do dukasa. Wystarczy zmienić strumień danych z historycznych na realtime, grać tak jak strategia do tej pory tylko z włączoną opcją "kopiuj sygnały na real". Oczywiście to tylko teoretyczne założenie więc po praktycznej weryfikacji może ulec zmianie.

To i tak jest na razie wszystko w planach i tak jak green7 napisał, jest dużo problemów do rozwiązania i bardzo dużo dróg którymi można pójść. Pewnie jak zaczął bym to tworzyć jeszcze raz to inaczej bym się do tego zabrał, ale na obecnym etapie chciałbym zrobić coś na wzór algorytmu genetycznego, bo nie będzie to stricte tego typu algorytm. Nie chciałbym się zagłębiać w szczegóły, ale głównie chodzi o to, żeby strategie które zostaną wybrane jako najlepsze nie powielały swoich parametrów + najlepsza strategia w swoim "otoczeniu" nie może posiadać negatywnych rezultatów.

Green7, jakie prędkości udaje Ci się osiągnąć ? Czy korzystasz z GA, czy też innego algorytmu do wyboru optymalnego rozwiązania ?

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

Nieprzeczytany post autor: green7 »

rayzeel pisze:Green7, jakie prędkości udaje Ci się osiągnąć ? Czy korzystasz z GA, czy też innego algorytmu do wyboru optymalnego rozwiązania ?
Co do prędkości - w sumie nie mierzyłem. Ale o niebo szybciej niż w mt4. Być może też dlatego, że ilość ticków nie zależy u mnie od volumenu jak w mt4 (nie ma to sensu skoro działa się na danych tickowych z Dukasa)
Do GA nie doszedłem - na razie robiłem optymalizację "brute force". Czyli przeliczało mi w zadanym zakresie wszystkie parametry. Na razie dla moich potrzeb wystarczało - czas symulacji był znośny.

Co do GA to myślałem o użyciu jakiś gotowych bibliotek. Jest kilka w tym takie, które umożliwiają przetwarzanie rozproszone - a dobrze byłoby wykorzystać moc wielu rdzeni/komputerów.
rayzeel pisze:To i tak jest na razie wszystko w planach i tak jak green7 napisał, jest dużo problemów do rozwiązania i bardzo dużo dróg którymi można pójść. Pewnie jak zaczął bym to tworzyć jeszcze raz to inaczej bym się do tego zabrał,
Mam to samo - też bym wiele rzeczy zmienił - w sumie to najchętniej napisałbym całość od nowa i pewnie tak zrobię bo paru rzeczy, które okazały się konieczne nie przewidziałem. Na razie jednak robię coś innego - można powiedzieć, że moduł egzekucji strategii na rynku realnym - i już widzę, że to też zmieni ciut sposób obsługi strategii.
Mam też dylemat w jakim języku tworzyć takie rzeczy .... - aktualnie mam to w Delphi co zaczyna być ograniczeniem. Java jest jak dla mnie ciut prymitywna (brak np. properitesów) - choć jest w niej sporo kodów dotyczących tradingu. W C++ problematyczne jest tworzenie GUI czy wizualizacja.... pewnie zostanie C# ....

Dodano po 8 godzinach 11 minutach:

Rayzeel: apropo tego o co pytałeś na ff.
Co zrobić jeśli na tym samym słupku wypada TP i SL. Pisząc tester sprawdzałem jego wyniki z Open Quantem. Tam jest inna filozofia niż w mt4 i inaczej obsługuje się zlecenia - nie ma TP i SL tylko zlecenia limit. W momencie jeśli jedno z nich wejdzie (np. TP) anuluje się drugie. No i porównując wyniki mojego testera z OQ wyszło na to, że dość specyficznie obsługuje on taką sytuację gdy oba zlecenia (TP i SL) wypadają na tym samym słupku.
Wtedy realizowane jest to zlecenie, które zostało wysłane jako pierwsze.

Jeśli więc testujesz strategie, która najpierw ustawia TP a potem SL to możesz otrzymać całkiem inne wyniki niż jeśli zrobiłbyś to w odwrotnej kolejności :)

Sprawdzałem też jak to jest w mt4 - było lepiej ale kurde już nie pamiętam szczegółów.....
Green
Obrazek
Obrazek

Awatar użytkownika
rayzeel
Gaduła
Gaduła
Posty: 357
Rejestracja: 05 lis 2008, 14:47

Nieprzeczytany post autor: rayzeel »

Ja sprawdzałem poprawność tylko z mt4 i tutaj były różnice. Oczywiście nie duże, ale po pirerwsze mt4 miał więcej transakcji na tym samym okresie, a po drugie w mt4 zaliczył więcej tp niż sl. Kształt krzywej w większości się zgadzał. Na razie to był tylko jeden test i na pewno go powtórzę jeszcze raz ale trochę później. Sprawdziłem jednak to co robił mój tester i wychodzi mi, że realizuje wszystko prawidłowo, a robi to tak, że jeśli TP zlecenia jest <high & >low świecy m1 to biorę TP po najgorszym scenariuszu tej świecy, czyli dla longa zamykam po lowBID, a short highASK. Craig na ff napisał mi, że to jest błędne podejście, ale nie rozumiem tego na ten moment. Wydaje mi się, że idzie to prawidłowo. Oczywiście mam zamiar nie popadać w euforię dobrych wyników, tylko być czujnym i sprawdzać wszystko :)... Dużo można się nauczyć tak czy inaczej przy pierwszym tego typu projekcie i tak jak piszesz Green7... potem można zabrać się do tego od początku i zrobić to lepiej :)... Tak czy inaczej na razie robię to w javie wzorując się na wątku ff. Innych języków na razie nie znam. java daje przyjemne gui i możliwość szybkiego rysowania prostych wykresów. Na razie to wystarcza.
green7 pisze:a dobrze byłoby wykorzystać moc wielu rdzeni/komputerów.
O tym też myślałem, ale na chwilę obecną i późniejszą nie będę się do tego zabierał. Czytałem o MapReduce, nawet przeglądałem api do javy, ale to już jest większa sprawa także tylko liznąłem temat.

Poza tym ogarnąłem wczoraj temat danych tak jak sugerowałeś i tak jak pisałem nie było z tym problemu, aczkolwiek potrzebna była vena do działania :P Teraz zajmę się zbudowaniem tego prostego GA, a jak okaże się to za trudne na chwilę obecną to zrobię brute force bo to nawet mam zrobione w innym programie także kwestia przekopiowania. Co do GA to polecam ten link http://www.obitko.com/tutorials/genetic ... /index.php , są tam ciekawe przykłady w javie napisane które fajnie obrazują działanie algorytmu.

Awatar użytkownika
matka
Pasjonat
Pasjonat
Posty: 642
Rejestracja: 17 lis 2008, 15:53

Nieprzeczytany post autor: matka »

rayzeel pisze:Myślałem o bazie danych, ale w końcu stwierdziłem, że czas na załadowanie danych do pamięci nie ma znaczenia bo robię to tylko raz i zostałem przy csv.
Rozmawiałem z Mikkom'em i on twierdzi, że baza nie ma szans z csv. To samo podpowiada mi moje doświadczenie. Myślisz, że jest odwrotnie? Oczywiście wszystko można zmierzyć ;)
p.s. jeśli rozmawiacie o GA w kontekście optymalizacji, to ja myślę, że to zła droga.

Dodano po 4 minutach:
mike_05 pisze:Załóżmy, że stworzysz doskonały tester.
Jakie znaczenie ma jego przewaga, po przeniesieniu potem skutków ustawień strategii do trejdowania za pomocą ułomnego MT4?
Po przeniesieniu nie ma żadnego, przed o ile nie ma błędów - gigantyczne :D
Obrazek
Unfortunately, more to come

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

Nieprzeczytany post autor: green7 »

rayzeel pisze: Craig na ff napisał mi, że to jest błędne podejście, ale nie rozumiem tego na ten moment.
Chodziło mu to to, że jeśli testujesz na M1 i masz TP SL tak mały że mieści się w zakresie słupka M1 to nie jest to realistyczny test. Że rozdzielczość danych masz za małą .....
trochę się tu nie zgodzę: słupki nawet M1 (a nie jest powiedziane, że na takich działamy) mogą mieć sporą rozpiętość. Dobrze to jakoś uwzględnić w teście i też jestem za podejściem coby brać pod uwagę scenariusz najbardziej pesymistyczny a nie optymistyczny.
matka pisze:Rozmawiałem z Mikkom'em i on twierdzi, że baza nie ma szans z csv. To samo podpowiada mi moje doświadczenie
Mikkom chyba wsio trzyma w pamięci ? Choć nie wiem skąd ładuje dane. Choć o ile sobie przypominam to on chyba miał aplikację gdzie logował dane tiskowe dla poszczególnych par i pokazywał zrzut ekranu jak to wygląda ?
Jak tak to zdaje się miał to w plikach własnej organizacji ....

W zależności jakie operacje potrzebujesz robić na danych, czy mają być one dostępne z wielu miejsc itd. baza może być przydatna bądź nie. Dla ładowania "prostych" szeregów czasowych nie ma szans by baza była szybsza niż prosto zorganizowane pliki (nawet CSV).
matka pisze:p.s. jeśli rozmawiacie o GA w kontekście optymalizacji, to ja myślę, że to zła droga.
Czemu ? I co w zamian ?
Green
Obrazek
Obrazek

ODPOWIEDZ