Trailing Stops und Trailing Profit - Seite 3

 
deVries:


Danke für die Korrekturen.

Wenn wir count=count-1 verwenden, dann ist es nicht notwendig, die for-Schleife zu verwenden, die ich zwei Posts zuvor versucht habe, zu lösen.

Und manchmal ist es einen Versuch wert. Wie gerade eben habe ich einige Fehler selbst behoben und es hat mir so viel Freude bereitet!

Nochmals vielen Dank. Take Profit Teil funktioniert soweit wie erwartet.

 
Arav007:


Vielen Dank für die Korrekturen.

Wenn wir count=count-1 verwenden, dann ist es nicht nötig, die 'for'-Schleife zu verwenden, die ich zwei Posts zuvor versucht habe, zu lösen.

Und manchmal ist es einen Versuch wert. Wie gerade eben habe ich einige Fehler selbst behoben und es hat mir so viel Freude bereitet!

Nochmals vielen Dank. Take Profit Teil funktioniert soweit wie erwartet.


Testen Sie weiter und lesen Sie Codes, die Sie sehen, und Sie lernen eine Menge,

Sie können selbst viel lernen

wenn Sie versuchen, die Dinge zu verstehen und zu erforschen

mit Testen und Erstellen auf Ihrem eigenen 'Demo'-Testkonto

 
deVries:


Testen Sie weiter und lesen Sie Codes, die Sie sehen, und Sie lernen eine Menge,

Du kannst selbst viel lernen

wenn Sie versuchen, die Dinge zu verstehen und zu erforschen

mit Testen und Erstellen auf Ihrem eigenen "Demo"-Testkonto


Ja, ich versuche zu verstehen, was ich meine.

Jetzt habe ich mir für den"Stop Loss Trailing"-Teil etwas überlegt.

Die Bedingung für den Start der 'Trailing Stop' Schleife:

if(OrdersTotal()>0){

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

Trailing Stops;

}

}

Ich habe mir gedacht, dass diese Schleife so oft durchlaufen wird, wie die Anzahl der insgesamt geöffneten Aufträge. Und mein Ziel ist es, die Stops für die letzte/dritte Order nicht nachzuziehen.

Wenn ich also die Schleife bei der "zweiten" Order stoppe, wie würde das aussehen?

for(cnt=OrdersTotal()-1;cnt>0;cnt--)

 
Arav007:


Ja, ich versuche zu verstehen, was ich meine.

Jetzt habe ich mir für den Teil "Stop Loss Trailing" etwas überlegt.

Die Bedingung für den Start der 'Trailing Stop' Schleife:

if(OrdersTotal()>0){

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

Trailing Stops;

}

}

Ich habe mir gedacht, dass diese Schleife so oft durchlaufen wird, wie die Anzahl der insgesamt geöffneten Aufträge. Und mein Ziel ist es, die Stops für die letzte/dritte Order nicht nachzuziehen.

Wenn ich also die Schleife bei der "zweiten" Order stoppe, wie würde das aussehen?

for(cnt=OrdersTotal()-1;cnt>0;cnt--)


Finde das richtige Symbol und die richtige magische Zahl

dann ist es ein Handel Ihres EA, der nun prüft, ob Bid/Ask xx Pips vom orderopenprice() entfernt ist

Suchen Sie hier und Sie werden Beispiele finden, die Sie verwenden können

 
deVries:


Finden Sie das richtige Symbol und die richtige magische Zahl

dann ist es ein Handel von Ihrem EA jetzt prüfen, ob Bid/Ask ist xx Pips weg von orderopenprice()

Suchen Sie hier und Sie werden Beispiele finden, die Sie verwenden können


Ich habe die Prüfung und den bedingten Teil.

 if(OrdersTotal()>0){



        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

                

                        if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits)

                        && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){

 tStopLoss = NormalizeDouble(Bid-TrailingStop*vPoint,Digits); 

}

}

Aber hier verstehe ich nicht, wie man zwischen den Trades unterscheiden kann. Die Funktion 'Trailing Stop' wird beim Start des Programms aufgerufen.

 

*Nach Erreichen einer bestimmten Gewinngrenze, z.B. 10 Pips, wird der Stop Loss auf 5 Pips gesetzt. Wenn der Handel nun wieder auf 5 Pips zurückgeht, werden "zwei Drittel" des Handels geschlossen.

