sie 082012
 

Nie jestem specjalistą w dziedzinie tworzenia automatycznych systemów transakcyjnych (AST). Będąc uczestnikiem społeczności inwestorów, zauważyłem, że zwolennicy AST pomijają zdobywanie wiedzy na temat rynku i od razu przechodzą do tworzenia AST, którego skuteczność weryfikują na danych historycznych. IMHO jest to niewłaściwe podejście. Zawsze wydawało mi się, że najpierw trzeba poznać reguły, według których kształtują się ceny na rynku i dopiero wtedy przekształcić je w system automatyzujący zdobytą wiedzę.

Dlatego w Another Charts w pierwszej kolejności rozwijam narzędzia mogące pomóc zrozumieć rynek. Spójrzcie chociażby na funkcję tangens zaprezentowaną w jednym z poprzednich wpisów, jak dokładnie kolejne cykle funkcji wskazują punkty zwrotne. To jest coś, jakiś konkret, który już można zautomatyzować. Dopiero takie narzędzia dają nam wiedzę potrzebną do tworzenia skutecznych AST. W tym wpisie chciałbym jednak skupić się na problemie czysto mechanicznym i wspólnym dla wszystkich AST i wskaźników analizy technicznej (WAT).

Jak już wspomniałem, specjalista AST ze mnie żaden, ale kilka lat spędziłem nad kodem Another Charts i co nieco o bebechach tego typu programów mogę powiedzieć. Moim zdaniem brak skuteczności AST może być spowodowany w dużej mierze sposobem uporządkowania notowań, na których AST dokonuje obliczeń. W każdym programie umożliwiającym tworzenie AST, notowania przechowywane są w tablicach. Oznacza to, że bez względu na datę notowania, kolejne notowania umieszczane są w kolejnych komórkach tablicy. Konkretne notowanie pobiera się na podstawie numeru indeksu tablicy. Jest to równoznaczne z usuwaniem czasu nietransakcyjnego z wykresów. Czyli de facto programy do tworzenia AST przetwarzają notowania w oderwaniu od dat tych notowań.

Jak bardzo takie rozwiązanie jest szkodliwe i nieodpowiednie, chciałbym pokazać na przykładzie dwóch wykresów intra WIG20, jeden z czasem nietransakcyjnym i drugi bez. Na początek wykres z czasem nietransakcyjnym:

Na wykres naniesione zostały zniesienia czasowe (dlaczego nie ma tu zniesień Fibonacciego, dowiesz się ze wcześniejszego wpisu). Zniesienie 350% bardzo ładnie wskazuje górkę, a zniesienia 400% i 500% to już idealnie pokrywają się z dołkami. Zniesienia 400% i 500% w przybliżeniu:

A teraz wykres bez czasu nietransakcyjnego, z analogicznymi zniesieniami czasowymi:

Jak widać, w przypadku wykresu bez czasu nietransakcyjnego wystąpiło kompletne rozjechanie zniesień z punktami zwrotnymi. Wykres porównawczy zniesień czasowych na obu wykresach:

Zaprezentowałem powyższe porównanie, aby pokazać, jak bardzo ważny jest czas notowania. Nie można dokonywać analizy notowań w oderwaniu od czasu, jak to czynią programy z możliwością tworzenia AST. Jednostka w postaci indeksu tablicy jest czysto abstrakcyjna w porównaniu z jednostką czasu, naturalną dla typu danych, jakimi są notowania giełdowe. Dlatego w Another Charts, wykresy wyświetlane są tylko i wyłącznie z czasem nietransakcyjnym i w przeciwieństwie do innych programów, notowania nie są umieszczane w tablicach, lecz w strukturze drzewiastej.

W strukturze drzewiastej notowania przyporządkowywane są dacie. To na podstawie daty pobiera się poszczególne notowania ze struktury drzewiastej. Będzie to miało znaczący wpływ przy wprowadzaniu WAT i AST do Another Charts, ponieważ te nie będą bazować na indeksach tablicy, jak w innych programach, lecz właśnie na datach. Będzie to iście rewolucyjna zmiana, ale jestem przekonany, że na lepsze.

Notowania giełdowe należy traktować jako funkcję czasu (podejście Another Charts, z uwzględnieniem czasu nietransakcyjnego), a nie jako funkcję abstrakcyjnego indeksu tablicy (podejście każdego innego programu do analizy notowań, z zupełnym oderwaniem od czasu). Przykład ze zniesieniami czasowymi na notowaniach intra to potwierdza.

Biorąc pod uwagę powyższy przykład, AST bazujące na indeksach tablicy (oderwane od czasu), najprawdopodobniej prowadzą do wystarczająco niedokładnych wyników, by stworzyć skuteczny AST, nawet jeśli jego założenia są słuszne.

Sorry, the comment form is closed at this time.