Hilfe fineturn EA

 

Kann mir jemand bei der Feinabstimmung eines EA helfen?

Es kann besser werden - ich sehe nur, dass an den falschen Stellen gekauft und verkauft wird.

Dateien:
jbtest3.mq4  5 kb
 
delcor wrote >>

Kann mir jemand bei der Feinabstimmung eines EA helfen?

er kann es besser machen - alles was ich sehe sind Käufe und Verkäufe an den falschen Stellen

Möchten Sie Ihre Strategie erläutern? Wir müssen prüfen, ob der Code der angegebenen Strategie entspricht, bevor wir ihn feineinstellen können.

Wenn die Codes korrekt sind und wir schlechte Trades von dem EA erhalten, dann ist die Strategie schuld? Funktioniert die Strategie beim manuellen Handel gut?

 
ronaldosim:

Möchten Sie Ihre Strategie erläutern? Wir müssen prüfen, ob sie entsprechend der angegebenen Strategie codiert ist, bevor wir sie feineinstellen können.

Wenn die Codes korrekt sind und wir schlechte Trades von dem EA erhalten, dann ist die Strategie schuld? Funktioniert die Strategie beim manuellen Handel gut?

Vielen Dank für Ihre Rückmeldung

die Strategie ist - es muss nur kaufen oder verkaufen, wenn ema kreuzen. es gibt eine Einstellung, die gut funktioniert und wenn es nur kaufen und verkaufen auf die Kreuze wird es Gewinn nehmen

Ich habe es gebunden, wie es ist, aber es kauft nicht auf die Kreuzung der 2 ema's

es muss schließen, um zu öffnen und kaufen, wenn kurze ema Kreuz die lange ema und umgekehrt. in diesem Stadium möchte ich es nur zu tun, dass.

dann können wir die 2. Stufe zu tun. kein Geld-Management in diesem Stadium. ich bin neu zu programmieren, sondern wollen mehr lernen

Können Sie mir helfen?

wie es ist, es tun die Arbeit auf den eur/usd 15 und1h tf - aber nicht genug

 
delcor wrote >>

Vielen Dank für Ihr Kommen

die Strategie ist - es muss nur kaufen oder verkaufen, wenn ema Kreuz. es gibt eine Einstellung, die gut funktioniert und wenn es nur kaufen und verkaufen auf die Kreuze wird es Gewinn nehmen

ich habe es gebunden, wie es ist, aber es kauft nicht auf die Kreuzung der 2 ema's

es muss schließen, um zu öffnen und kaufen, wenn kurze ema kreuzen die lange ema und umgekehrt. in diesem Stadium möchte ich es nur zu tun, dass.

dann können wir die 2. Stufe zu tun. kein Geld-Management in diesem Stadium. ich bin neu zu programmieren, sondern wollen mehr lernen

Können Sie mir helfen?

wie es ist, es tun den Job auf dem eur/usd 15 und1h tf - aber nicht genug

Ich vermute, dass Ihr Code für EMA-Kreuzungen nicht korrekt ist

Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);

Sie benötigen jeweils zwei iMA für das LongEma und das ShortEma

SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);

LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,1);

SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);

LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);

und zur Prüfung auf Kreuzung

wenn (SEMA1>LEMA1 && SEMA2<LEMA2) Kaufauftrag senden

und für Verkauf

wenn (SEMA1<LEMA1 && SEMA2>LEMA2) Verkaufsorder senden

 
ronaldosim:

Ich vermute ja; für EMA-Kreuzungen ist Ihr Code falsch

Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);

Sie benötigen jeweils zwei iMA für das LongEma und das ShortEma

SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);

LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,1);

SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);

LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);

und zur Prüfung auf Kreuzung

wenn (SEMA1>LEMA1 && SEMA2<LEMA2) Kaufauftrag senden

und für Verkauf

wenn (SEMA1<LEMA1 && SEMA2>LEMA2) Verkaufsauftrag senden

ok, also die

SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);

LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);

SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);

LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);

muss in der "Check for Open Orders"-Bedingung platziert werden - unter "Get Moving Average"

und der "

if (SEMA1>LEMA1 && SEMA2<LEMA2) send buy order" wo ?

auch die LEMA1 UND LEMA2 muss ich oben definieren


noch neu in diesem

mein skype ist delcor59 wenn Sie mich skypen wollen

Danke für Ihre Hilfe

 
delcor wrote >>

ok, also die

SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);

LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);

SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);

LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);

muss in der "Check for Open Orders"-Bedingung platziert werden - unter "Get Moving Average"

und der "

if (SEMA1>LEMA1 && SEMA2<LEMA2) send buy order" wo ?

auch die LEMA1 UND LEMA2 muss ich oben definieren

noch neu in diesem Bereich

mein skype ist delcor59 wenn Sie mich skypen wollen

Danke für Ihre Hilfe

etwas wie dieses modifizieren von Ihren eigenen Codes....

void CheckForOpen()
{
double Ema;
int res;
//---- geht nur für die ersten Ticks des neuen Balkens in den Handel
if(Volumen[0]>1) return;
//---- gleitenden Durchschnitt ermitteln
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);

//---- Verkaufsbedingungen
// if(Open[1]>Ema && Close[1]<Ema)
wenn (SEMA1<LEMA1 && SEMA2>LEMA2)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
zurück;
}
//---- Kaufbedingungen
// if(Open[1]<Ema && Close[1]>Ema)
wenn (SEMA1>LEMA1 && SEMA2<LEMA2)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
zurück;
}
//----
}

void CheckForClose()
{
double Ema;
//---- nur für die ersten Ticks des neuen Balkens handeln
if(Volumen[0]>1) return;
//---- gleitenden Durchschnitt ermitteln
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
//---- Auftragsart prüfen
if(OrderType()==OP_BUY)
{
// if(Open[1]>Ema && Close[1]<Ema)
if (SEMA1<LEMA1 && SEMA2>LEMA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
// if(Open[1]<Ema && Close[1]>Ema)
if(SEMA1>LEMA1 && SEMA2<LEMA2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
break;
}
}
//----
}

 
ronaldosim:

so etwas wie diese Modifizierung für Ihre eigenen Codes....

void CheckForOpen()
{
double Ema;
int res;
//---- geht nur für die ersten Ticks des neuen Balkens in den Handel
if(Volumen[0]>1) return;
//---- gleitenden Durchschnitt ermitteln
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLUSS,2);

//---- Verkaufsbedingungen
// if(Open[1]>Ema && Close[1]<Ema)
wenn (SEMA1<LEMA1 && SEMA2>LEMA2)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
zurück;
}
//---- Kaufbedingungen
// if(Open[1]<Ema && Close[1]>Ema)
wenn (SEMA1>LEMA1 && SEMA2<LEMA2)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
zurück;
}
//----
}

void CheckForClose()
{
double Ema;
//---- nur für die ersten Ticks des neuen Balkens handeln
if(Volumen[0]>1) return;
//---- gleitenden Durchschnitt ermitteln
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PREIS_SCHLIESSEN,2);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
//---- Auftragsart prüfen
if(OrderType()==OP_BUY)
{
// if(Open[1]>Ema && Close[1]<Ema)
if (SEMA1<LEMA1 && SEMA2>LEMA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
// if(Open[1]<Ema && Close[1]>Ema)
if(SEMA1>LEMA1 && SEMA2<LEMA2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
break;
}
}
//----
}

Nochmals vielen Dank

Irgendetwas stimmt nicht. Wenn ich die Ea zurückteste, zeigt sie nur Käufe und keine Verkäufe an.

 
delcor wrote >>

Nochmals vielen Dank

etwas ist nicht richtig. wenn ich den Ea Backtest mache, zeigt er nur Käufe und keine Verkäufe

bemerkt, dass je nachdem, welcher Auftrag zuerst ausgelöst wird, dh kaufen oder verkaufen, sobald die Kreuzung beginnt Sie eine Bestellung auslösen und wenn die entgegengesetzte Kreuzung Sie die Bestellung zu schließen; in yr start(), wenn u für das Vorhandensein von Markt-Order zu überprüfen, u wird verhindern, dass die eine von der Art der Bestellung nie zu feuern, dh wenn u mit kaufen beginnen wird es immer kaufen; wenn u mit einem Verkauf Auftrag starten, wird es immer ein Verkauf sein; nehmen Sie diese Bedingung überprüfen

 
ronaldosim:

bemerkt, dass je nachdem, welcher Auftrag zuerst abgefeuert wird, dh kaufen oder verkaufen, sobald die Kreuzung beginnt Sie einen Auftrag abfeuern und wenn die entgegengesetzte Kreuzung Sie den Auftrag zu schließen; in yr start(), wenn u für das Vorhandensein von Markt-Order zu überprüfen, werden u verhindern, dass die eine der Auftragsart nie zu feuern, dh wenn u mit kaufen beginnen, wird es immer kaufen; wenn u mit einem Verkaufsauftrag starten, wird es immer ein Verkaufsauftrag sein; nehmen Sie diese Prüfbedingung

beziehen Sie sich auf die Prüfbedingung am unteren Ende des EA

//+------------------------------------------------------------------+
//| Startfunktion |
//+------------------------------------------------------------------+
void start()
{
//---- check for history and trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
//----

}


denn es gibt auch

void CheckForOpen()

void CheckForClose()

 
delcor:

Beziehen Sie sich auf die Prüfbedingung am Ende des EA

//+------------------------------------------------------------------+
//| Startfunktion |
//+------------------------------------------------------------------+
void start()
{
//---- prüft auf Historie und Handel
if(Bars<100 || IsTradeAllowed()==false) return;
//---- Berechnung der offenen Aufträge nach aktuellem Symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
sonst CheckForClose();
//----

}


denn es gibt auch

void CheckForOpen()

void CheckForClose()




Sagen Sie mir, ob es ein Testsystem für die EA-Programmierung gibt, das Ihnen Schritt für Schritt zeigt, was passiert, wenn dieser EA läuft

 
delcor wrote >>

Beziehen Sie sich auf die Prüfbedingung am Ende des EA

//+------------------------------------------------------------------+
//| Funktion starten |
//+------------------------------------------------------------------+
void start()
{
//---- prüft auf Historie und Handel
if(Bars<100 || IsTradeAllowed()==false) return;
//---- Berechnung der offenen Aufträge nach aktuellem Symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
sonst CheckForClose();
//----

}

denn es gibt auch

void CheckForOpen()

void CheckForClose()

if(Bars<100 || IsTradeAllowed()==false) return;
//---- berechnet offene Aufträge nach aktuellem Symbol
CheckForOpen();
CheckForClose();
//----