Problem z testerem

Jeżeli masz pomysł lub używasz ciekawego systemu albo strategii gry, opisz ja tutaj.
Awatar użytkownika
melja
Uczestnik
Uczestnik
Posty: 4
Rejestracja: 06 lip 2011, 22:48

Problem z testerem

Nieprzeczytany post autor: melja »

Witam wszystkich. To mój pierwszy post na forum więc proszę o wyrozumiałość :) A teraz moje wątpliwości.

1) Napisałam strategię, którą testuję na Meta Traderze. Zakłada ona, że długa (krótka) pozycja ma być otwarta gdy close price ostatniego słupka jest powyżej (poniżej) Bollingar Band a przedostatniego - wewnątrz. Wszystkie zgodnie z trendem wyznaczonym przez średnią ruchomą. Oglądam wykres na testerze i widzę, że nie otworzono pozycji mimo, że na oko widać, że powinno się to stać. Nie wiem czy wynika to z mojego błędu, wadliwości testera (o której dużo się naczytałam) czy z innych czynników. Errory jaki się pokazały w dzienniku to najczęściej: invalid price 1.44579000 for ordersend function. Plik w załączniku.

2) Nurtuje mnie temat jakości danych. Ściągnęłam dane z Ducascopy i muszę je jeszcze ogarnąć. Póki co działam na MT. Chciałąm zapytać czy w MT4 są wiarygodne dane cen otwarcia i zamknięcia? Rozumiem, że braki ticków skutkują tym, że na przykład trailing stop zadziałaby inaczej niż na testerze. Czy dobrze rozumiem?

3) Trzecia wątpliwość dotyczy najprzyjemniejszej kwestii czyli zysków. Czy wykres krzywej kapitału w kształcie pnących się do góry schodków na przestrzeni roku jest OK? Pytam bo z ciekawości przeglądałam systemy sprzedawane na allegro i widziałam jeden, w którym przyrost był paraboliczny i gładziutki. Fakt, że na przestrzeni 10 lat i pewnie nie widać wahań ale... wolę zapytać :)

Będę wdzięczna za pomoc!
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
grassmouse
Stały bywalec
Stały bywalec
Posty: 21
Rejestracja: 20 sty 2011, 21:39

Nieprzeczytany post autor: grassmouse »

Witaj,
melja pisze:Nie wiem czy wynika to z mojego błędu, wadliwości testera (o której dużo się naczytałam) czy z innych czynników. Errory jaki się pokazały w dzienniku to najczęściej: invalid price 1.44579000 for ordersend function.
Zerknąłem na kod - chodzi o poziom stop-loss, jaki podajesz w zleceniu. Stawiasz stopa na przeciwnej bandzie - w niektórych sytuacjach może się okazać, że między bieżącą ceną a poziomem, na jakim chcesz umieścić stopa, jest zbyt mała różnica (zwykle musi być to kilka pipsów). Przewidziałaś to w swoim kodzie - i bardzo dobrze :) Przy obliczaniu poziomu stopa sprawdzasz, czy znajduje się on wystarczająco daleko od rynku. Jedyny problem w tym, że w tych obliczeniach nie uwzględniłaś spreadu.

Problem rozwiązuje drobna zmiana, do linii:

Kod: Zaznacz cały

double minSL=MarketInfo(Symbol(),MODE_STOPLEVEL);
Należałoby dodać:

Kod: Zaznacz cały

double minSL=MarketInfo(Symbol(),MODE_STOPLEVEL) + MarketInfo(Symbol(),MODE_SPREAD);
To wszystko :)
melja pisze:Chciałąm zapytać czy w MT4 są wiarygodne dane cen otwarcia i zamknięcia?
Dane historyczne w MT4 średnio nadają się do wiarygodnych testów. W ogóle MT4 średnio nadaje się do czegokolwiek.
melja pisze:Czy wykres krzywej kapitału w kształcie pnących się do góry schodków na przestrzeni roku jest OK? Pytam bo z ciekawości przeglądałam systemy sprzedawane na allegro i widziałam jeden, w którym przyrost był paraboliczny i gładziutki.
Nie do końca rozumiem pytanie :) Roczny test to zdecydowanie za mało żeby ocenić system. Przyrost paraboliczny związany jest zapewne ze zwiększaniem wielkości pozycji w miarę powiększania się stanu konta. Wahania krzywej kapitału w obie strony będzie miała każda strategia, no chyba, że rozmawiamy o jakimś martingale, który ma warunek zabraniający zamykania koszyka zleceń dopóki bilans nie jest na plusie :) Tak, to świetnie wygląda na wykresie, szczególnie jeżeli nie pokaże się na nim tymczasowych obsunięć...

Sukcesów :)

Awatar użytkownika
redart
Stały bywalec
Stały bywalec
Posty: 75
Rejestracja: 06 lip 2008, 22:30

Nieprzeczytany post autor: redart »

Zwróć także uwagę na fragment kodu

Kod: Zaznacz cały

double spread=MarketInfo(Symbol(),MODE_SPREAD);
który umieściłaś w init(), a więc wykona się tylko przy uruchomieniu EA.
Tymczasem spread może zmieniać się w trakcie pracy np. przy danych lub w nocy, co może generować błędy.
Lepiej będzie przenieść ten fragment do start().

Awatar użytkownika
melja
Uczestnik
Uczestnik
Posty: 4
Rejestracja: 06 lip 2011, 22:48

Nieprzeczytany post autor: melja »

Wielkie dzięki :)

ODPOWIEDZ