Wie programmiert man? - Seite 327

 

Hallo alle, ich habe diesen speziellen Fehler mit meinem EA auf Stocastic.

Dies ist meine Kriterien ist wie folgt:

Wenn mein stocEquator nach oben kreuzt (Aufwärtstrend), werden nur long ausgelöst, wenn mein stocTrigger nach oben kreuzt und wenn stocEquator nach unten kreuzt (Abwärtstrend), werden nur short ausgelöst, wenn stocTrigger nach unten kreuzt.

Wenn ich jedoch den EA zum Testen ausführe, werden keine Trades ausgelöst, und ich frage mich, was hier das Problem sein könnte, und wäre dankbar, wenn mir jemand hier helfen könnte.

Ich danke Ihnen im Voraus für Ihre Hilfe.

Mit freundlichen Grüßen

Terrance

int isCrossedTrigger= 0;

double shortStoc1Trigger= iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);

double longStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1);

double shortStoc2Trigger= iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);

double longStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2);

double diff1Trigger= shortStoc1Trigger-longStoc1Trigger;

double diff2Trigger= shortStoc2Trigger-longStoc2Trigger;

if ((diff1Trigger*diff2Trigger)<0)

{

if (shortStoc1Trigger>longStoc1Trigger)

isCrossedTrigger= 1;

sonst isCrossedTrigger= 2;

}

int isCrossedEquator = 0;

double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,1);

double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);

double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,2);

double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);

double diff1Equator = shortStoc1Equator-longStoc1Equator;

double diff2Equator = shortStoc2Equator-longStoc2Equator;

if ((diff1Equator*diff2Equator)<0)

{

if (shortStoc1Equator>longStoc1Equator)

isCrossedEquator = 1;

sonst isCrossedEquator = 2;

}

if(total < 2)

{

if(isCrossedTrigger== 1 && isCrossedEquator == 1)

{

Kaufen

}

if(isCrossedTrigger== 2 && isCrossedEquator == 2)

{

Verkaufen

}

return(0);

}

return(0);

 
tkuan77:
Hallo zusammen, ich habe diesen speziellen Fehler mit meinem EA auf Stocastic.

Meine Kriterien sind wie folgt:

Wenn meine stocEquator Kreuze nach oben (Uptrend), nur lange ausgelöst werden, wenn meine stocTrigger Kreuze nach oben und wenn stocEquator Kreuze nach unten (Downtrend), nur kurz ausgelöst werden, wenn stocTrigger Kreuze nach unten.

Wenn ich jedoch den EA zum Testen ausführe, werden keine Trades ausgelöst, und ich frage mich, was hier das Problem sein könnte, und wäre dankbar, wenn mir jemand hier helfen könnte.

Ich danke Ihnen im Voraus für Ihre Hilfe.

Mit freundlichen Grüßen

Terrance

int isCrossedTrigger= 0;

double shortStoc1Trigger= iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);

double longStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1);

double shortStoc2Trigger= iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);

double longStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2);

double diff1Trigger= shortStoc1Trigger-longStoc1Trigger;

double diff2Trigger= shortStoc2Trigger-longStoc2Trigger;

if ((diff1Trigger*diff2Trigger)<0)

{

if (shortStoc1Trigger>longStoc1Trigger)

isCrossedTrigger= 1;

sonst isCrossedTrigger= 2;

}

int isCrossedEquator = 0;

double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,1);

double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);

double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,2);

double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);

double diff1Equator = shortStoc1Equator-longStoc1Equator;

double diff2Equator = shortStoc2Equator-longStoc2Equator;

if ((diff1Equator*diff2Equator)<0)

{

if (shortStoc1Equator>longStoc1Equator)

isCrossedEquator = 1;

sonst isCrossedEquator = 2;

}

if(total < 2)

{

if(isCrossedTrigger== 1 && isCrossedEquator == 1)

{

Kaufen

}

if(isCrossedTrigger== 2 && isCrossedEquator == 2)

{

Verkaufen

}

return(0);

}

zurück(0);

Terrance

Das einzige, was ich nicht überprüfen konnte, ist die Variable "total".

