Thursday 23 November 2017

Forex trading metatrader indicators and expert advisors tutorial


Samouczek Samouczek do Expert Advisor proszę mi ktoś mi mi na Konwertowanie niestandardowych wskaźników kod do kodu EA Dzięki. Właściwość indicatorchartwindow właściwość indicatorbuffers 5 właściwość colorcolor1 DimGray właściwość colorcolor2 Red właściwość indicatorcolor3 LimeGreen właściwość indicatorcolor4 Red właściwość indicatorcolor5 Niebieski property indicatorstyle1 STYLEDOT extern string TimeFrame kwadowa godzina czasowa ramka zewnętrzna int HalfLength 56 extern int Cena PRICEighnessed extern podwójne pasmaDeviations 2.5 extern bool Interpolacja prawdziwych zewnętrznych algorytmów boolOn false extern bool alertsOnHighLow true extern bool alertsOnHighLow true extern bool alertsOnHighLow true extern bool alertsOneHighLow true extern bool alertsZa prawdziwe zewnętrzne algorytmy boolSound false extern bool alertsEmail false double tmBuffer double upBuffer double dnBuffer double wuBuffer double wdBuffer double upArrow double dnArrow string IndicatorFileName bool calculatingTma false bool returnsBars false int timeFrame int init () timeFrame stringToTimeFrame TimeFrame) HalfLength MathMax (HalfLength, 1) Bufory wskaźników (7) SetIndexBuffer (0, tmBuffer) SetIndexDrawBegin (0, HalfLength) SetIndexBuffer (1, upB (SetIndexBrower) SetIndexBrower (2, dnBuffer) SetIndexDrawBegin (2, HalfLength) SetIndexBuffer (3, dnArrow) SetIndexStyle (3, DRAWARROW) SetIndexArrow (5,242) SetIndexBuffer (4, upArrow) SetIndexStyle (4, DRAWARROW) SetIndexArrow 6,241) SetIndexBuffer (5, wuBuffer) SetIndexBuffer (6, wdBuffer) IndicatorFileName WindowExpertName () return (0) int deinit () int start () int countedbarsIndicatorCounted () int i, limit jeśli (countedbarslt0) return (-1) if (countedbarsgt0 ) countedbars-- limitMathMin (Bars-1, Bars-countedbarsHalfLength) if (returningBars) if (calculatingTma) if (timeFrame gt Period ()) ogranicza MathMax (limit, MathMin (Bars-1, iCustom (NULL, timeFrame, IndicatorFileName, quotreturn Barsquot, 0,0) timeFramePeriod ())) for (i limit i gt 0 i--) int shift1 iBarShift (NULL, timeFrame, Timei) datetime time1 iTime (NULL, timeFrame, shift1) tmBufferi iCustom (NULL, timeFrame, IndicatorFileName , quotcalculat eTmaquot, HalfLength, cena, zespołyDeviations, 0, shift1) upBufferi iCustom (NULL, timeFrame, IndicatorFileNam e, quotcalculat eTmaquot, HalfLength, Price, BandsDeviations, 1, shift1) dnBufferi iCustom (NULL, timeFrame, IndicatorFileName, quotcalculat eTmaquot, HalfLength, Price, BandsDeviations, 2, shift1) upArrowi EMPTYVALUE dnArrowi EMPTYVALUE if (ampi1gtupBufferi1 ampamp Closei1gtOpeni1 ampamp CloseiltOpeni) upArrowi HighiiATR (NULL, 0,20, i) jeśli (Lowi1ltdnBufferi1 ampamp Closei1ltOpeni1 ampamp CloseigtOpeni) dnArrowi Highi-iATR (NULL, 0,20, i) jeśli (timeFrame lt Period () shift1iBarShift (NULL, timeFrame, Timei-1)) if (Interpolate) continue for (int n 1 w lt Bars ampamp Timein gt time1 n) kontynuuj podwójny czynnik 1.0 n dla (int k 1 k lt nk) tmBufferik kfactortmBufferin (1.0-kfactor) tmBufferi upBufferik kfactorupBufferin (1.0-kfactor) upBufferi dnBufferik kfactordnBufferin (1.0-kfactor) dnBufferi if (alertsOn) if (alertsOnCurrent) int forBar 0 else forBar 1 if (alertsOnHighLow) if (HighforBar gt upBufferforBar wzmacniacz HighforBar1 lt upBufferforBar1) doAlert (quothigh przeniknął do górnej kreski) if (LowforBar lt dnBufferforBar ampamp LowforBar1 gt dnBufferforBar1) doAlert (quotrag przeniknięty niższy barquot) w przeciwnym wypadku, jeśli (CloseforBar gt upBufferforBar ampamp CloseforBar1 lt upBufferforBar1) doAlert (quotclose penetrated upper barquot) if (CloseforBar lt dnBufferforBar ampamp CloseforBar1 gt dnBufferforBar1) doAlert (quotclose penetrated lower barquot) void calculTma (int limit) int i, j, k double FullLength 2.0HalfLength1.0 for (ilimit igt0 i--) double sum (HalfLength1) iMA (NULL, 0,1,0, MODESMA, Cena, i) podwójne sumw (HalfLength1) dla (j1, kHalfLength jltHalfLength j, k--) sum kiMA (NULL, 0,1,0, MODESMA, Price, ij) sumw k jeśli (jlti) sum kiMA (NULL, 0,1,0, MODESMA, Cena, ij) suma k tmBufferi sumsumw double diff iMA (NULL, 0,1,0, MODESMA, Cena, i) - tmBufferi, jeśli (igt (Bars-HalfLength-1)) kontynuuje się, jeśli (i (Bars-HalfLength - 1)) upBufferi tmBufferi dnBufferi tmBufferi if (diffgt0) wuBufferi MathPow (diff, 2) wdBufferi 0 else wdBufferi MathPow (diff, 2) wuBufferi 0 kontynuuj if (diffgt0) wuBufferi ( wuBufferi1 (FullLength-1) MathPow (diff, 2)) FullLength wdBufferi wdBufferi1 (FullLength-1) FullLength inny wdBufferi (wdBufferi1 (FullLength-1) MathPow (diff, 2)) FullLength wuBufferi wuBufferi1 (FullLength-1) FullLength upBufferi tmBufferi BandsDeviationsMathSqrt (wuBufferi) dnBufferi tmBufferi - zespołyDeviationsMathSqrt (wdBufferi) void doAlert (ciąg doWhat) ciąg statyczny previousAlertquotquot statyczny datetime previousTime komunikat łańcuchowy jeśli (previousAlertdoWhat previousTimeTime0) previousAlert doWhat previousTime Time0 message StringConcatenate (Symbol (), at quot, TimeToStr (TimeLocal () TIMESECONDS), quot. THA. quot, doWhat) jeśli (alertsMessage) Alert (wiadomość), jeśli (alertsEmail) SendMail (StringConcatenate (Symbol (), quotTMA quot), wiadomość) if (alertsSound) PlaySound (quotalert2.wavquot) int stringToTimeFrame (string tfs) dla (int l StringLen (tfs) -1 l gt 0 l--) int char StringGetChar (tfs, l) if ((char gt 96 ampamp char lt 123) (char gt 223 ampamp char lt 256)) tfs StringSetChar (tfs, 1, char - 32) else if (char gt -33 ampamp char lt 0) tfs StringSetChar (tfs, 1, char 224) int tf0 if (tfsquotM1quot tfsquot1quot) tfPERIODM1 jeśli (tfsquotM5quot tfsquot5quot) tfPERIODM5 jeśli (tfsquotM15quot tfsquot15quot) tfPERIODM15 jeśli (tfsquotM30quot tfsquot30quot) tfPERIODM30 if (tfsquotH1quot tfsquot60quot) tfPERIODH1 if (tfsquotH4quot tfsquot240quot) tfPERIODH4 if (tfsquotD1quot tfsquot1440quot) tfPERIODD1 if (tfsquotW1quot tfsquot10080quot) tfPERIODW1 if (tfsquotMNquot tfsquot43200quot) tfPERIODMN1 if (tf0 tfltPeriod ()) tfPeriod (powrót) (tf) jest to dwu - część samouczka kodu MQL4 omawiająca tworzenie simpl e Ekspert ds. Metatradera korzystający z RSI, który handluje tylko raz na pasek. Pod koniec części 2 można pobrać w pełni funkcjonalny szablon RSI EA. Dodatkowo kod odwoła się do innej tabeli ram czasowych dla RSI. Jeśli chcesz dowiedzieć się, w jaki sposób odwoływać się do innych ram czasowych z EA, ten samouczek powinien okazać się przydatny. Ten samouczek dotyczący kodu MQL4 jest następstwem tego, jak umieścić tylko jedną transakcję na pasek na eksperta od MT4. W tym artykule rozwinie się ten prosty pomysł i obecny kodeks, który może być używany jako szablon w wielu różnych aplikacjach doradców ekspertów i wielu różnych typach wskaźników, w tym RSI. Jak zostało omówione w poprzednim tutorialu MQL4, kluczem do obrotu tylko raz na pasek jest pakowanie logiki handlowej w ramach warunku, który wykorzystuje zmienną poziomu modułu do śledzenia numeru paska przy użyciu zmiennej Bary. MQL4 ma wiele wbudowanych funkcji wskaźnikowych, które mogą być używane w budowaniu systemu. Korzystanie z RSI w MQL4 Funkcja iBarShift zwraca przesunięcie paska przez dany czas. W poniższym kodzie odwołuje się bieżący pasek Time0. Jeśli ten kod jest używany na wykresie innym niż wykres 1-godzinny, sekwencja słupków może być nieprzewidywalna. IBarShift umożliwia określenie prawidłowego paska lub najbliższego paska, jeśli ostatnia kadencja jest ustawiona na false. Wartość zwracana może być wprowadzona tam, gdzie wymagany jest parametr shift, na przykład w funkcji iRSI. Indeks RSI lub Relative Strength Index można odwoływać do kodu MQL4 i jest zadeklarowany w następujący sposób: double iRSI (łańcuch znaków, int timeframe, okres int, int int. przycięty. int shift) Pierwsza nazwa to symbol i jeśli odnosi się do bieżącego symbolu można wprowadzić jako NULL lub Symbol (). lub nawet z powodzeniem jako 0 (chociaż najlepsze praktyki sugerują, że należy użyć NULL zamiast 0), wszystkie mają równoważny sens. Drugi termin to ramka czasowa i może być wpisana jako 0 dla aktualnie wybranych ram czasowych wykresów lub jako jedna z wstępnie zbudowanych wartości wyliczenia ramki czasowej (więcej informacji można znaleźć w pliku pomocy w systemie iRSI). W tym przykładzie zmienna PERIODH1 służy do odwoływania się do danych z wykresu 1-godzinnego. Trzeci okres terminu odnosi się do długości RSI, w której stosuje się zmienną RSILength (poniżej). appliedprice odnosi się do cen barów takich jak close (PRICECLOSE) lub high (PRICEHIGH). shift odnosi się do liczby pasków, które przesuwają RSI do obliczeń. Na przykład, aby obliczyć RSI z 5 taktów, użyłbyś 5 w piątym terminie. W tym przykładzie nie użyto żadnego przesunięcia, więc użyto 0 (poniżej). Po utworzeniu zewnętrznego wejścia dla RSILength i dwóch wejść dla progi Kup i Sprzedaję dla wartości RSI odpowiednio na 70 i 30, kod wygląda następująco: extern int Długość sygnału RSILength 14 extern int Wartość progowa 70 extern int SellThreshold 30 extern double Lot 0.01Forex Blog 4 Otwórz folder MQL4 (lub MQL5, jeśli instalujesz wskaźnik MT5): 5. Otwórz folder Wskaźniki: 6. Wklej plik wskaźnika tutaj: 7. Jeśli jest to już skompilowany plik (.ex4 lub. ex5), to dobrze. Wszystko, co musisz zrobić, to wrócić do swojego MetaTradera, kliknąć prawym przyciskiem myszy w okienko Wskaźniki w oknie nawigacji i kliknąć Odśwież. Nowy wskaźnik pojawi się w tej samej podmoderze nawigatora: 8. Jeśli nie jest to plik skompilowany, ale plik źródłowy (.mq4 lub. mq5), kliknij dwukrotnie ikonę 8212, która zostanie otwarta w edytorze MQL (to jest zawarty w pakiecie MetaTrader). Teraz naciśnij klawisz F7 lub kliknij przycisk Kompiluj: Zwykle podczas kompilacji nie powinno być żadnych błędów. Jeśli jednak w podkolorze Toolbox pojawiają się pewne błędy, możesz spróbować je naprawić lub skontaktuj się z twórcą wskaźnika8217, aby pomóc w rozwiązaniu problemu. Zwykle zajmuje pewną wiedzę MQL i umiejętności kodowania w celu naprawienia takich błędów. Brak błędów wyjściowych wygląda następująco: Błędy kompilacji wyglądają tak: 9. Po skompilowaniu lub skopiowaniu pliku MetaTrader wykonywalnego (.ex4 lub. ex5) można zacząć używać wskaźnika w swojej platformie. Wystarczy dołączyć go do wykresu: jeśli wiesz, co robisz, możesz też zmienić niektóre parametry wejściowe indicator8217s: OK. Teraz możesz cieszyć się nowym wskaźnikiem MetaTrader i mam nadzieję, że wyniki handlu na rynku Forex są lepsze o 8212. Jeśli masz pytania dotyczące instalowania niestandardowych wskaźników w MetaTrader, możesz poprosić o skorzystanie z poniższego formularza komentarza.

No comments:

Post a Comment