Tygodniowy separator sesji Pine Script

Korzystając z platformy TradingView warto wyposażyć się w separator sesji poprawiający czytelność wykresu cenowego. Poniżej przedstawiam kod za pomocą, którego w bardzo prosty sposób będziesz w stanie na niższych interwałach czasowych wyświetlić początek i koniec tygodnia. Takie rozwiązanie jest bardzo pomocne w momencie gdy na wyższym interwale poszukujemy setup’u a na niższym dokonujemy wejścia. Podzielenie wykresu cenowego na mniejsze części jest bardzo pomocne. Wprowadza to porządek i w prosty sposób wizualizuje w jakim kierunku pozostali uczestnicy rynku zmierzali w danym tygodniu.

Przygotowanie separatora sesji w języku Pine Script

Na samym początku musimy wybrać wersję którą będziemy się posługiwać, oraz za pomocą definicji overlay = true wskazujemy miejsce w którym wskaźnik będzie miał się wyświetlać. Jeżeli dalibyśmy false wskaźnik wyświetli się poniżej wykresu cenowego a tego w przypadku separatora sesji nie chcemy.

// @version=5
indicator(" nasza nazwa wskaźnika" , overlay = true)
Pine Script

Dobrą praktyką jest wstawienie w kolejnym bloku kodu naszych danych wejściowych w tym miejscu definiujemy strefę czasową. Za pomocą input wprowadzamy wszystkie zmienne które będziemy mogli dalej wybierać z panelu konfiguracyjnego podczas używania naszego wskaźnika.

// stworzenie danych wejściowych
timeZone = input.string("UTC", title="Time Zone")
Pine Script

Kolejna część kodu stanowi blok w którym definiujemy logikę naszego wskaźnika

IsSessionStart(sessionTime, sessionTimeZone=syminfo.timezone) =>
    inSess = not na(time(timeframe.period, sessionTime, sessionTimeZone))
    inSess and not inSess[1]
// wprowadzamy okres czasu na podstawie którego nasz wskaźnik będzie wyświetlał pionowe linie
isFirstOfSession = IsSessionStart('0000-2200', timeZone)
Pine Script

Nasz separator sesji już prawie ukończony. Zazwyczaj na samym końcu bloku kodu używa się narzędzi. pozwalających wizualizować przygotowane wskaźniki. W przypadku języka programowego Pine script niestety celem narysowania linii musimy wersji 5 posłużyć się warunkiem jeżeli:

// Create a vertical line on the bar after the session ends
if isFirstOfSession
    line.new(x1=bar_index, y1=high, x2=bar_index, y2=low,
         extend=extend.both, color=color.gray, width=1)
Pine Script

Ostatni blok kodu oczywiście możemy modyfikować do woli w zależności od naszych potrzeb. Jeżeli zależy Ci na zmianie koloru lub na zmianie grubości linii wystarczy, że wprowadzisz zamiast słowa “gray” inny kolor zapisany w języku angielskim na którym Ci zależy, a do wartości “width” przypiszesz liczbę większą niż jeden. Pozostałe informacje zawarte w warunku określają naszą linię. Między innymi na której świecy będzie rysowana pionowa linia oraz parametr “extend” rozciągający naszą linię w obie strony ekranu.

Gotowy separator sesji Pine Script

Wygląda na to że wszystko zadziałało poprawnie nasz wykres cenowy został podzielony na tygodnie. Każda pionowa linia wyświetla się w czasie UTC o godzinie 24 informując przy tym samym o rozpoczęciu nowego tygodnia.

Ostatnim krokiem jest połączenie wszystkich naszych przygotowanych bloków w jedną całość i sprawdzenie efektu naszej pracy.

//@version=5
indicator(title="Start of session example", overlay=true)
// Create inputs
timeZone = input.string("UTC", title="Time Zone")
IsSessionStart(sessionTime, sessionTimeZone=syminfo.timezone) =>
    inSess = not na(time(timeframe.period, sessionTime, sessionTimeZone))
    inSess and not inSess[1]
isFirstOfSession = IsSessionStart('0000-2200', timeZone)
// Create a vertical line on the bar after the session ends
if isFirstOfSession
    line.new(x1=bar_index, y1=high, x2=bar_index, y2=low, 
         extend=extend.both, color=color.gray, width=2)
Pine Script

Więcej podobnych treści i autorskich wskaźników znajdziesz: tutaj