|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Divergence Anfangspunkt und Endpunkt
Hi Leute ich habe eine Frage ich hoffe ihr könnt mir helfen wäre über jede Anregung dankbar oder über ein Beispielcode
Long Algo: Code:
ema_m15_50<ema_h1_50 && Close[1]<ema_m15_50 && Close[1]<ema_h1_50 && macd_histogramDarkTurquoiseLine<macd_histogrammRedLine && macd_histogramDarkTurquoiseLine>0 && macd_histogrammRedLine>0 Wenn die oben genannten Bedingungen zutreffen soll nach hinten geschaut werden ob bei den letzten 5 Bars eine Bullish Divergence war, dieser Bullish Divergence ist aber ja der Endpunkt hat aber ja noch einen Anfangspunkt, bitte siehe hierzu die Bilder (Startpunkt und Endpunkt) sieh Anhang Warum ist dieser Anfangspunkt für mich wichtig laut Algo: Dürfen die beiden Moving Averages des MACD die 0 Linie nicht berühren vom Anfangszeitpunkt der Divergence bis zum Endpunkt nur dann hat das Signal Gültigkeit, auch Generell würde mich das interessieren wie ich das machen könnte. Wie habe ich es bis jetzt gemacht naja nicht wirklich eine Lösung ich schau innerhalb einer For loop mit einer weiteren For loop die letzten 5 Bars ob eine Divergence war Code:
for(int i=0;i<5;i++){ //Initizilation of indicator for Filter (Traditional Macd Histogram Divergence) double macdBullishDivergence = iCustom(NULL, PERIOD_CURRENT, "Traditional Macd Histogram Divergence", "*** MACD Settings ***", 12, 26, 9, "*** Indicator Settings ***", true, true, true, 3, i); //initizilation of indicator for Filter (macd_histogram Redline and DarkTurquoiseLine) double macd_histogramDarkTurquoiseLine = iCustom(Symbol(), PERIOD_CURRENT, "macd_histogram", 12, 26, 9, 0, i); double macd_histogrammRedLine = iCustom(Symbol(), PERIOD_CURRENT, "macd_histogram", 12, 26, 9, 1, i); if(macdBullishDivergence != EMPTY_VALUE && macd_histogramDarkTurquoiseLine<0 && macd_histogrammRedLine<0){ if(Bars>safetyCheck){ if(TotalOpenOrders()<1){ if(OrderSelect(LastTradeTicket(),SELECT_BY_TICKET,MODE_HISTORY)){ if(OrderProfit()< 0){ volumen = 0.01; }else{ volumen += addOrderLots; } } int longTicket=OrderSend(Symbol(),OP_BUY,volumen,Ask,100,0,0,"Long",neutralMagicNumber,0,clrGreen); } safetyCheck = Bars; } } }//Loop -Anfangspunkt und Endpunkt Ich poste mal den Code meines Expert Advisors den wichtigen Teil: Code:
//checking Signal (Long Trade) if(ema_m15_50>ema_h1_50 && Close[1]>ema_m15_50 && Close[1]>ema_h1_50){ if(macd_histogramDarkTurquoiseLine>macd_histogrammRedLine && macd_histogramDarkTurquoiseLine<0 && macd_histogrammRedLine<0){ for(int i=0;i<5;i++){ //Initizilation of indicator for Filter (Traditional Macd Histogram Divergence) double macdBullishDivergence = iCustom(NULL, PERIOD_CURRENT, "Traditional Macd Histogram Divergence", "*** MACD Settings ***", 12, 26, 9, "*** Indicator Settings ***", true, true, true, 3, i); //initizilation of indicator for Filter (macd_histogram Redline and DarkTurquoiseLine) double macd_histogramDarkTurquoiseLine = iCustom(Symbol(), PERIOD_CURRENT, "macd_histogram", 12, 26, 9, 0, i); double macd_histogrammRedLine = iCustom(Symbol(), PERIOD_CURRENT, "macd_histogram", 12, 26, 9, 1, i); if(macdBullishDivergence != EMPTY_VALUE && macd_histogramDarkTurquoiseLine<0 && macd_histogrammRedLine<0){ if(Bars>safetyCheck){ if(TotalOpenOrders()<1){ if(OrderSelect(LastTradeTicket(),SELECT_BY_TICKET,MODE_HISTORY)){ if(OrderProfit()< 0){ volumen = 0.01; }else{ volumen += addOrderLots; } } int longTicket=OrderSend(Symbol(),OP_BUY,volumen,Ask,100,0,0,"Long",neutralMagicNumber,0,clrGreen); } safetyCheck = Bars; } } }//Loop } } |
Lesezeichen |
|
|