Zdarzenia słupków
Twórcy algorytmów często muszą odwoływać się do zdarzeń słupków, aby na czas realizować strategie handlowe w odpowiedzi na zaktualizowane ceny. API oferuje zdarzenia BarOpened i BarClosed dla twórców algorytmów, aby dostroić cBoty i wykorzystać możliwości w różnych punktach cyklu słupka.
Uwaga
Zdarzenia słupków mogą być obsługiwane tylko podczas kodowania cBotów. Wskaźniki zamiast tego mają metodę Calculate(), która jest wywoływana przy każdym tiku.
W tym przewodniku wyjaśniamy różnicę między metodami OnBar() i OnBarClosed() oraz przedstawiamy kilka przypadków użycia.
Zdarzenia słupków w jedną minutę!
- Metoda
OnBar()jest wyzwalana za każdym razem, gdy nowy słupek jest rysowany na wykresie, do którego dodano instancję. Jest wywoływana dla nowo utworzonego słupka. - Procedura obsługi zdarzenia
OnBarClosed()jest również wyzwalana przy każdym nowym słupku. Jednak jest wywoływana dla ostatniego zamkniętego (czyli poprzedniego w stosunku do bieżącego) słupka. - Odwołując się do prawidłowego zdarzenia słupka, zwiększasz dokładność swojej analizy technicznej i wybierasz odpowiedni czas dla działań algorytmu.
- Obsługiwane typy wykresów dla
BarOpenediBarClosedto słupki czasowe, świece, tiki, Renko, zakres i wykresy Heikin Ashi.
Użyj metody OnBar()
Wystąpienie zdarzenia BarOpened zależy od harmonogramu symbolu i częstotliwości napływających cen. Zazwyczaj użytkownicy platformy mogą dostosować wystąpienie BarClosed za pomocą ustawień interwału czasowego wykresu.
Uwaga
Metoda OnBar() może być wywoływana tak często, jak pozwalają na to ustawienia interwału czasowego wykresu. Po zamknięciu słupka OnBar() nie zostanie wyzwolona, dopóki nie nadejdzie następny tik, który logicznie wyzwala utworzenie nowego słupka.
Metoda OnBar() jest wywoływana jednocześnie z każdym nowym słupkiem rysowanym na wykresie, do którego dołączony jest algorytm. W rezultacie procedura obsługi OnBar() jest idealnym miejscem do zdefiniowania niestandardowej logiki handlowej, którą Twój cBot powinien regularnie powtarzać.
W edytorze kodu możesz określić procedurę obsługi OnBar() w następujący sposób:
override void OnBar()
Użyj metody OnBarClosed()
Algo API umożliwia również wykonywanie logiki dla ostatniego zamkniętego słupka, co, w zależności od strategii, którą chcesz wdrożyć, może być wygodniejszą i dokładniejszą alternatywą dla obsługi zdarzenia BarOpened. Przy otwarciu słupka nowy słupek pojawia się jako (świeca doji) i nie zawiera kompletnych danych do analizy technicznej.
Zdarzenie BarClosed jest aliasem zdarzenia BarOpened, co oznacza, że występuje tylko w przypadku, gdy zdarzenie BarOpened ma miejsce. Na przykład zdarzenie BarClosed dla ostatniego słupka w piątek wystąpi wraz z pierwszym otwartym słupkiem w poniedziałek, pod warunkiem że symbol nie jest przedmiotem obrotu w weekendy.
Uwaga
Metoda OnBarClosed() nie zostanie wywołana, dopóki nie nadejdzie tik, aby utworzyć nowy słupek.
Procedurę obsługi zdarzenia OnBarClosed() można zadeklarować w następujący sposób:
override void OnBarClosed()
W treści metody OnBarClosed() możesz określić, jakie powiązane działania Twoje cBoty będą wykonywać, gdy zdarzenie BarClosed zostanie wyzwolone (na przykład wykonać zlecenie, nakreślić formację, narysować wizualizacje analizy technicznej itp.).
Gdy dostęp do kolekcji Bars następuje w tym procedurze obsługi zdarzeń, nie zawiera ona bieżącego słupka na żywo, podczas gdy inne kolekcje (takie jak Positions, Symbols itp.) zawierają rzeczywiste dane.
Procedury obsługi zdarzeń OnBar() i OnBarClosed() działają zgodnie z przeznaczeniem w backtestingu i optymalizacji. Obie metody mogą być używane na różnych typach wykresów, w tym na słupkach czasowych, świecowych, tickowych, Renko, zakresowych i Heikin Ashi.
Tworzenie przykładowych cBotów
Poniższy przykładowy cBot składa zlecenie rynkowe, gdy otwierany jest co trzeci słupek na wykresie EURCHF.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |
Ponieważ cBot został uruchomiony na wykresie m1, przybliżony odstęp czasu między wykonanymi zleceniami rynkowymi wynosi trzy minuty.

Poniżej znajduje się przykład cBota z zagnieżdżonym wskaźnikiem Directional Movement System (DMS), który wyświetla (Uptrend!) jeśli wartość DI+ (zielona linia) przekracza wartość DI- (czerwona linia).

Gdy DI- jest większe niż DI+, (Downtrend!) jest wyświetlane w zdarzeniu BarClosed.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
Podsumowanie
Różnorodność zdarzeń słupkowych istniejących w Algo API pozwala programistom algorytmów wybierać dokładny czas dla wywoływanych metod. Metoda OnBar() może być wywoływana z różną częstotliwością w zależności od harmonogramu symbolu i ustawień okresu wykresu, co również zwiększa funkcjonalność cBotów. Metoda OnBarClosed() jest wygodnym aliasem OnBar() do pracy ze wskaźnikami.