Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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);
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_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 |
//+------------------------------------------------------------------+
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_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);
}
//+------------------------------------------------------------------+
//| Experten Ende Funktion |
//+------------------------------------------------------------------+Terrance
In meinen Tests funktioniert dieser EA
Hier ist das Testergebnis und der Rücktestbericht. Getestet auf 1 Minute Zeitrahmen
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);
}
//+---------------------------------------------------------------+
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.
Terrance
In meinen Tests funktioniert der EA
Hier ist das Testergebnis und der Rücktestbericht. Getestet mit einem Zeitrahmen von 1 MinuteHallo 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
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
TerranceTerrance
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)
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
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
Terrancedenn 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)