Der Code sollte funktionieren, wenn die Gesamtvariable richtig gesetzt ist. Hier ist ein Testindikator, den ich mit Ihren Bedingungen verwendet habe und der gültige Kauf- und Verkaufssignale auslöst (führen Sie den Indikator im visuellen Modus aus und Sie werden sehen, wann er Alarm schlägt), also liegt der Fehler woanders

#property indicator_separate_window

#property indicator_buffers 0

//------------------------------------------------------------------

//

//------------------------------------------------------------------

int init()

{

return(0);

}

//------------------------------------------------------------------

//

//------------------------------------------------------------------

int start()

{

int total = 0;

int isCrossedTrigger= 0;

double shortStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);

double longStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1) ;

double shortStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);

double longStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2) ;

double diff1Trigger = shortStoc1Trigger-longStoc1Trigger;

double diff2Trigger = shortStoc2Trigger-longStoc2Trigger;

if ((diff1Trigger*diff2Trigger)<0)

{

if (shortStoc1Trigger>longStoc1Trigger)

isCrossedTrigger= 1;

else isCrossedTrigger= 2;

}

int isCrossedEquator = 0;

double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN, 1);

double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);

double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN, 2);

double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);

double diff1Equator = shortStoc1Equator-longStoc1Equator;

double diff2Equator = shortStoc2Equator-longStoc2Equator;

if ((diff1Equator*diff2Equator)<0)

{

if (shortStoc1Equator>longStoc1Equator)

isCrossedEquator = 1;

else isCrossedEquator = 2;

}

//

//

//

//

//

if(total < 2)

{

if(isCrossedTrigger== 1 && isCrossedEquator == 1)

{

Alert("Buy at : "+TimeToStr(Time[0],TIME_DATE|TIME_SECONDS));

}

if(isCrossedTrigger== 2 && isCrossedEquator == 2)

{

Alert("Sell at : "+TimeToStr(Time[0],TIME_DATE|TIME_SECONDS));

}

}

return(0);

}
 

Hallo mladen, danke für den Hinweis. Ich bin zurückgegangen und habe mir meine Codes angesehen und konnte nicht herausfinden, was du mit der Variable "total" meintest. Was könnte die Ursache für meinen Fehler sein?

Mit freundlichen Grüßen

Terrance

//+------------------------------------------------------------------+

//| My_First_EA.mq4

//| TK|

//| MetaTrader 4 Handelsplattform / MetaQuotes Software Corp. |

//+------------------------------------------------------------------+

#Eigenschaft Copyright "TK"

#property link "http://www.metaquotes.net"

//--- Eingabeparameter

extern double TakeProfit=500.0;

extern double Lots=0.1;

extern double StopLoss=500.0;

//+------------------------------------------------------------------+

//| Experten-Initialisierungsfunktion |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Experten-Deinitialisierungsfunktion |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

datetime newbar;

int start()

{

if(newbar==Zeit[0])return(0);

sonst newbar=Zeit[0];

int ticket, gesamt;

if(Balken<100)

{

Print("Balken weniger als 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit kleiner als 10");

return(0);

}

//+------------------------------------------------------------------+

//| Expertenstartfunktion | Stochastischer Trigger

//+------------------------------------------------------------------+

// shortStoc = iStochastic(NULL,0,7,15,17,MODE_LWMA,0,MODE_MAIN,0); //orignial Stoc movement

// longStoc = iStochastic(NULL,0,7,15,17,MODE_LWMA,0,MODE_SIGNAL,0); //orignale Stoc-Bewegung

//+--------------------------------------------------------------------------------------+

//| Experten-Startfunktion | Handel nur auslösen, wenn Linie überschritten und Kerze geschlossen |//

//+--------------------------------------------------------------------------------------+

int isCrossed = 0;

double shortStoc1 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);

double longStoc1 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1);

double shortStoc2 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);

double longStoc2 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2);

double diff1 = shortStoc1-longStoc1;

double diff2 = shortStoc2-longStoc2;

if ((diff1*diff2)<0)

{

wenn (shortStoc1>longStoc1)

isCrossed = 1;

sonst isCrossed = 2;

}

// Äquator Stoc Start -------------------------------------

int isCrossedEquator = 0;

double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,1);

double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);

double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,2);

