Wie programmiert man? - Seite 34

 

Brauche Hilfe bei der Bearbeitung eines Teils von EuroX2_sl EA .......

Hallo an alle Programmierer,

Ich bin neu im Devisenhandel und auch neu in diesem Forum. Das erste Mal, ich bin Lernen ist 10 Punkte 3 dann, EuroX2_sl, erweitert von 10 Punkte 3 EA-Skript. Nachdem ich ein paar Tests gemacht habe, ist dieser EA für mich als Neuling ganz ok. Wenn vorwärts-Test, es hat Open Position gut, aber es hat nicht Close Position, wie ich brauche (auch ich bereits Bedingung), wenn der Markt umgekehrt oder wenn der Trend ändern. Vielleicht, etwas ist falsch mit dem Code (cos' Ich bin kein Programmierer) und ich denke, ich brauche Hilfe von jemandem von Ihnen, um es zu lösen. Könnten Sie bitte prüfen, welcher Teil falsch sein könnte?

Ich denke, dass die OPEN-Position in Ordnung ist, da sie Gewinn macht, aber das Problem liegt bei der CLOSE-Position, da sie nicht geschlossen wird (BUY oder SELL), selbst wenn der Indikator vorhanden ist, und das macht die schwebenden Verluste ziemlich viel .......

Jeder, der sich damit auskennt, möge mir bitte helfen, diesen Code zu bearbeiten.......

Der Code, wie ich es tat, ist :

-------- Teil des Skripts von EuroX2_sl erweitert von 10 Punkte 3 wie ich denke, ist für Close Position -------

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

// es ist wichtig, den Markt richtig zu betreten,

// aber es ist noch wichtiger, ihn richtig zu verlassen...

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // Prüfung auf offene Position

OrderType()<=OP_BUY &&

OrderType()>=OP_SELL &&

OrderType()>=OP_BUY &&

OrderSymbol()==Symbol()) // Prüfung auf Symbol

