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
Hier liegt mein Problem und wo ich Hilfe brauche:
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
Nochmal wie kriege ich die beiden Punkte einer Divergence heraus?
-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
}
}
habe auch die Indikatoren, Template sowie den Expert Advisor angehängt.