double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);

double diff1Equator = shortStoc1Equator-longStoc1Equator;

double diff2Equator = shortStoc2Equator-longStoc2Equator;

if ((diff1Equator*diff2Equator)<0)

{

if (shortStoc1Equator>longStoc1Equator)

isCrossedEquator = 1;

sonst isCrossedEquator = 2;

}

// Äquator Stoc Ende -------------------------------------

//+------------------------------------------------------------------------------------+

//| expert end function | Set trigger trade only when line crossed and candle closed |//

//+------------------------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Experten-Ende-Funktion | Stochastik-Trigger

//+------------------------------------------------------------------+

//| Experte Startfunktion | Triggerauftrag

//+------------------------------------------------------------------------------------------------------------+

total = OrdersTotal();

if(total < 2) //begrenzt die Anzahl der eröffneten Trades

{

if(isCrossed == 1 && isCrossedEquator == 1)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,

"Mein EA",12345,0,Grün);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen der BUY-Order : ",GetLastError());

return(0);

}

if(isCrossed == 2 && isCrossedEquator == 2)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,

"Mein EA",12345,0,Rot);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen der SELL-Order : ",GetLastError());

return(0);

}

return(0);

}

return(0);

}

//+------------------------------------------------------------------+

//| expert end function |

//+------------------------------------------------------------------+

mladen:
Terrance

Das einzige, was ich nicht überprüfen konnte, ist die Variable "total".

Der Code sollte funktionieren, wenn die Gesamtvariable richtig gesetzt ist. Hier ist ein Testindikator, den ich mit Ihren Bedingungen verwendet habe und der gültige Kauf- und Verkaufssignale auslöst (führen Sie den Indikator im visuellen Modus aus und Sie werden sehen, wann er Alarm schlägt), also liegt der Fehler woanders

#property indicator_separate_window

#property indicator_buffers 0

//------------------------------------------------------------------

//

//------------------------------------------------------------------

int init()

{

return(0);

}

//------------------------------------------------------------------

//

//------------------------------------------------------------------

int start()

{

int total = 0;

int isCrossedTrigger= 0;

double shortStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);

double longStoc1Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1) ;

double shortStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);

double longStoc2Trigger = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2) ;

double diff1Trigger = shortStoc1Trigger-longStoc1Trigger;

double diff2Trigger = shortStoc2Trigger-longStoc2Trigger;

if ((diff1Trigger*diff2Trigger)<0)

{

if (shortStoc1Trigger>longStoc1Trigger)

isCrossedTrigger= 1;

else isCrossedTrigger= 2;

}

int isCrossedEquator = 0;

double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN, 1);

double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);

double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN, 2);

double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);

double diff1Equator = shortStoc1Equator-longStoc1Equator;

double diff2Equator = shortStoc2Equator-longStoc2Equator;

if ((diff1Equator*diff2Equator)<0)

{

if (shortStoc1Equator>longStoc1Equator)

isCrossedEquator = 1;

else isCrossedEquator = 2;

}

//

//

//

//

//

if(total < 2)

{

if(isCrossedTrigger== 1 && isCrossedEquator == 1)

{

Alert("Buy at : "+TimeToStr(Time[0],TIME_DATE|TIME_SECONDS));

}

if(isCrossedTrigger== 2 && isCrossedEquator == 2)

{

Alert("Sell at : "+TimeToStr(Time[0],TIME_DATE|TIME_SECONDS));

}

}

return(0);

}
 
tkuan77:
Hallo mladen, danke für den Hinweis. Ich bin zurückgegangen und habe mir meine Codes angesehen und konnte nicht herausfinden, was du mit der Variable "total" meintest. Was könnte die Ursache für meinen Fehler sein?

Mit freundlichen Grüßen

Terrance

//+------------------------------------------------------------------+

//| My_First_EA.mq4

//| TK|

//| MetaTrader 4 Handelsplattform / MetaQuotes Software Corp. |

//+------------------------------------------------------------------+

#Eigenschaft Copyright "TK"

#property link "http://www.metaquotes.net"

//--- Eingabeparameter

extern double TakeProfit=500.0;

extern double Lots=0.1;

extern double StopLoss=500.0;

