Ciąg dalszy analizy przedstawionej we wpisie AT: FW20WS. Krzywe trygonometryczne wyrysowane 7 miesięcy temu pokazały swoją wartość.
]]>Arcus secans
Arcus sinus
Arcus tangens
]]>Wykorzystane narzędzia: Tangentoid, Sinusoid, Elliptic retracements.
]]>Program testowałem w Windows XP, Windows Vista, Linux i Solaris 11. Nie mam dostępu do Mac OS X, więc nie jestem w stanie zapewnić, że program będzie działał w tym systemie operacyjnym. W razie jakichkolwiek problemów proszę pisać na forum. W Windows Vista, przy domyślnym Look & Feel, są problemy z maksymalizacją i minimalizacją okien wykresów. Gdy próbuje się zmaksymalizować lub zminimalizować jedno okno, pozostałe okna wykresów także są analogicznie zmieniane. W Windows XP, w oknach ustawień mogą być źle rysowane elementy combo box. W obu przypadkach zalecam wejście w menu File–>Settings i zmianę ustawienia „Look and feel” na „NIMBUS” (ładniejsze) lub „METAL” (wydajniejsze).
Jednocześnie upubliczniłem API do programu, przy pomocy którego można stworzyć jedną z siedmiu rodzajów wtyczek. W tej chwili API jest wydane na licencji GPLv3 i prawie w ogóle nie jest udokumentowane. Dokumentację kodu napiszę dopiero dla wersji stabilnej. Za to dostępne są źródła i w razie pytań służę pomocą na forum.
API można pobrać ze strony http://sourceforge.net/projects/ac-api/ lub z repozytorium Maven:
URL: http://mvn.tomaszpretki.pl/
Index URL: http://mvn.tomaszpretki.pl/.index
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.
]]>Powyższy wykres mówi wszystko. Zniesienia Fibonacciego są tylko drobną częścią poziomów zniesień, które naprawdę wskazują punkty zwrotne. Mało tego, zniesienia ćwiartkowe są dokładniejsze.
M. in. po to właśnie napisałem Another Charts, aby kwestionować prawdy objawione. Podobną religią jest Teoria Fal Elliotta, ale o tym kiedy indziej…
]]>Z przyczyn prawnych i technicznych, stworzenie takiej licencji prawdopodobnie jest niemożliwe. A nawet jeśli to i tak do tej pory nie znalazłem w Polsce kancelarii prawnej, która byłaby w stanie taką licencję napisać.
Dlatego postanowiłem, że wszystkie rodzaje API będą docelowo udostępnione na licencji Apache. Implementacje Data Backend API i Data Source API także będą dostępne na tej licencji. Implementacje pozostałych rodzajów API będą integralną częścią programu, tj. będą podlegały EULA. Kodu jakiegokolwiek rodzaju API, jak i implementacji nie upublicznię, jednakże dokumentacja oczywiście będzie dostępna.
Licencja Apache pozwoli deweloperom na czerpanie korzyści z napisanych przez siebie wtyczek/programów. Jednak to czy w ogóle udostępnię API na licencji Apache, uzależnię od powodzenia przedsięwzięcia. Jeśli nie będę miał klientów, to muszę zabezpieczyć swoje prawa dla innych sposobów spieniężenia programu.
]]>Nieustannie rozwijam program. W ciągu ostatnich trzech miesięcy wydałem drugą wersję biblioteki Util, na której opiera się cały program. Wydanie, nowej, stabilnej i udokumentowanej wersji tej biblioteki było konieczne, jeśli mam udostępnić API do tworzenia wtyczek. Podobnie sprawa ma się w przypadku modułu do zestandaryzowanej konfiguracji wtyczek Opal. Udało mi się doprowadzić do funkcjonalności tzw. properties’ binding, czyli związywanie ustawień:
.
Ostatnie dwa tygodnie poświęciłem na dopracowanie efektywności rysowania wszystkich narzędzi graficznych. Postanowiłem także wprowadzić kilka zmian w rodzajach dostępnych tego typu narzędzi. Pomyślałem, że dobrze by było mieć implementacje wszystkich krzywych stożkowych. I tak oto wykonałem zniesienia eliptyczne/hiperboliczne:
a także zniesienia paraboliczne:
.
Zniesienia kołowe zastąpiłem zwykłym okręgiem do zaznaczania fragmentu wykresu, gdyż zniesienia eliptyczne są dokładniejsze. Oprócz tego dodałem zwykły prostokąt do zaznaczania.
W tej chwili pracuję nad narzędziem rysującym funkcję tangens (Tangensoid Study). Funkcja rysowana jest przez dwa punkty (-1/4π; -1) i (1/4π; 1). Tangens zapowiada się bardziej obiecująco niż sinus (Cycle Study), którego nazwę docelowo zmienię na Sinusoid. Zresztą zobaczcie sami:
Bez wątpliwości, Another Charts będzie najlepszym programem do analizy technicznej na rynku. Oczywiście w pierwszej wersji nie będzie wskaźników i systemów transakcyjnych, ale to i tak mała strata, o czym może napiszę w jednym z kolejnych wpisów.
]]>