czwartek, 2 lutego 2012

6 największych błędów przez które Twój system inwestycyjny w AFL będzie oszukiwał przy testach, a potem będzie tracił na giełdzie - błąd #2

6 największych błędów przez które Twój system inwestycyjny w AFL będzie oszukiwał przy testach, a potem będzie tracił na giełdzie - błąd #2

Autorem artykułu jest Rafał Wysocki



Język AFL w Amibrokerze jest potężnym narzędziem konstruowania systemów inwestycyjnych. Można też przeprowadzić bardzo rozbudowane testy zanim zainwestuje się prawdziwe pieniądze. Jednak te kilka błędów może spowodować, że wszystkie testy będą przekłamane, a Twoja inwestycja będzie zagrożona. Zobacz jak się przed tym uchronić.

Błąd drugi wiąże się z ceną. Również może być trudny do wykrycia. Na dodatek nie wiadomo na ile fałszuje wynik testu. Może to robić tylko trochę, ale może też powodować wyniki niesamowicie różne od możliwych w rzeczywistości.

W Amibrokerze w momencie kiedy zawierasz transakcję masz możliwość zadecydowania po jakiej cenie jest ona wykonywana. Dotyczy to oczywiście wszystkich czterech możliwych transakcji - czy to kupna, czy sprzedaży, czy odpowiednich transakcji dla pozycji krótkiej.

Najlepszą praktyką jest zawsze zawieranie transakcji po cenie zamknięcia słupka, lub jeszcze lepiej po cenie otwarcia następnego słupka. Jednak są sytuacje, kiedy nie będzie to wystarczające. Np. jeżeli wykreślasz linię stop. Możesz sprawdzać jej przekroczenie dopiero po cenach zamknięcia i sprawa jest prosta. Stosujesz wtedy właśnie jedną z dwóch przedstawionych przed chwilą cen.

Ale możesz też traktować stop jako zlecenie oczekujące na rynku. Wtedy nawet gdy inwestujesz wg danych dziennych, stop musisz obserwować w danych intraday. Tak musi być, ponieważ stop ten zadziała również w trakcie sesji, a nie tylko na jej koniec. Jeżeli sesja otworzy się nad linią stop i w ciągu dnia ją przetnie, masz prawo założyć, że zlecenie zrealizowało się dokładnie w cenie przez nią wyznaczanej.

Jednak właśnie tu tkwi jedna z pułapek. Co bowiem, gdy rynek otworzy się luką i od razu będzie sporo poniżej linii stop? Jeżeli przyjmiesz jako cenę transakcji wartość wynikającą z tej linii, to stwarzasz sytuację niemożliwą do osiągnięcia na prawdziwym rynku. W tej konkretnej sytuacji najlepszym rozwiązaniem jest przyjęcie ceny otwarcia słupka. Po prostu zakładasz, że widząc otwarcie słupka poniżej linii stop od razu zamykasz transakcję.

Jest to przykład wzięty z prawdziwych systemów inwestycyjnych. A nie jest on jedyną możliwością zafałszowania ceny.

Tak naprawdę w kodzie AFL możesz podstawić dowolną cenę transakcji. Bez względu na to, czy była ona realnie do osiągnięcia. Bez względu nawet na to, czy taka cena występowała na rynku.

Amibroker stara się taki błąd wyeliminować i ogranicza cenę do takiej jaka w danym słupku była możliwa. Także jeżeli Ty przyjmiesz cenę spoza słupka, on do transakcji weźmie maksimum lub minimum. Jednak dalej jest to sytuacja nieprawdopodobna i wynik testu będzie nieprawdziwy.

Zobacz skrajny przykład kodu fałszującego cenę

Buy = (DayOfWeek()==1);
Sell = Ref(Buy,-1);
BuyPrice = Low;
SellPrice = Ref(Low,-1)*10;

Kod ten kupuje zawsze w cenie minimum w poniedziałek, a usiłuje sprzedać we wtorek w cenie 10 razy wyższej. Samo to, że Amibroker przyjmie przy sprzedaży cenę maksimum nie powoduje prawidłowego działania takiego systemu. Choćby dlatego, że cena minimum i maksimum słupka znana jest dopiero po fakcie, po zakończeniu tego słupka. Więc jest to cena nierealna dla prawdziwych transakcji.