//+------------------------------------------------------------------+

//| Experten-Initialisierungsfunktion |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Experten-Deinitialisierungsfunktion |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

datetime newbar;

int start()

{

if(newbar==Zeit[0])return(0);

sonst newbar=Zeit[0];

int ticket, gesamt;

if(Balken<100)

{

Print("Balken weniger als 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit kleiner als 10");

return(0);

}

//+------------------------------------------------------------------+

//| Expertenstartfunktion | Stochastischer Trigger

//+------------------------------------------------------------------+

// shortStoc = iStochastic(NULL,0,7,15,17,MODE_LWMA,0,MODE_MAIN,0); //orignial Stoc movement

// longStoc = iStochastic(NULL,0,7,15,17,MODE_LWMA,0,MODE_SIGNAL,0); //orignale Stoc-Bewegung

//+--------------------------------------------------------------------------------------+

//| Experten-Startfunktion | Handel nur auslösen, wenn Linie überschritten und Kerze geschlossen |//

//+--------------------------------------------------------------------------------------+

int isCrossed = 0;

double shortStoc1 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,1);

double longStoc1 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,1);

double shortStoc2 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_MAIN,2);

double longStoc2 = iStochastic(NULL,0,3,5,7,MODE_SMA,0,MODE_SIGNAL,2);

double diff1 = shortStoc1-longStoc1;

double diff2 = shortStoc2-longStoc2;

if ((diff1*diff2)<0)

{

wenn (shortStoc1>longStoc1)

isCrossed = 1;

sonst isCrossed = 2;

}

// Äquator Stoc Start -------------------------------------

int isCrossedEquator = 0;

double shortStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,1);

double longStoc1Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,1);

double shortStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_MAIN,2);

double longStoc2Equator = iStochastic(NULL,0,10,100,20,MODE_SMA,0,MODE_SIGNAL,2);

double diff1Equator = shortStoc1Equator-longStoc1Equator;

double diff2Equator = shortStoc2Equator-longStoc2Equator;

if ((diff1Equator*diff2Equator)<0)

{

if (shortStoc1Equator>longStoc1Equator)

isCrossedEquator = 1;

sonst isCrossedEquator = 2;

}

// Äquator Stoc Ende -------------------------------------

//+------------------------------------------------------------------------------------+

//| expert end function | Set trigger trade only when line crossed and candle closed |//

//+------------------------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Experten-Ende-Funktion | Stochastik-Trigger

//+------------------------------------------------------------------+

//| Experte Startfunktion | Triggerauftrag

//+------------------------------------------------------------------------------------------------------------+

total = OrdersTotal();

if(total < 2) //begrenzt die Anzahl der eröffneten Trades

{

if(isCrossed == 1 && isCrossedEquator == 1)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,

"Mein EA",12345,0,Grün);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen der BUY-Order : ",GetLastError());

return(0);

}

if(isCrossed == 2 && isCrossedEquator == 2)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,

"Mein EA",12345,0,Rot);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen der SELL-Order : ",GetLastError());

return(0);

}

return(0);

}

return(0);

}

//+------------------------------------------------------------------+

//| Experten Ende Funktion |

//+------------------------------------------------------------------+

Terrance

In meinen Tests funktioniert dieser EA

Hier ist das Testergebnis und der Rücktestbericht. Getestet auf 1 Minute Zeitrahmen

Dateien:
tk.zip  16 kb
result.gif  13 kb
 

Hallo alle, pls kann jemand nur helfen Sie mir mit diesem Code unten,,,,it weiterhin geben mir Ton Alarm bei jedem Tick statt nur, wenn der Handel erforderlichen Bedingungen ausgelöst werden! Ich ndont wollen die Warnung zu klingen, bei jedem Tick oder wenn neue Candlestick bilden.

#property indicator_chart_window

#Eigenschaft indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Rot

//---- Eingabeparameter

extern int ADXbars=14;

extern int CountBars=350;

//---- Puffer

double val1[];

double val2[];

double b4plusdi,nowplusdi,b4minusdi,nowminusdi;

//+------------------------------------------------------------------+

//| Benutzerdefinierte Funktion zur Deinitialisierung des Indikators |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Benutzerdefinierte Indikator-Iterationsfunktion |

