Łączone korzystanie z programów Mówiono wcześniej, że zgodnie z zasadami MQL4, funkcje handlu nie mogą być używane w niestandardowych wskaźnikach, dlatego do automatycznego handlu należy stosować Expert Advisors lub skrypty. Jednak technologia oszczędzania zasobów używana do obliczeń wskaźników (patrz Tworzenie wskaźników niestandardowych) jest szeroko stosowana podczas tworzenia programów handlowych. W większości przypadków w niestandardowych wskaźnikach można skutecznie obliczyć wartości elementów tablicy wskaźnikowej niezbędne do sformułowania kryteriów handlowych i podejmowania decyzji handlowych w Expert Advisors. Obliczenia dokonane technicznie we wskaźnikach własnych mogą również zostać wdrożone w Expert Advisors, ale może to prowadzić do powielania obliczeń w różnych programach aplikacji i do nieuzasadnionego marnowania zasobów, aw niektórych przypadkach (w przypadku przeprowadzania długich obliczeń wymagających dużej ilości zasobów) - do decyzja handlowa podjęta z opóźnieniem. W przypadkach, gdy konieczne jest użycie wyników obliczeń niestandardowych wskaźników w Expert Advisor lub skrypcie, można użyć funkcji iCustom (). Funkcja iCustom () Obliczanie danego wskaźnika niestandardowego. Indywidualny wskaźnik musi zostać skompilowany (plik. ex4) i znajdować się w katalogu Terminalcatalogueexpertsindators. symbol - nazwa symbolu zabezpieczenia, na danych, których wskaźnik zostanie obliczony. NULL wskazuje bieżący symbol. ramy czasowe - okres. Może być jednym z okresów wykresów. 0 oznacza okres bieżącej tabeli. name - nazwa wskaźnika niestandardowego. . - Lista parametrów (w razie potrzeby). Przekazywane parametry muszą odpowiadać kolejności deklarowania i rodzajowi zmiennych zewnętrznych wskaźnika niestandardowego. mode - Indeks linii wskaźnika. Może mieć od - do 7 i musi odpowiadać indeksowi używanemu przez jedną z funkcji SetIndexBar. shift - Indeks uzyskanej wartości z bufora wskaźnika (przesunięcie do tyłu względem bieżącego paska o określoną liczbę słupków). Rozważmy, jak iCustom () może być używany w praktyce. Rozwiążmy następujący problem: Problem 30. Strategia handlowa opiera się na danych niestandardowego wskaźnika rocseparate. mq4. Jeśli linia ROC w bieżącym okresie czasu (pomarańczowy) przekracza wygładzoną linię średnich stóp (grubą czerwień) poniżej pewnego poziomu od dołu do góry, jest to istotne kryterium zakupu (otwórz Kupuj i zamknij sprzedaż). Jeśli istnieją przeciwne warunki, należy uznać to za odpowiednie kryterium sprzedaży. Napisz kod implementujący tę strategię. Zasada konstrukcji niestandardowego wskaźnika rocseparate. mq4 jest opisana szczegółowo w sekcji Custom Indicator ROC (Price Rate of Change). Na fig. 131 zilustrowano dwa punkty, w których linia ROC w bieżącym okresie czasu (M15) przecina wygładzoną szybkość zmiany linii. W punkcie A pomarańczowa linia przecina czerwony od dołu w górę, a miejsce pierwszego przecięcia znajduje się poniżej poziomu -0,001. W punkcie B pomarańczowa linia przecina czerwoną w kierunku do dołu, a punkt przecięcia znajduje się powyżej poziomu 0,001. Fakt tego przekroczenia musi zostać wykryty w Expert Advisor i być traktowany jako sygnał do zakupu (punkt A - close Sell i otwórz Buy) lub sprzedać (point B - close Buy i open Sell). Rys. 131. Przekroczenie niestandardowych linii wskaźnika jest uważane za kryterium handlowe. Przy rozwiązywaniu takich problemów można skorzystać z gotowego Expert Advisor, zmieniając w nim kolejność kryteriów handlu kalkulacyjnego. W tym przypadku możemy wziąć pod uwagę Expert Advisor tradingexpert. mq4 opisany w sekcji Simple Expert Advisor. Obliczane przez EA shared. mq4 kryteria handlowe na podstawie niestandardowego wskaźnika będą wyglądały następująco: Przeanalizujmy, jakie zmiany wprowadzono w kodzie źródłowym (tradingexpert. mq4). Główna część Expert Advisor stosowana jako podstawowa nie uległa zmianie. Zmiany wprowadzono w dwóch blokach - blok 1-2- i blok 5-6. W bloku 5-6 obliczane są kryteria handlowe. W opisywanym EA strategia handlowa oparta jest na dwóch kryteriach handlowych - kryterium otwarcia Buy i kryterium otwarcia Sell. Strategia stosowana w Expert Advisor pozwala na obecność tylko jednego otwartego zlecenia rynkowego, zamówienia oczekujące są niedozwolone. Strategia zakłada również zamknięcie przeciwnej kolejności, gdy kryterium otwarcia uruchamia się na przykład, jeśli kryterium otwarcia zamówienia zakupu jest istotne, oznacza to, że zlecenie Sell musi zostać zamknięte. W przypadku użycia w EA shared. mq4 wyników obliczeń wykonanych w niestandardowym wskaźniku rocseparate. mq4, należy wykonać funkcję iCustom (): w tym przypadku formalne parametry określone w wywołaniu iCustom () oznaczają: NULL - obliczenia w tym wskaźniku są następujące: w oparciu o dane aktualnego zabezpieczenia w tym przypadku EA jest dołączany do okna EURUSD, więc będą wykorzystywane dane EURUSD (patrz Rys. 131) 0 - w obliczeniach wykorzystywane są dane z bieżącego przedziału czasowego w bieżącym okresie czasu M15, więc dane odpowiadające M15 będą użyte jako quotropseparatequot - name wskaźnika niestandardowego, w którym będą wykonane obliczenia. H, P, B, A - lista regulowanych parametrów. W tym przypadku niestandardowy wskaźnik rocseparate. mq4 ma regulowane parametry (blok 2-3 kodu rocseparate. mq4). Aby użytkownik mógł ustawić wartości tych parametrów z EA, są one określone na liście przekazanych parametrów funkcji iCustom (). W programie Expert Advisor wartości tych parametrów mogą różnić się od wartości określonych w tym wskaźniku. W takim przypadku podczas obliczeń we wskaźniku zostaną zastosowane te przekazane wartości. Parametry te oznaczają: H - liczba słupków w historii obliczeń P - okres obliczeń MA B - liczba słupków do obliczenia stawki A - liczba słupków do wygładzenia. (znaczenie tych parametrów wyjaśniono szczegółowo w sekcji Custom Indicator ROC (Price Rate of Change) 1 (5) - linia indeksu wskaźnika. W niestandardowym wskaźniku stosowane są tablice wskaźnika rocseparate. mq4 6. Linia ROC w aktualny przedział czasowy (pomarańczowy) jest konstruowany na podstawie wartości Linii1, dla której używany jest bufor o indeksie 1. Wygładzona linia średniej szybkości jest oparta na wartościach elementów tablicy Line5, indeks używanego bufora wynosi 5. 0 - indeks wartości uzyskane z bufora wskaźnika (przesunięcie w stosunku do bieżącego słupka o określoną liczbę okresów) W tym przypadku używane są wartości linii wskaźnika na pasku zerowym, dlatego jest określony indeks 0. Aby użytkownik mógł zmieniać ręcznie parametry regulacyjne w EA, zmienne zewnętrzne są określone w bloku 1a-1b (Expert Advisor) W bloku 5-5a wartości tych parametrów są przypisane do innych zmiennych o krótszych nazwach - odbywa się to dla wygody prezentacja kodu w bloku 5a - 5b. W ten sposób użytkownik może określić parametry shared. mq4, za pomocą których zostaną przeprowadzone obliczenia w niestandardowym wskaźniku rocseparate. mq4. Po wykonaniu funkcja iCustom () zwróci wartość odpowiadającą określonej wartości elementu określonej tablicy wskaźników obliczonej w indykatorze przy użyciu określonych wartości regulowanych parametrów. Podczas praktycznego działania wygodnie jest zobaczyć w linii okna bezpieczeństwa wskaźnik, którego elementy tablicy są używane w Expert Advisor (patrz Rys. 131). Jednocześnie wykonanie iCustom () nie jest związane z obecnością wskaźnika w oknie bezpieczeństwa, a także z wartościami jego regulowanych parametrów. Wykonywanie iCustom () nie wymaga dołączenia odpowiedniego wskaźnika do okna bezpieczeństwa. Jak również wywołanie funkcji iCustom () z dowolnego programu aplikacji nie powoduje dołączenia odpowiedniego wskaźnika do okna zabezpieczeń. Dołączenie wskaźnika technicznego do okna bezpieczeństwa również nie prowadzi do wywołania programu iCustom w żadnym programie aplikacji. Kryteria handlu w EA (blok 5-6) są obliczane na podstawie wartości elementów tablicy uzyskanych za pomocą funkcji iCustom (). Na przykład kryterium otwarcia Buy and closing Sell obliczane jest w następujący sposób: Jeżeli ostatnia znana wartość wygładzonej linii średniej stawki (L5) jest mniejsza niż określony poziom (wartość parametru zmiennego Level 0.001) i ostatnia znana wartość linii ROC w bieżącym okresie czasu (L1) jest większy niż wygładzona średnia linia stawki (L5), kryterium otwierania zlecenia kupna i zamykania zlecenia sprzedaży jest uważane za istotne. W celu potwierdzenia trafności przeciwnych kryteriów stosuje się warunki odzwierciedlające. Kryteria transakcji przyjęte w tym przykładzie są wykorzystywane wyłącznie w celach edukacyjnych i nie mogą być traktowane jako wskazówka przy handlu na rachunku rzeczywistym. Średni ruchomy Wskaźnik średniej ruchomej pokazuje średnią cenę instrumentu za dany okres. Kiedy oblicza się średnią ruchomą, średnia cena instrumentu za ten okres jest równa. Wraz ze zmianą ceny, średnia krocząca albo się zwiększa, albo maleje. Istnieją cztery różne typy średnich kroczących: proste (określane również jako arytmetyczne), wykładnicze. Wygładzone i ważone. Średnia ruchoma może być obliczana dla dowolnego sekwencyjnego zestawu danych, w tym cen otwarcia i zamknięcia, najwyższych i najniższych cen, wolumenu obrotu lub innych wskaźników. Często zdarza się, że stosowane są średnie z podwójnego ruchu. Jedyną rzeczą, w której średnie ruchome różnych typów różnią się znacznie od siebie, jest sytuacja, w której współczynniki masy, które są przypisane do najnowszych danych, są różne. W przypadku, gdy mówimy o prostej średniej ruchomej. wszystkie ceny danego okresu są równe pod względem wartości. Wykładnicza średnia ruchoma i liniowa średnia ważona przenoszą większą wartość do najnowszych cen. Najczęstszym sposobem interpretowania średniej ceny ruchomej jest porównanie jej dynamiki z działaniem ceny. Kiedy cena instrumentu wzrośnie powyżej średniej kroczącej, pojawi się sygnał kupna, jeśli cena spadnie poniżej średniej kroczącej, mamy sygnał sprzedaży. Ten system handlu, oparty na średniej ruchomej, nie jest zaprojektowany, aby zapewnić wejście na rynek w jego najniższym punkcie, a jego wyjście na prawo. Pozwala to działać zgodnie z następującym trendem: kupić wkrótce po tym, jak ceny osiągną dno i sprzedać wkrótce po tym, jak ceny osiągną swój szczyt. Średnie kroczące można również zastosować do wskaźników. W tym przypadku interpretacja średniej kroczącej wskaźnika jest podobna do interpretacji średnich kroczących: jeśli wskaźnik wzrośnie powyżej średniej kroczącej, oznacza to, że rosnący ruch wskaźnika prawdopodobnie będzie kontynuowany: jeśli wskaźnik spadnie poniżej średniej kroczącej, oznacza, że prawdopodobnie będzie nadal spadać. Oto typy średnich kroczących na wykresie: Średnia ruchoma średnia (SMA) Średnia ruchoma wykładnicza (EMA) Wygładzona średnia ruchoma (SMMA) Liniowa ważona średnia ruchoma (LWMA) Możesz przetestować sygnały handlowe tego wskaźnika, tworząc Expert Advisor w kreatorze MQL5. Obliczanie prostej średniej ruchomej (SMA) Prosta, czyli średnia arytmetyczna średnia ruchoma jest obliczana poprzez zsumowanie cen zamknięcia instrumentu w ciągu pewnej liczby pojedynczych okresów (na przykład 12 godzin). Wartość ta jest następnie dzielona przez liczbę takich okresów. SMA SUM (ZAMKNIJ (i), N) N Suma sum ZAMKNIJ (i) aktualny okres cena zamknięcia N liczba okresów obliczeniowych. Wykładnicza średnia ruchoma (EMA) Wykładniczo wyrównana średnia krocząca jest obliczana poprzez dodanie określonej części bieżącej ceny zamknięcia do poprzedniej wartości średniej ruchomej. Z wykładniczo wygładzonymi średnimi ruchami, ostatnie bliskie ceny mają większą wartość. P-proc. Wykładnicza średnia krocząca będzie wyglądała następująco: EMA (ZAMKNIJ (i) P) (EMA (i - 1) (1 - P)) ZAMKNIJ (i) aktualna cena zamknięcia okresu EMA (i - 1) Wartość średniej ruchomej z poprzedniego okresu P procent wykorzystania wartości ceny. Wygładzona średnia ruchoma (SMMA) Pierwsza wartość tej wygładzonej średniej kroczącej jest obliczana jako prosta średnia ruchoma (SMA): SUM1 SUMA (ZAMKNIJ (i), N) Druga średnia krocząca jest obliczana zgodnie z tą formułą: SMMA (i) (SMMA1 (N-1) ZAMKNIJ (i)) N Następujące ruchome wartości średnie są obliczane zgodnie z poniższym wzorem: PREVSUM SMMA (i - 1) N SMMA (i) (PREVSUM - SMMA (i - 1) CLOSE (i)) N Suma sum SUM1 całkowita suma cen zamknięcia dla N okresów liczona jest od poprzedniego paska PREVSUM wygładzona suma poprzedniego paska SMMA (i-1) wygładzona średnia krocząca z poprzedniego paska SMMA (i) wygładzona średnia krocząca z bieżącego słupka (z wyjątkiem pierwszego) ZAMKNIJ (i) aktualna cena zamknięcia N okres wygładzania. Po konwersji arytmetycznej można uprościć formułę: SMMA (i) (SMMA (i - 1) (N - 1) ZAMKNIJ (i)) N Liniowa ważona średnia ruchoma (LWMA) W przypadku ważonej średniej kroczącej najnowsze dane są większej wartości niż więcej wczesnych danych. Ważoną średnią ruchomą oblicza się, mnożąc każdą z cen zamknięcia w rozpatrywanej serii przez określony współczynnik wagowy: LWMA SUM (CLOSE (i) i, N) SUM (i, N) SUM suma CLOSE (i) obecna cena zamknięcia Suma (i, N) całkowita suma współczynników wagowych N okresu wygładzania. Jestem nowy w kodowaniu i dużo się uczę, jednak uderzyłem w coś, na co nie mogę w tej chwili się skupić. Próbuję wywołać wynik testu w jednym z moich wskaźników, do ea, aby mógł dodać go do własnych testów przed wprowadzeniem handlu. Ea jest prostym krzyżem średniej ruchomej. Wskaźnik jest wskaźnikiem tendencji lub zasięgu. Załączam kod wskaźnika. Chciałbym pomóc, a jeśli to możliwe, wyjaśnić to po prostu, abym mógł zorientować się, jak powinien być ustawiony wewnątrz wskaźnika, aby go rozpoznać. Kiedy już posortuję wskaźnik, przejdę na ea. Wskaźnik ma dwa testy, w których chciałbym dodać funkcję iCustom. Na tym etapie chcę tylko dodać go w jednym teście, nie ma znaczenia, który próbuję zrozumieć. Każdy chętny pomóc i wyjaśnić to po prostu. byłoby bardzo korzystne - nie mogę znaleźć niczego w Internecie, co tłumaczy to, więc rozumiem to. Wynik testu może być po prostu quottruequot. Z góry dziękuję za poświęcony czas. Mike iCustom umożliwia dostęp do buforów wskaźników. to takie proste. Na przykład, piszesz EA, który ma strategię opartą na 2 wskaźnikach, możesz stworzyć kod wskaźnika w EA, co jest możliwe, ale jest trochę zaangażowane, ponieważ bufory wskaźników nie działają na EA, musisz użyć tablic i obsłużyć je w sposób ciągły. alternatywa polega na uruchomieniu wskaźników i uzyskaniu dostępu do ich buforów z EA. to właśnie ułatwia iCustom. Do wskaźników nie są potrzebne żadne zmiany. EA po prostu uzyskuje dostęp do buforów, których potrzebuje, przy wymaganych wartościach przesunięcia. W wywołaniu iCustom może również przekazywać dowolne zewnętrzne zmienne, które są potrzebne do ustawienia wskaźnika, odpowiednio, iCustom umożliwia dostęp do buforów wskaźników. to takie proste. Na przykład, piszesz EA, który ma strategię opartą na 2 wskaźnikach, możesz stworzyć kod wskaźnika w EA, co jest możliwe, ale jest trochę zaangażowane, ponieważ bufory wskaźników nie działają na EA, musisz użyć tablic i obsłużyć je w sposób ciągły. alternatywa polega na uruchomieniu wskaźników i uzyskaniu dostępu do ich buforów z EA. to właśnie ułatwia iCustom. Do wskaźników nie są potrzebne żadne zmiany. EA po prostu uzyskuje dostęp do buforów, których potrzebuje, przy wymaganych wartościach przesunięcia. W wywołaniu iCustom może również przekazywać dowolne zewnętrzne zmienne, które są potrzebne do ustawienia wskaźnika, stosownie do potrzeb. Dzięki za to RaptorUK, jednak jest to rzeczywiste kodowanie, z którym mam trudności. Jestem bardzo nowy w MQL4 i robię to tylko kilka miesięcy i wciąż się uczę - więc potrzebuję prostego wyjaśnienia kodowania i sposobu ustawienia go w tym wskaźniku.
Comments
Post a Comment