Dlatego właśnie zawsze musisz przemyśleć realność stosowanych cen. Zawsze musisz też sprawdzić, czy były one znane w momencie zawierania transakcji.

---

Zbuduj swój własny, skuteczny system inwestycyjny.
Więcej dowiesz się na
http://zobacz.CzarodziejAFL.pl/

Akcje, Kontrakty FW20, DAX, S&P500, Forex.


Artykuł pochodzi z serwisu www.Artelis.pl

6 największych błędów przez które Twój system inwestycyjny w AFL będzie oszukiwał przy testach, a potem będzie tracił na giełdzie - błąd #1

6 największych błędów przez które Twój system inwestycyjny w AFL będzie oszukiwał przy testach, a potem będzie tracił na giełdzie - błąd #1

Autorem artykułu jest Rafał Wysocki



Język AFL w Amibrokerze jest potężnym narzędziem konstruowania systemów inwestycyjnych. Można też przeprowadzić bardzo rozbudowane testy zanim zainwestuje się prawdziwe pieniądze. Jednak kilka błędów może spowodować, że wszystkie testy będą przekłamane, a Twoja inwestycja będzie zagrożona. Zobacz jak się przed tym uchronić

Pierwszym błędem jest sięganie po dane przyszłe. Jest to błąd czasami bardzo trudny do znalezienia w kodzie, zwłaszcza gdy jest już zaszyty w bardziej złożonych grupach instrukcji. Więc lepiej od razu przyswoić sobie właściwe nawyki i go nie popełniać.

W Amibrokerze jest taka instrukcja AFL która służy do przesuwania danych. Jest to funkcja Ref ( Tablica, Przesunięcie ). Pozwala ona pobrać do obliczeń dane sprzed dowolnej liczby słupków. Jeżeli spojrzysz na dane w Amibrokerze, to np. zamknięcie najstarszego słupka jest określone jako Close[0], a najnowszego Close[x], gdzie x jest numerem ostatniego słupka.

Teraz wyobraź sobie. Gdy wywołujesz Ref ( Close, -2), sięgasz dwa słupki do tyłu. Czyli np. podczas obliczeń dla słupka 10 dane pobierane są ze słupka 10-2, czyli ze słupka 8. Ponieważ słupek 8 jest starszy, był wcześniej niż 10, tak jest ok. Bo przecież cała analiza techniczna polega na sięganiu w przeszłość i obliczaniu na podstawie tej przeszłości bieżącej sytuacji.

Jednak gdy użyjesz Ref( Close, 2), sięgasz do danych o dwa słupki nowszych. W teście jest to wykonalne. Na przykład licząc dzisiaj gdy to czytasz coś dla szczytu 29 października 2007, znasz notowania dwa słupki później, czyli 31 października. Ale potem w prawdziwym życiu taki system nie otrzyma danych z przyszłości. Dzisiaj nie wiesz co będzie za dwie sesje. Nie znasz przecież przyszłości i Amibroker też jej nie zna.

Prosty system dający niesamowite rezultaty w testach:

Buy = ( 1.02*Close < Ref(Close,1) );
Sell = ( Close > Ref( Close,1) );
Buy = ExRem( Buy,Sell );
Sell = ExRem( Sell,Buy );

Zrobi z 10 000 zł w 10 lat inwestując tylko na danych dziennych 47 552 245zł. Czterdzieści siedem milionów! To jest ponad 475 tysięcy %!

Ale ten system sięga po dane przyszłe. Na prawdziwym rynku nie ma w ogóle szans na zyski i jakiekolwiek podejmowanie decyzji.

Dlatego pilnuj, żeby zawsze parametr który w funkcji Ref() oznacza przesunięcie miał wartość ujemną. Tylko wtedy Twój system działa w realnym świecie.

---

Zbuduj swój własny, skuteczny system inwestycyjny.
Więcej dowiesz się na
http://zobacz.CzarodziejAFL.pl/

Akcje, Kontrakty FW20, DAX, S&P500, Forex.


Artykuł pochodzi z serwisu www.Artelis.pl

Jak zaprogramować stop który się nie cofa za pomocą Amibrokera i języka AFL

Jak zaprogramować stop który się nie cofa za pomocą Amibrokera i języka AFL

Autorem artykułu jest Rafał Wysocki



W Amibrokerze bardzo łatwo wylicza się podstawę do skutecznego zlecenia stop. Czy to odległość procentową, czy odległość liczoną ze zmienności. Jednak linia taka narysowana na wykresie będzie iść za wykresem w obydwu kierunkach. Poznaj prosty sposób aby przesuwała się tylko w jednym kierunku.

Podstawową zasadą większości zleceń stop jest podążanie za wykresem po rozpoczęciu inwestycji. Jednak podążanie to powinno odbywać się tylko w kierunku ochrony kapitału. Są przecież sytuacje, kiedy poziom stop wynikający z aktualnych obliczeń jest niższy niż wyliczony poprzednio. Są też takie momenty, kiedy rynek się cofa w kierunku Twojego ostatniego poziomu ochrony. W takich sytuacjach zlecenie stop powinno pozostawać na wartości do której już raz dotarło. Ono nie ma prawa się cofać.

Łatwo powiedzieć, ale początkującemu systemowcowi trudno to uzyskać. Istnieje jednak proste rozwiązanie - wystarczy zastosować zwykłą pętlę.

Jak zwykle w programowaniu taki sam efekt można uzyskać na kilka sposobów. To jest zaledwie jedno rozwiązanie. Drugim jest chociażby użycie instrukcji tablicowych. Kod będzie jeszcze krótszy, ale trudniejszy do zrozumienia. Dlatego poznaj najpierw sposób łatwiejszy.

W tym przykładzie zobaczysz jedynie rozwiązanie problemu cofania. Zakładam, że masz już policzoną odległość stop dla każdego słupka. Obliczenia umieść w tablicy stop1. Np. dla stopu na 5% inwestycji:

stop1 = High * 0.95;

Czas na właściwą linię stop. Umieść ją w zmiennej liniaStop. Dla pierwszego słupka oczywiście musisz przyjąć, że liniaStop jest na tym samym poziomie co stop1:

liniaStop[0] = stop1[0];

Ale co dalej?

Teraz należy przejrzeć wszystkie kolejne słupki od 1 do końca stosując następujące regułę:

Jeżeli stop1 przesuwa się dalej niż dotychczasowa liniaStop, to przesuń liniaStop na wartość taką jak stop1.
Jeżeli nie, oznacza to, że stop1 się cofnął lub nie zmienił. Użyj wtedy dotychczasowej wartości liniaStop.

Po zapisaniu jako AFL wygląda to tak:

for ( i =1; i {
if ( stop1[i] > liniaStop[i-1] ) liniaStop[i] = stop1[i];
else liniaStop[i] = liniaStop[i-1];

//*
}

Jednak brakuje jeszcze jednego ważnego elementu. Tak narysowany stop będzie szedł w górę wykresu również wtedy, gdy zostanie zrealizowany. Będzie się wspinał na wyższe i wciąż wyższe poziomy. Trzeba dodać jeszcze warunek zrealizowania stopu:

Gdy cena zamknięcia zejdzie poniżej liniaStop, pozwól na cofnięcie.

Uznajesz wtedy, że nastąpiło przecięcie i nastąpiła realizacja zlecenia ochronnego. Tym samym zakaz cofania stopu przestaje obowiązywać i przywracasz mu wartość obliczoną w stop1.

W kodzie w miejscu gwiazdki wystarczy dodać:

if ( Close[i] < liniaStop[i] ) liniaStop[i] = stop1[i];


To wszystko. Najprostszy stop masz już zaprogramowany i linia się nie cofa do momentu jego realizacji.

Oczywiście można teraz dodać instrukcje rysujące linie, dodać zaznaczanie sygnałów itd. Można też zastosować bardziej skomplikowane reguły wyliczania linii stop1, nie tylko jako odległość procentową. Jednak ten kod już jest podstawą do rozbudowy w kierunku dowolnie skomplikowanych systemów inwestycyjnych.

---

Zbuduj swój własny, skuteczny system inwestycyjny.
Więcej dowiesz się na http://zobacz.CzarodziejAFL.pl/

Akcje, Kontrakty FW20, DAX, S&P500, Forex.


Artykuł pochodzi z serwisu www.Artelis.pl

9 sekretów twórców najskuteczniejszych automatycznych systemów inwestycyjnych - sekret #9

9 sekretów twórców najskuteczniejszych automatycznych systemów inwestycyjnych - sekret #9

Autorem artykułu jest Rafał Wysocki



Czy wiesz, że na dobry automatyczny system inwestycyjny składa się wiele ważnych elementów? Niektóre z nich wydają się sprzeczne z logiką. Jednak początkujący twórca bez ich znajomości łatwo zacznie tracić pieniądze. Przeczytaj jak Ty możesz ustrzec się przed tymi błędami, a co może dać Ci przewagę.

Każdy rynek inwestycyjny ma swoją specyfikę. Inaczej zachowują się akcje, inaczej kontrakty. Inaczej zachowują się walory polskie, inaczej amerykańskie czy choćby niemieckie. Jeszcze inaczej zachowują się poszczególne pary walutowe na rynku forex.

Jednak jest pewna cecha wspólna której musisz poszukiwać. Jako początkujący (lub nawet średnio zaawansowany) systemowiec musisz szukać walorów które zachowują się trendowo. Nie chodzi tu jednak o ocenę wizualną na wykresach.

Podstawowa zasada brzmi: Buduj systemy inwestujące z trendem.

Być może dziwisz się właśnie. Przecież słyszy się o skalpowaniu rynku. O błyskawicznych wejściach i wyjściach w walor. O inwestowaniu nawet na ciasnych konsolidacjach.

Jednak prawdopodobnie to nie są techniki dla Ciebie. Metody inwestowania na krótkich ruchach najlepsze są dla dużych inwestorów. Wykładają się one bowiem najczęściej na prowizjach. Tak zwany "grubas", czy to fundusz, czy prywatny inwestor z dużym kapitałem ma zupełnie inne prowizje niż Ty. Albo ma je niższe, albo nie ma ich wcale. Płaci wtedy jedynie stały abonament. Może pozwolić sobie na łapanie kilku groszy, punktów czy pipsów.

Natomiast metody inwestowania z trendem generują mniej sygnałów przy większym zysku. Znacznie łatwiej jest skonstruować prawidłowo działający system który zarabia. Nie wymagają one pełnej automatyki zleceń. Pozwalają na wolniejsze reakcje, pozwalają też na inwestowanie przy większych interwałach.

To wszystko decyduje o tym, że od systemów z trendem powinieneś właśnie zaczynać.

Tworząc system musisz badać go dla konkretnego rynku lub nawet waloru. Np. wiele systemów sprawnie działających na kontraktach FW20 przestaje sobie radzić na DAX, S&P500, czy na Forex. To normalne. Oczywiście są systemy, które prawidłowo działają na wielu rynkach. Jeżeli taki uzyskasz - wspaniale! Jednak nie jest to celem nadrzędnym.

A co ze skalpowaniem rynku?

Możesz sięgnąć po nie gdy zdobędziesz już doświadczenie. Gdy staniesz się już zaawansowanym inwestorem poradzisz sobie również z tymi metodami. Będzie to wymagało inwestycji w rynki bardzo płynne. Najczęściej będzie to również wymagało, aby Twój system był w pełni automatyczny. Dojdą wtedy problemy z autonomicznym działaniem programów. Ale będzie to dużo prostszym wyzwaniem, gdy już będziesz mieć tworzenie systemów w małym palcu i inwestycje będziesz robić bez zbędnych emocji.

---

Zbuduj swój własny, skuteczny system inwestycyjny.
Więcej dowiesz się na
http://zobacz.CzarodziejAFL.pl/

Akcje, Kontrakty FW20, DAX, S&P500, Forex.


Artykuł pochodzi z serwisu www.Artelis.pl

9 sekretów twórców najskuteczniejszych automatycznych systemów inwestycyjnych - sekret #8

9 sekretów twórców najskuteczniejszych automatycznych systemów inwestycyjnych - sekret #8

Autorem artykułu jest Rafał Wysocki



Czy wiesz, że na dobry automatyczny system inwestycyjny składa się wiele ważnych elementów? Niektóre z nich wydają się sprzeczne z logiką. Jednak początkujący twórca bez ich znajomości łatwo zacznie tracić pieniądze. Przeczytaj jak Ty możesz ustrzec się przed tymi błędami, a co może dać Ci przewagę.

Każdy system należy testować na danych historycznych. To być może już wiesz. Wiele metod inwestycyjnych propagowanych w internecie tak naprawdę nie działa. Jedynie testy pozwolą Ci wyselekcjonować które z nich dadzą Ci dobry zarobek.

Jednak przy testowaniu można popełnić poważny błąd.

Najmniejszy problem z testem jest przy metodach bez parametrów. Wystarczy zastosować wtedy tak zwany backtest. Po prostu sprawdzasz wykres i znajdujesz wszystkie wejścia, gdzie metoda dawała sygnał wejścia, a gdzie wyjścia. Takimi metodami mogą być np. formacje świecowe, inwestowanie na luki czy formacje klasycznej analizy technicznej. Sygnały są ustawione sztywno i nie dobiera się żadnych współczynników.

Oczywiście łatwiej i szybciej jest zrobić taki test automatycznie. Jednak dla niektórych metod można zrobić go ręcznie, obserwując wykres.

Problem pojawia się dopiero, gdy trzeba dobierać parametry. Dominującym testem jest tutaj prosta optymalizacja. Pozwala ona zazwyczaj na pokazanie dużych zysków, gdybyś znał te najlepsze współczynniki jakiś czas temu. I to właśnie jest dużym błędem.

Przecież znajomość tego najlepiej zarabiającego parametru w przeszłości nie było możliwe. On jest możliwy do sprawdzenia dopiero dzisiaj. Z tego powodu właśnie większość systemów jedynie optymalizowanych radzi sobie słabo lub traci kapitał.

Użycie samej optymalizacji jest oczywiście dopuszczalne. Trzeba znać jej ograniczenia i stosować ją do odpowiednich rynków. Nadają się tu rynki wolne, np. rynek akcji obserwowany w interwale tygodniowym, ewentualnie maksymalnie dziennym. Powinna w wyniku testu wyjść duża stabilność parametrów. Powinna wyjść mała wrażliwość skuteczności systemu na ich zmianę. Wtedy nie zawsze jest sens stosować test, o którym Ci teraz opowiem

Czas teraz na prawdziwe życie. Testem, który symuluje prawdziwe inwestowanie jest walk-forward. Jest to test wszystkich testów.

Pomyśl jak inwestowanie wygląda w praktyce. Prawdziwy inwestor mając system stosuje zazwyczaj cyklicznie dwa kroki. Najpierw robi optymalizację systemu, a następnie inwestuje np. przez tydzień, miesiąc czy pół roku. Do tych inwestycji używa oczywiście wyników ostatniej optymalizacji. Następnie po założonym okresie ponownie optymalizuje swój system i ponownie dobiera parametry na przyszłość.

Tak wygląda prawdziwe używanie systemu i tak właśnie wygląda walk-forward. Komputer optymalizuje system na fragmencie danych. Następnie na danych późniejszych inwestuje (na danych nie znanych w tej optymalizacji). Po zadanym okresie znów zatrzymuje się i optymalizuje. I tak w kółko przechodzi całe dane historyczne.

Oczywiście pozostaje kwestia doboru ilości danych do optymalizacji, długości okresu inwestowania itd. To są decyzje które musi podjąć użytkownik systemu.

Jednak gdy ten ostatni test wykaże zyski - wystarczy zastosować te same okresy i zacząć zarabiać prawdziwe pieniądze.

---

Chcesz zbudować własny system inwestycyjny?
Zobacz więcej na http://zobacz.CzarodziejAFL.pl/

Akcje, Kontrakty FW20, DAX, S&P500, Forex.


Artykuł pochodzi z serwisu www.Artelis.pl