//+------------------------------------------------------------------+

int init()

{

//-- Indikator-Kurzname

IndikatorKurzname("PipsdatorPro1("+Symbol()+")");

//---- Indikatorzeile

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_ARROW);

SetIndexPfeil(0,233);

SetIndexStyle(1,DRAW_ARROW);

SetIndexPfeil(1,234);

SetIndexBuffer(0,val1);

SetIndexBuffer(1,val2);

//----

return(0);

}

//+------------------------------------------------------------------+

//| AltrTrend_Signal_v2_2 |

//+------------------------------------------------------------------+

int start()

{

if (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars);

SetIndexZeichenBeginn(1,Balken-Zählbalken);

int i,shift,counted_bars=IndicatorCounted();

//---- Prüfung auf mögliche Fehler

if(gezählte_Balken<0) return(-1);

//---- anfänglicher Nullpunkt

if(gezählte_Balken<1)

{

for(i=1;i<=CountBars;i++) val1[CountBars-i]=0.0;

for(i=1;i<=CountBars;i++) val2[CountBars-i]=0.0;

}

for (shift = CountBars; shift>=0; shift--)

{

b4plusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift-1);

nowplusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift);

b4minusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift-1);

nowminusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift);

if (b4plusdi>b4minusdi && nowplusdi<nowminusdi && i!=1)

{

val1[shift]=Low[shift]-5*Point;

// Alert("Buy Arrow","\n", "Aktuelle Zeit ist ",TimeToStr(CurTime()),"\n",Symbol());

i++;

}

if (b4plusdinowminusdi && i!=1)

{

val2[shift]=High[shift]+5*Point;

// Alert("Verkaufspfeil","\n", "Aktuelle Zeit ist ",TimeToStr(CurTime()),"\n",Symbol());

i++;

}

}

return(0);

}

//+---------------------------------------------------------------+

 
Mastercash:
Hallo an alle, pls kann jemand nur helfen mir mit diesem Code unten,,,,it weiterhin geben mir Ton Alarm bei jedem Tick statt nur, wenn der Handel erforderlichen Bedingungen ausgelöst werden! Ich ndont wollen die Warnung zu klingen bei jedem Tick oder wenn neue Candlestick gebildet werden.

#property indicator_chart_window

#Eigenschaft indicator_buffers 2

#property indicator_color1 Kalk

#property indicator_color2 Rot

//---- Eingabeparameter

extern int ADXbars=14;

extern int CountBars=350;

//---- Puffer

double val1[];

double val2[];

double b4plusdi,nowplusdi,b4minusdi,nowminusdi;

//+------------------------------------------------------------------+

//| Benutzerdefinierte Funktion zur Deinitialisierung des Indikators |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Benutzerdefinierte Indikator-Iterationsfunktion |

//+------------------------------------------------------------------+

int init()

{

//-- Indikator-Kurzname

IndikatorKurzname("PipsdatorPro1("+Symbol()+")");

//---- Indikatorzeile

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_ARROW);

SetIndexPfeil(0,233);

SetIndexStyle(1,DRAW_ARROW);

SetIndexPfeil(1,234);

SetIndexBuffer(0,val1);

SetIndexBuffer(1,val2);

//----

return(0);

}

//+------------------------------------------------------------------+

//| AltrTrend_Signal_v2_2 |

//+------------------------------------------------------------------+

int start()

{

if (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars);

SetIndexZeichenBeginn(1,Balken-Zählbalken);

int i,shift,counted_bars=IndicatorCounted();

//---- Prüfung auf mögliche Fehler

if(gezählte_Balken<0) return(-1);

//---- anfänglicher Nullpunkt

if(gezählte_Balken<1)

{

for(i=1;i<=CountBars;i++) val1[CountBars-i]=0.0;

for(i=1;i<=CountBars;i++) val2[CountBars-i]=0.0;

}

for (shift = CountBars; shift>=0; shift--)

{

b4plusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift-1);

nowplusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift);

b4minusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift-1);

nowminusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift);

if (b4plusdi>b4minusdi && nowplusdi<nowminusdi && i!=1)