*Das verbleibende "Drittel" läuft weiter und der "Trailing Stop" wird dann nicht angewendet.

Sie haben drei Trades, also wie wollen Sie die drei Trades behandeln

damit es so läuft, wie Sie es wollten?

oder welches Geschäft nach einem bestimmten Gewinn geändert werden muss...

 
deVries:

*Nach Erreichen einer bestimmten Gewinngrenze, z.B. 10 Pips, wird der Stop Loss auf 5 Pips gesetzt. Wenn der Handel nun wieder auf 5 Pips zurückgeht, werden "zwei Drittel" des Handels geschlossen.

*Das verbleibende "Drittel" läuft weiter und der "Trailing Stop" wird dann nicht angewendet.

Sie haben drei Trades, also wie wollen Sie die drei Trades behandeln

damit es so läuft, wie Sie es wollten?

oder welche nach einem bestimmten Gewinn geändert werden muss...


Um die Sache zu vereinfachen, habe ich beschlossen, mit "drei" separaten Geschäften desselben Lots zu arbeiten, d.h. wenn zwei von ihnen geschlossen werden, werden "zwei Drittel" der gesamten Geschäfte (Lots) geschlossen.

Der verbleibende Handel (ein Drittel) läuft weiter, d.h. der "Trailing Stop" wird nicht angewendet.

DerStop-Loss wird für die ersten beiden Trades auf einen bestimmten Pips-Gewinn verschoben, aber für den dritten wird er nicht verschoben.

 
Arav007:


Um die Angelegenheit zu vereinfachen, habe ich mich entschieden, mit "drei" separaten Geschäften desselben Lots zu arbeiten, d.h. wenn zwei von ihnen geschlossen werden, werden "zwei Drittel" der gesamten Geschäfte (Lots) geschlossen.

Der verbleibende Handel (ein Drittel) läuft weiter, d.h. der "Trailing Stop" wird für ihn nicht angewendet.

Der Stop-Loss wird für die ersten beiden Trades auf eine bestimmte Anzahl von Pips im Gewinn verschoben, für den dritten jedoch nicht.


Sie müssen einige Funktionen verwenden, um die Änderung richtig durchzuführen

In diesem Moment müssen Sie irgendwie einen Weg finden, einen Handel auszuwählen, den Sie ändern müssen.

Prüfen Sie die Funktionen hier Trade Functions und schauen Sie, ob Sie Trade 1 auswählen können

 
deVries:


Sie müssen einige Funktionen verwenden, um die Änderung richtig zu machen

in diesem Moment müssen Sie irgendwie einen Weg finden, einen Handel auszuwählen, den Sie ändern müssen

Prüfen Sie die Funktionen hier Trade Functions und schauen Sie, ob Sie Trade 1 auswählen können


Kann die Indexnummer mit der Ticketnummer verglichen werden?

   if (count==3) 

    {

  SellOrder_1=OrderSend(Symbol() , iOrderType_Sell , LotSize,OpenPrice,Slippage ,dStopLossPrice ,dTakeProfitPrice_1 , "Sell Order",MagicNumber , 0,Red);

                

    if (SellOrder_1>0) //Checking if the order was opened or not

      { 

      sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Sell order 1 sent successfully. Ticket=" + SellOrder_1;

      Sell_Order_Ticket_1=SellOrder_1;

      count = count - 1; 

      }

     else {

          iLastError = GetLastError();                               

          sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Error sending sell order 1. Error code=" + ErrorDescription(iLastError);



} 

} 

//Trailing Stop Function 

if(OrdersTotal()>0){

//

        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

                sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

if (cnt==Sell_Order_Ticket_1){

Proceed to Next 

} 

Bitte beziehen Sie sich auf die Color Blocked Teile oben.

Danke

 
Arav007:


Kann die Indexnummer mit der Ticketnummer verglichen werden?

Bitte beachten Sie die oben genannten Color Blocked Teile.

Danke


for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

Ihre Bestellsumme beträgt 3 Gewerke

tun Sie dies

//for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

for(cnt= 3 -1;cnt>=0;cnt--)
   {
   Print ("cnt =  ",cnt);
   }

Was lesen Sie, wenn Sie das Terminal öffnen und sich die Experten ansehen?

hat Sell_Order_Ticket_1 den gleichen Wert wie cnt?

Wenn ja, können Sie mir beweisen, dass es so ist...

wenn nicht, warum nicht?