{

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

if(OrderType()==OP_BUY) // Long-Position wird eröffnet

{

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

//+ BEDINGUNG FÜR DAS SCHLIESSEN DER POSITION

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

//+--------------- KAUFPOSITION SCHLIESSEN ----------------------------

if ( Stoch_Main_M15_Cu < Stoch_Sig_M15_Cu )

//+ Stochastik Haupt < Stochastik Signal

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

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // Position schließen

return(0); // exit

}

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

// Prüfung auf Trailing-Stop

if(NachlaufenderStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

//+--------------- SCHLIESSEN SIE DIE VERKAUFSPOSITION --------------------------------

else // Gehe zu Short-Position

{ //+ NICHT ENTFERNEN

if(OrderType()==OP_SELL) // Short-Position wird eröffnet

{

}

// soll sie geschlossen werden?

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

wenn ( Stoch_Main_M15_Cu > Stoch_Sig_M15_Cu )

//+ stochastischer Hauptteil > stochastisches Signal

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

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // Position schließen

return(0); // Ausstieg

}

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

// Prüfung auf Trailing Stop

if(NachlaufenderStop>0)

{

if((OrderOpenPrice()-Ask)>(Punkt*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Poi nt*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

--------------------------------------------------------------

Ich danke Ihnen,

fxgroup

 

Welches sind die besten wöchentlichen/täglichen Terminindikatoren?

Diese Frage könnte an erfahrene Trader gerichtet werden.

Welche sind die zuverlässigen (bereits getesteten) Indikatoren, die uns eine Idee über die Haupttrendbewegung während geben könnten:

1- Zukünftige Woche

2- Zukünftiger Tag (oder nächster Tag)

Ich frage nicht nach B/S-Einstiegsniveaus.

Hinweis: Ich denke, sobald wir die Bewegungsrichtung für die nächste Woche definieren, können wir eine Basis für den Zeitpunkt des Einstiegs schaffen.

Vielen Dank

 

mql-Frage

Code:

// wenn wir Positionen eröffnet haben, kümmern wir uns um sie

//mit Änderung des Stoploss

cnt=OrdersTotal();

while(cnt>=0)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed==False)

{

Print("Ticket ",OrderTicket()," modified.");// warum wird hier vor dem Ändern von Aufträgen geschrieben (wie ich es verstehe)?

if (OrderType()==OP_SELL)

{

wenn (NachlaufenderStopp>0)

{

if ((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))

{

wenn (OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple);

return(0);

Hallo zusammen, kann mir jemand erklären, warum :Print("Ticket ",OrderTicket()," modified."); vor dem Ändern der Order geschrieben wird. So wie ich es verstehe, wird es"order ticket modified" drucken, auch wenn es nicht geändert wurde. Es ist ein Stück Terminator-Code.

Ich danke Ihnen.

 
Flytox:
Code:

// wenn wir Positionen eröffnet haben, kümmern wir uns um sie

//mit Änderung des Stoploss

cnt=OrdersTotal();

while(cnt>=0)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed==False)

{

Print("Ticket ",OrderTicket()," modified.");// warum wird hier vor dem Ändern von Aufträgen geschrieben (wie ich es verstehe)?

if (OrderType()==OP_SELL)

{

wenn (NachlaufenderStopp>0)

{

if ((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))

{

wenn (OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple);

return(0);

Hallo zusammen, kann mir jemand erklären, warum :Print("Ticket ",OrderTicket()," modified."); vor dem Ändern der Order geschrieben wird. So wie ich es verstehe, wird es "order ticket modified" drucken, auch wenn es nicht geändert wurde. Es ist ein Stück Terminator-Code.

Ich danke Ihnen.

Sie haben Recht, es sollte nach der Änderung geschrieben werden oder die Meldung sollte lauten: "Trying to modify order : ",OrderTicket()

 

Danke Kalenzo, ich lerne gerade mql und deine Artikel und Antworten sind sehr hilfreich, danke nochmal.

 

Es könnte ausreichen, wenn Sie die folgenden vier Bearbeitungen vornehmen:

1. Zeile 102 auskommentieren, und zwar als

//IsTrade = True;[/PHP]

2. Change blank line 104 to be

if ( Bid > OrderOpenPrice() - GAP * Point ) IsTrade = true;

3. Change blank line 120 to be

[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;

4. Fügen Sie die Variable "GAP" (extern int) hinzu, die die Anzahl der Pips angibt, bei denen die "Absicherung" erfolgen soll.

Allerdings hat jemand irgendwo in diesem Forum schon einmal darauf hingewiesen, dass man nicht wirklich im selben Symbol "hedgen" kann; das ist so ziemlich das Gleiche wie den Verlust hinzunehmen. Vielleicht ist es besser, den Verlust hinzunehmen und dann wieder einzusteigen, wenn sich der Kurs wieder umkehrt....

 
ralph.ronnquist:
Es könnte ausreichen, wenn Sie die folgenden vier Bearbeitungen vornehmen:

1. Zeile 102 auskommentieren, wird zu

//IsTrade = True;[/PHP]

2. Change blank line 104 to be

if ( Bid > OrderOpenPrice() - GAP * Point ) IsTrade = true;

3. Change blank line 120 to be

[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;

4. Fügen Sie die Variable "GAP" (extern int) hinzu, die die Anzahl der Pips angibt, bei denen die "Absicherung" erfolgen soll.

Allerdings hat schon jemand irgendwo in diesem Forum darauf hingewiesen, dass man sich nicht wirklich im selben Symbol "absichern" kann; das ist so ziemlich das Gleiche wie den Verlust hinzunehmen. Vielleicht ist es besser, den Verlust hinzunehmen und dann wieder einzusteigen, wenn sich der Kurs wieder umkehrt....

Das hat nicht geholfen. Und, um genauer zu sein, was ich eigentlich möchte, dass mein EA das Folgende tut:

Der EA wird einen Kauf/Verkauf Handel basierend auf bestimmte Bedingung eingeben. Sobald der erste Handel eingegangen ist, kann es manchmal drei bis fünf Tage dauern, bis er schließlich mit Gewinn abgeschlossen wird. In der Zwischenzeit, während dieser drei- bis fünftägigen Periode, kann es mehrere Handelsmöglichkeiten in die entgegengesetzte Richtung geben. Ich möchte, dass der EA diese Gelegenheiten nutzt, während er den ursprünglichen Handel offen lässt, weil er schließlich mit Gewinn abschließen wird. Diese zusätzlichen Handelsmöglichkeiten in die entgegengesetzte Richtung des ursprünglichen Handels werden technisch gesehen eine Absicherung gegen den ursprünglichen Handel sein, auch wenn sie schließlich auch mit Gewinn schließen werden. Um klar zu sein, obwohl, ich immer noch nur wollen, dass die EA nur einen Handel offen in die gleiche Richtung haben. Also, die maximale Trades offen zur gleichen Zeit wäre ein Kauf und ein Verkauf sein.

Ich hoffe, das hilft!

Vielen Dank für Ihre Antwort

 

Hmm; ich habe Ihren EA nicht getestet, aber wenn ich die Logik lese, sieht es für mich so aus, als ob das Einzige, was einen nachfolgenden Verkauf nach einem Kauf verhindert, ist, dass "IsTrade" wahr ist. (Abgesehen davon, dass ein Sell nicht gleichzeitig mit einem Buy eröffnet werden kann)

Wenn Sie also wollen, dass die Verkaufslogik bedingungslos angewendet wird, hätte ich gedacht, dass nur meine Änderung (1) - vergessen Sie 2-4 - ausreichen würde. Oder entfernen Sie die "IsTrade"-Logik.

Es gibt zwar die untergeordnete Logik mit "TickCheck" und "BarCount", die einen weiteren Handel zum gleichen Tick oder zum gleichen Balken stoppt, aber ich nehme an, Sie wollen, dass das trotzdem gilt.

Natürlich kann ich nicht viel über den Signalisierungsteil sagen, den Sie ausgelassen haben. Wenn z.B. das Auslösen eines "Sell_Signal" die "BuyOrders" berücksichtigt, dann gibt es noch mehr zu tun.

 

Coding interessant machen

Bevor Sie BACK drücken, würden Sie mir bitte helfen?

Ich bin neu in der Codierung von Indikatoren, aber ich weiß, wie man EA's codiert, obwohl. Nicht 100%, aber gut genug.

Wie auch immer, ich frage mich, ob mir jemand helfen könnte.

Können Sie mir bitte jede Zeile erklären und mir ein Beispiel geben.

p.s. Es ist ein Teil eines Codes für MACD:

int start()

{

int limit;//what does Limit equal,0?

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd counted in the 1-st buffer

for(int i=0; i<limit; i++)//i<0?

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- signal line counted in the 2-nd buffer

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- done

return(0);

}

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

Ich würde mich sehr freuen, wenn mir jemand oder mehrere Leute helfen und mir Tipps für die Kodierung von Indikatoren oder ähnliches geben würden.

Dankeschön,

Dan.

 

Wie führt man ein Skript innerhalb eines EA aus?

Hallo,

Ich würde gerne wissen, wie man ein Skript in einem Skript-Verzeichnis innerhalb eines EAs ausführt.

Wenn (Bedingung wahr)

{

Skript ausführen;

}

Vielen Dank im Voraus

Mit freundlichen Grüßen

Jimmy