TSI (Trend / Sideways Identifier) - wskaźnik na użytek EA

O jezykach programowania w platformach i nie tylko.
Enigma71
Stały bywalec
Stały bywalec
Posty: 23
Rejestracja: 18 lip 2008, 23:04

TSI (Trend / Sideways Identifier) - wskaźnik na użytek EA

Nieprzeczytany post autor: Enigma71 »

Witajcie,
jako, że wiem że jest tu sporo niezłych programistów, chcę podzielić się z Wami inicjatywą, na której wszyscy możemy skorzystać - możemy zrobić coś w stylu open source'owego projektu, do którego każdy mógłby dodać swoje sugestie, i jeśli prowadziłyby do ulepszenia, byłyby włączane do kolejnej wersji wskaźnika, który nazwałem TSI. A więc do rzeczy:

Zapewne wielu z Was zauważyło, że jedną z największych zmor systemów transakcyjnych są okresy konsolidacji, generujące całą masę błędnych wejść na rynek, które to wejścia po zsumowaniu kosztują fortunę. Wiele z systemów, które nie są scalperami, bazuje na graniu razem z trendem, zaś konsolidacja zazwyczaj ostro takie systemy dobija albo co najmniej pogarsza wyraźnie ich rezultaty. Wiem, że problem był wałkowany często zarówno tutaj, jak i na zagranicznych forach typu Forex Factory czy Forex TSD.
Ja również zetknąłem się z tym problemem podczas pisania własnego EA i postanowiłem uzależnić decyzje o transakcjach podejmowane przez system od panującego na rynku trendu. W tym celu przebadałem wskaźniki najbardziej znane, takie jak ADX, StDev, ASI, SI, VHF, Chaikin's Volatility, ATR, jak i masę innych, znajdowanych na forach o Forexie przez google. Niestety, wszystkie te wskaźniki mają jedną kardynalną wadę, która na dobrą sprawę je dyskwalifikuje z użytku w EA w celu warunkowania podejmowania decyzji - wszystkie one są koszmarnie niejednoznaczne (czasami dynamicznej konsolidacji odpowiadaja wyższe wartości wskaźnika niż spokojnemu trendowi), nierzadko znacznie opóźnione, a ich skuteczność wykrywania trendów / konsolidacji jest wręcz mierna.
Idąc za ciosem postanowiłem zaproponować odmienne podejście, wychodząc z następujących założeń:

1) Uzależnienie wskaźnika rozpoznającego trend / konsolidację od długości okresu wydaje się dość nonsensowne -> prowadzi to do sytuacji, w której szybki i dynamiczny trend jest rozpoznawany zbyt późno, a na dodatek obciążony trendem o przeciwnym kierunku lub konsolidacją z przeszłych okresów, a zatem wskaźnik do rozpoznawania trendów powinien być niezależny od długości okresu (wręcz w ogóle nie powinno być takiego parametru).
2) Wartości wszystkich wskaźników, które badałem, opierają się w mniejszym lub większym stopniu na różnorakich przekształceniach matematycznych dokonywanych na cenach -> to wydaje mi sie największym nonsensem; spróbujcie odpowiedzieć sobie sami - czy kiedy patrzycie na ekran by określić trend na rynku, przeliczacie na 100 skomplikowanych sposobów ceny kolejnych świec, by odpowiedzieć sobie na pytanie, czy trend jest wzrostowy, spadkowy czy boczny? Odpowiedź jest oczywista: nie. Wystarczy, że widzicie, jak się mają ceny na obecnych świecach w stosunku do wcześniejszych i to pozwala Wam określić, co robi rynek - czy idzie w dół bądź w górę, czy też się konsoliduje. A zatem dobry wskaźnik do rozpoznawania konsolidacji również powinien implementować takie intuicyjne dla człowieka podejście.
3) niejednoznaczność lub/oraz duży rozrzut wskazywanych przez wskaźnik wartości bardzo utrudnia wiarygodny osąd sytuacji w kontekście systemu transakcyjnego. Płynie stąd wniosek (zwłaszcza w połączeniu z problemem z podpunktu 2), opisanym powyżej), że wygodnie by było, by wskaźnik nie pokazywał jakichś rozedrganych wartości skaczących po nieokreślonych przedziałach, lecz wręcz odzwierciedlał trzy dyskretne stany rynku - trend wzrostowy, trend spadkowy i trend boczny. Na wszystkich wymienionych przeze mnie wcześniej wskaźnikach odczytacie tysiące różnych wartości, a to bez sensu, bo stany rynku są tylko takie trzy, jak wymienione powyżej.

Aby ubrać wszystkie te wnioski i przemyślenia w jakąś konkretną postać, napisałem wskaźnik TSI (Trend / Sideways Identifier), który prezentuję poniżej w działaniu podłączony do wykresu GBPUSD,M1 (to niebieskie to średnia nie wchodząca w skład wskaźnika):

Obrazek

Wskaźnik ten, jak widać na załączonym obrazku, wyświetla trzy różne kolory histogramów w zależności od stanu rynku. Jeżeli na danej świecy rozpoznaje trend wzrostowy, to słupek jest zielony, jeśli trend boczny, to słupek jest żółty, zaś jeśli trend spadkowy, to słupek jest czerwony. Zasady określania, jaki jest trend na rynku, bazują na porównywaniu cen z obecnej świecy z cenami z poprzedniej świecy, z wykorzystaniem cen Close, Open, High oraz Low. Wynikają one w przystępny sposób z kodu, toteż po prostu zamieszczam kod wskaźnika w załączniku na dole postu, żeby każdy mógł sobie zarówno uruchomić ten wskaźnik w MT4, jak też i pozmieniać kod wedle własnego pomysłu. Jedynym parametrem, który zmienia użytkownik, jest parametr errorMargin określający, o ile pipsów może wypaść kurs poza granice obecnej konsolidacji, żeby uznać, iż wciąż jeszcze jest to konsolidacja a nie wybicie z niej.

Ktoś mógłby zarzucić, że za dużo razy pojawiają się ciągi słupków złożone na przemian z małej ilości zielonych i żółtych lub czerwonych i żółtych. Odwzorowuje to jednak zachowanie rynku - czasami wzrost/spadek jest zdecydowany i następuje przez ileś świec z rzędu (wtedy jest nieprzerwany szereg zielonych/czerwonych słupków), ale czasami jest to ruch w określonym kierunku przerywany co chwila okresami konsolidacji (i wtedy właśnie zazwyczaj mamy występujące na przemian zielony/żółty oraz czerwony/żółty przez czas trwania ruchu). Każdy zajmujący się rynkiem chyba zauważył, że w największym uproszczeniu właśnie takie trendy można spotkać - albo totalnie jednokierunkowe przez czas trwania, albo przerywane okresami konsolidacji. Nie zmienia to faktu, że oba te przypadki to określony trend spadkowy/wzrostowy, który można z wykorzystaniem TSI identyfikować.


Starałem się jak najbardziej zwięźle i przystępnie zaprezentować przyświecające mi przy tworzeniu wskaźnika koncepcje. Zapraszam serdecznie do konstruktywnej współpracy i sugestii, które pozwolą nam wspólnie rozwijać ten projekt, jeżeli spotka się z Waszym zainteresowaniem :) W załączniku pierwsza wersja wskaźnika, więc na pewno można w niej sporo usprawnić.

Pozdrawiam,

Enigma71

EDIT:
Właśnie zauważyłem, że wskaźnik popełnia błędy przy pomiarze w czasie rzeczywistym w sensie, że przeszłe wartości słupków ocenia dobrze, zaś te które pojawiły się po ostatnim włączeniu MT4 źle. Popracuję nad tym i zamieszczę poprawioną wersję 1.1 tu na forum.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

no na pierwszy rzut oka - ciekawy wskaznik....
zgadzam sie z toba, ze im mniej uspstrzony dziesiatkami wskaznikow (o czasem bardzo niejednoznacznych sygnalach) chart tym lepiej...

jednakze, jesli mialby ten system pokazywac nam momenty wejscia i wyjscia z rynku, to na podstawie analizy zalaczonego rysunku uzyskane wyniki wydaja sie raczej nieszczegolne.
Rozumiem, iz wejscie np. w pozycje dluga byloby po zamknieciu pierwszej swiecy z zielonym slupkiem, a zamkniecie jej np. po pierwszym zoltym (wejscie w konsolidacje) lub czerwonym (trend przeciwny).

Jednakze, byc moze w polaczeniu z innymi technikami - uzycie tego wskaznika bedzie mialo lepsze wyniki.... a moze na wyzszych TF ?

nie mam mozliwosci przetestowac go teraz, poniewaz siedze w pracy....

Na marginesie - wskaznik pokazujacy nam zaleznosc polozenia ostatniej swiecy wzgledem dowolnej poprzedniej daje nam wskazniki o nazwie Momentum... wrzucenie kilku o roznych interwalach daje calkiem ciekawe informacje....

pzdr,
CoVal

Enigma71
Stały bywalec
Stały bywalec
Posty: 23
Rejestracja: 18 lip 2008, 23:04

Nieprzeczytany post autor: Enigma71 »

CoVal: głównie myślałem o tym, żeby ten wskaźnik pozwalał powstrzymać system transakcyjny przed wchodzeniem na rynek, gdy system daje sygnał, ale wg TSI jest konsolidacja.

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

rozumiem. To moze byc ciekawe...
no wiec trzeba by go potestowac wraz z innym wskaznikami ....

a moglbys wrzucic zrzut ekranu na TF=1H z twoim wskaznikiem i pod spodem np. zwykly stoch na standardowych ustawieniach ?

sam nie moge - bo w pracy nie mam dostepu do MT4.....

z gory dziekuje,

cv

Enigma71
Stały bywalec
Stały bywalec
Posty: 23
Rejestracja: 18 lip 2008, 23:04

Nieprzeczytany post autor: Enigma71 »

Też mi się wydaje, że to może być ciekawe, ale tak jak pisałem to dopiero pierwsza wersja (z błędem, którego poszukam, jak znajdę trochę czasu dziś/jutro - weekend odpada, bo ten błąd pojawia się przy odbiorze notowań), więc na pewno można by sporo w niej usprawnić.

Co do Twojej prośby - poniżej TF 1H z TSI i Stochasticiem 8 3 3, jaki proponuje Joe Di Napoli.

Obrazek

Moja koncepcja łączenia TSI z innymi wskaźnikami jest głównie taka, żeby przy użyciu TSI filtrować - np. jeśli system daje sygnał na długą, to TSI musi być wyłącznie zielony, a jeśli na krótką, to wyłącznie czerwony - w innym przypadku system nie podejmie transakcji. Oczywiście nie trzeba czekać do zamknięcia słupka, jeśli ktoś nie chce, bo wartości są sprawdzane co tick.
Kolejny pomysł to stosowanie TSI do utrzymywania pozycji - utrzymuj krótką póki żółte/czerwone słupki, utrzymuj długą póki żółte/zielone słupki.

Awatar użytkownika
Pablo90
Pasjonat
Pasjonat
Posty: 1215
Rejestracja: 10 cze 2007, 15:36

Nieprzeczytany post autor: Pablo90 »

Ja jednak muszę odnieść się nieco krytycznie do tego wskaźnika. Z tego co wyczytałem w kodzie to taką samą ilości informacji jak z tego wskaźnika można odczytać z wykresu liniowego.
Enigma71 pisze:1) Uzależnienie wskaźnika rozpoznającego trend / konsolidację od długości okresu wydaje się dość nonsensowne n prowadzi to do sytuacji, w której szybki i dynamiczny trend jest rozpoznawany zbyt późno, a na dodatek obciążony trendem o przeciwnym kierunku lub konsolidacją z przeszłych okresów, a zatem wskaźnik do rozpoznawania trendów powinien być niezależny od długości okresu (wręcz w ogóle nie powinno być takiego parametru).
Ale przecież twój wskaźnik też jest oparty na stałym okresie - bada relacje pomiędzy zamknięciem świecy obecnej a zamknięciem świecy poprzedniej. Trend to seria dołków i szczytów i musi być uzgadniany na bazie dłuższego okresu, pojedyncze świece same w sobie nie mogą być uwzględniane, szczególnie na mniejszych TF, bo wprowadzają do wskaźnika za dużo szumu.

Enigma71 pisze:2) Wartości wszystkich wskaźników, które badałem, opierają się w mniejszym lub większym stopniu na różnorakich przekształceniach matematycznych dokonywanych na cenach n to wydaje mi sie największym nonsensem; spróbujcie odpowiedzieć sobie sami - czy kiedy patrzycie na ekran by określić trend na rynku, przeliczacie na 100 skomplikowanych sposobów ceny kolejnych świec, by odpowiedzieć sobie na pytanie, czy trend jest wzrostowy, spadkowy czy boczny? Odpowiedź jest oczywista: nie. Wystarczy, że widzicie, jak się mają ceny na obecnych świecach w stosunku do wcześniejszych i to pozwala Wam określić, co robi rynek - czy idzie w dół bądź w górę, czy też się konsoliduje. A zatem dobry wskaźnik do rozpoznawania konsolidacji również powinien implementować takie intuicyjne dla człowieka podejście.
Wstaw sobie do wykresu zwykłą MA z powiedzmy 20 okresów. Czy łatwiej określić trend na podstawie wykresu czy MA? Bo mi się wydaję, że na wygładzonych danych pracuje się o wiele lepiej, jeżeli chodzi o określanie trendu.

3) niejednoznaczność lub/oraz duży rozrzut wskazywanych przez wskaźnik wartości bardzo utrudnia wiarygodny osąd sytuacji w kontekście systemu transakcyjnego. Płynie stąd wniosek (zwłaszcza w połączeniu z problemem z podpunktu 2), opisanym powyżej), że wygodnie by było, by wskaźnik nie pokazywał jakichś rozedrganych wartości skaczących po nieokreślonych przedziałach, lecz wręcz odzwierciedlał trzy dyskretne stany rynku - trend wzrostowy, trend spadkowy i trend boczny. Na wszystkich wymienionych przeze mnie wcześniej wskaźnikach odczytacie tysiące różnych wartości, a to bez sensu, bo stany rynku są tylko takie trzy, jak wymienione powyżej.
Hmm. Ja zreguły kiedy mam na wykresie np. stoch, macd, rsi i momentum, to wszystkie wskaźniki zachowuję się bardzo podobnie, wskazują ten sam trend w podobnych momentach.

Myślę, że użycie tego wskaźnika miało by większy sens, gdyby był używany na TF wyższym od tego na którym zawierane są transakcje. Np. jeżeli zawierasz transakcje na H1 to puść go na H4 i zawieraj pozycje na H1 tylko zgodne z aktualnym stanem wskaźnika na H4.

Pozdrawiam i życzę powodzenia w dalszym ulepszaniu wskaźnika.

Enigma71
Stały bywalec
Stały bywalec
Posty: 23
Rejestracja: 18 lip 2008, 23:04

Nieprzeczytany post autor: Enigma71 »

Pablo90 pisze:Wstaw sobie do wykresu zwykłą MA z powiedzmy 20 okresów. Czy łatwiej określić trend na podstawie wykresu czy MA? Bo mi się wydaję, że na wygładzonych danych pracuje się o wiele lepiej, jeżeli chodzi o określanie trendu.
Zwróć uwagę, że jak weźmiesz średnią, to ona zawsze w konsolidacji rusza się w górę lub w dół. Mój wskaźnik pokazuje jeden stały stan. To po pierwsze. Po drugie, osobiście uważam że łatwiej zobaczyć konsolidacje na słupkach niż na średniej, zwłaszcza, że czasem konsolidacja może trwać bardzo krótko i na średniej tego po prostu nie złapiesz, chyba że zrobisz ją z małej liczby okresów, co spowoduje "rozedrganie".
Pablo90 pisze:Trend to seria dołków i szczytów i musi być uzgadniany na bazie dłuższego okresu, pojedyncze świece same w sobie nie mogą być uwzględniane, szczególnie na mniejszych TF, bo wprowadzają do wskaźnika za dużo szumu.
...a te dołki i szczyty wynikają z relacji cen świec - coraz wyższych/niższych zamknięc lub ekstremów. Nieuwzględnianie pojedynczych świec prowadzi do zazwyczaj do zbyt późnego reagowania na ruch, bo obciążenie z przeszłości jest za duże. Zgadam się, że warto wyeliminować ze wskaźnika część szumu - dlatego też napisałem, że to dopiero pierwsza wersja i wymaga pracy.
Pablo90 pisze:Z tego co wyczytałem w kodzie to taką samą ilości informacji jak z tego wskaźnika można odczytać z wykresu liniowego.
Tak jak napisałem w pierwszym poście, celem tego wskaźnika nie jest "odkrycie Ameryki", tylko zaimplementowanie w możliwie najprostszy sposób identyfikowania 3 podstawowych trendów rynkowych w taki sposób, jak robi to człowiek, aby móc to wygodnie wykorzystać w systemach transakcyjnych.

Enigma71
Stały bywalec
Stały bywalec
Posty: 23
Rejestracja: 18 lip 2008, 23:04

Nieprzeczytany post autor: Enigma71 »

OK, zgodnie z obietnicą wrzucam kolejną wersję wskaźnika, bo wreszcie miałem czas usiąść do kodu dzisiaj. Nazwa uległa zmianie i nie jest to już TSI (Trend / Sideways Identifier), tylko TRI (Trend / Range Identifier). Poprawiłem parę bugów, w tym związany z "machaniem ogonem" tj. zmienianiem wartości słupków wcześniejszych niż aktualny. Aktualnie pracuję nad innym bugami i kwestiami do poprawki, więc wrzucę kolejną wersję jak je poprawię.
To jest wciąż wczesna wersja więc nie zalecałbym używania wskaźnika do grania na żywej gotówce.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Enigma71
Stały bywalec
Stały bywalec
Posty: 23
Rejestracja: 18 lip 2008, 23:04

Nieprzeczytany post autor: Enigma71 »

Wrzucam już od razu TRI 1.3 z pominięciem TRI 1.2. Uporządkowałem kod, uprościłem logikę i wyeliminowałem bugi, które wytropiłem. Z racji niskiego zainteresowania chwilowo zawieszam rozwijanie go, bo w obecnej formie wystarczy mi do ukończenia mojego EA. Prawdopodobnie kiedyś jak będę miał więcej czasu niż obecnie postaram się go rozwinąć i udoskonalać.
Pozdrawiam :)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

nabiK
Bywalec
Bywalec
Posty: 10
Rejestracja: 23 lip 2010, 12:32

Nieprzeczytany post autor: nabiK »

Witam,

Nie wiem, czy wygrzebałem dobry temat, ale jakiego wskaźnika używacie do określenia czy teraz grać, czy nie grać (w uproszczeniu) - poza intuicją ofc.

Ten wskaźnik po przetestowaniu akurat jest dosyć słaby moim zdaniem (za duża zmienność).

Chodzi o to, żeby sobie nie zaprzątać głowy parami w konsolidacji. Czyli sygnał 0 - 1 : nie graj, graj. Na razie widzę, ze surowe odchylenie standardowe w dobrze dobranej konfiguracji się w miarę sprawdza (przynajmniej w moim - początkującego - odczuciu) - ale ciężko się je obserwuje i znajduje poziom odniesienia (dla każdej pary i czasookresu jest inny naturalnie)

Byłbym wdzięczny za jakieś ukierunkowanie.

ODPOWIEDZ