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

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

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):

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

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.