{

val1[shift]=Low[shift]-5*Point;

// Alert("Buy Arrow","\n", "Aktuelle Zeit ist ",TimeToStr(CurTime()),"\n",Symbol());

i++;

}

if (b4plusdinowminusdi && i!=1)

{

val2[shift]=High[shift]+5*Point;

// Alert("Verkaufspfeil","\n", "Aktuelle Zeit ist ",TimeToStr(CurTime()),"\n",Symbol());

i++;

}

}

return(0);

}

//+---------------------------------------------------------------+

Mastercash, es gibt eine Version dieses Indikators hier https://www.mql5.com/en/forum/173574/page320 vielleicht wird es helfen.

 
mladen:
Terrance

In meinen Tests funktioniert der EA

Hier ist das Testergebnis und der Rücktestbericht. Getestet mit einem Zeitrahmen von 1 Minute

Hallo mladen, ich habe den Code nach Ihren Kommentaren erneut überprüft und festgestellt, dass der Handel nur ausgelöst wird, wenn beide meiner stocastic Linien aufwärts oder abwärts an der gleichen Kerze ausgelöst.

Was ich jedoch zu erreichen versuche, ist, dass, wenn der Äquator-Indikator nach oben kreuzt, was auf einen Aufwärtstrend hindeutet, der EA nur long auslöst, wenn der Fast-Indikator nach oben auslöst und umgekehrt, anstatt dass sowohl der Äquator als auch der Fast-Indikator in die gleiche Richtung bei der gleichen Kerze ausgelöst werden.

Ich hatte versucht, den EA so einzustellen, dass er diesen Kriterien entspricht, konnte aber nicht die gewünschten Ergebnisse erzielen. Gibt es etwas, das ich falsch mache? Bitte helfen Sie mir. Nochmals vielen Dank.

Mit freundlichen Grüßen

Terrance

 
tkuan77:
Hallo mladen, ich habe den Code nach Ihren Kommentaren noch einmal überprüft und festgestellt, dass der Handel nur dann ausgelöst wird, wenn beide meiner stocastic-Linien an der gleichen Kerze nach oben oder nach unten auslösen.

Was ich jedoch zu erreichen versuche, ist, dass, wenn der Äquator-Indikator nach oben kreuzt, was auf einen Aufwärtstrend hindeutet, der EA nur long auslöst, wenn der schnelle Indikator nach oben auslöst und umgekehrt, anstatt sowohl den Äquator als auch den schnellen Indikator in der gleichen Richtung bei der gleichen Kerze auszulösen.

Ich hatte versucht, den EA so einzustellen, dass er diesen Kriterien entspricht, konnte aber nicht die gewünschten Ergebnisse erzielen. Gibt es etwas, das ich falsch mache? Bitte helfen Sie mir. Nochmals vielen Dank.

Mit freundlichen Grüßen

Terrance

Terrance

Wahrscheinlich müssen Sie einen benutzerdefinierten Indikator schreiben, um das zu erreichen (einige Dinge in EAs können Sie einfach nicht auf die gleiche Weise tun, wie Sie es tun Indikatoren)

 
mladen:
Terrance Sie werden wahrscheinlich einen eigenen Indikator schreiben müssen, um dies zu erreichen (einige Dinge in EAs können Sie einfach nicht auf die gleiche Weise tun, wie Sie es mit Indikatoren tun)

Hallo mladen, 1 Sache, die ich nicht verstehe, ist, dass, warum ich in der Lage bin, dies mit MA und nicht iMA zu tun, obwohl es die gleiche Art von Kriterien ist? Könnte es eine Form von Indikatoreinstellungen sein?

Mit freundlichen Grüßen

Terrance

 
tkuan77:
Hallo mladen, 1 Sache, die ich nicht verstehe, ist, dass, warum ich in der Lage, dies mit MA und nicht iMA obwohl es die gleiche Art von Kriterien zu tun? Könnte es eine Form von Indikatoreinstellungen sein?

Grüßt

Terrance

denn mit dem benutzerdefinierten Indikator können Sie Zustände (Trends) zwischen den beiden Ticks speichern, und wenn Sie iMA verwenden, können Sie nicht (nur ein Beispiel)

Grund der Beschwerde: