Trailing Stops und Trailing Profit - Seite 5

 
Arav007:


TP des 3. Trades= 108.536 [ Ich habe diesen TP in einem solchen Abstand gesetzt, so dass es so wirkt, als gäbe es keinen TP]

Nun, nach meiner Anforderung, wenn der Preis würde sagen, 7 pip [103.603] im Gewinn, der Stop Loss von

1. und 2. Handel wird sagen wir 1 Pip Gewinn [103.543] und der Stop Loss des 3. Handels wird bei 103.386 bleiben.

Wie in der untenstehenden Abbildung:

Die 1. GBPUSD-Order wurde mit 10 Pips Gewinn geschlossen.

Der 2. Auftrag läuft noch und sein SL wurde verschoben.

Für den 3. Handel wurde der SL ebenfalls verschoben, was ich nicht möchte.

BuyOrder_3=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,0, "Buy Order",MagicNumber, 0,Blue);//tp 0
 
deVries:


Danke! Dies ist ein anderer Weg und guter Weg in der Tat zu setzen No TP.

Aber was ist mit dem SL? Wie kann ich es ohne Variable Order Ticket Weg tun?

Mit freundlichen Grüßen

 
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 (OrdersTotal()==3){

if (cnt==1){

Fixed Stop Loss

}

else{

Trailing Stop Loss

}

}    // end of  if (OrdersTotal()==3)

else{    // Looking for 2nd option                           

if (OrdersTotal()==2){                           // 10 pips TP trade can be closed already

if(cnt== 0){

Fixed Stop Loss

}

else{

Trailing Stop Loss

}

}  // End of  if (OrdersTotal()==2)

}  // End of  else

 

Was denken Sie darüber? Ist dies OK für Stop Loss Teil?

 
Arav007:

Was denken Sie darüber? Ist das OK für den Stop-Loss-Teil?


Nein, das ist falsch.

aber was mir mehr missfällt, ist die Art und Weise, wie ich lesen muss

Es ist unlesbar, was Sie hier schreiben. Ändern Sie Ihren Stil und schreiben Sie Ihren Code !!!!

leere Zeilen werden nicht benötigt , das ist dasselbe wie bei Ihnen

Kannst du es so machen?

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 (OrdersTotal()==3) 
              {
              if (cnt==1)
                 {
                 Fixed Stop Loss     
                 }
               else{
                   Trailing Stop Loss
                   }
              }    // end of  if (OrdersTotal()==3)
           else{    // Looking for 2nd option                           
               if (OrdersTotal()==2)
                 {                           // 10 pips TP trade can be closed already
                 if(cnt== 0)
                   {
                   Fixed Stop Loss
                   }
                   else{
                       Trailing Stop Loss
                       }
                 }  // End of  if (OrdersTotal()==2)
   }  // End of  else

keine Leerzeilen

es ist leicht zu erkennen, wo '{' beginnt und in welchem Teil des Codes es sich befindet, wo '}' endet

es kann vorkommen, dass Sie mehr als 20 Trades offen haben, die Sie nicht innerhalb der Schleife verwenden können if (OrdersTotal()==

oder if(cnt==

Warum machen Sie diese Auftragsschleife?

Sie machen diesen Orderloop, um alle Ihre Trades nacheinander durchzugehen.

Was Sie codieren müssen, ist ein BreakEven

Was macht ein Fixed Stop Loss????

 
deVries:


Nein, das ist falsch.

Aber was mir noch mehr missfällt, ist die Art, wie ich lesen muss.

es ist unlesbar, was du hier schreibst, ändere deinen Stil und schreibe deinen Code !!!!

leere Zeilen werden nicht benötigt , das ist dasselbe wie bei dir

Kannst du es so machen?

keine Leerzeilen

es ist leicht zu erkennen, wo '{' beginnt und in welchem Teil des Codes es sich befindet, wo '}' endet

es kann vorkommen, dass Sie mehr als 20 Trades offen haben, die Sie nicht innerhalb der Schleife verwenden können if (OrdersTotal()==

oder if(cnt==

Warum machen Sie diese Auftragsschleife?

Sie machen diesen Orderloop, um alle Ihre Trades nacheinander durchzugehen.

Was Sie codieren müssen, ist ein BreakEven

Was macht der Fixed Stop Loss ????


Tut mir leid, eigentlich fühle ich mich mit den leeren Zeilen wohler. Wie auch immer, ich werde es verfolgen, während ich hier Codes poste.

Ich dachte, dass 'OrdersTotal()' nur die Orders des Paares abruft, an das der EA gebunden ist.

Aber es holt wahrscheinlich alle Aufträge und dann unterscheiden wir die Aufträge des verbundenen Paares mit anderen Aufträgen

mit Hilfe dieser Zeile:

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

Richtig?

Mit festem Stop-Loss meine ich, dass sich der "anfängliche" Stop-Loss nicht bewegt.

Mit freundlichen Grüßen

 
deVries:


ändern sie ihren stil beim schreiben ihres codes !!!!

Leerzeilen nicht erforderlich


Es ist Ansichtssache, aber im Allgemeinen gilt es als gute Praxis, beim Kodieren Leerzeilen (an den logischen Stellen) zu verwenden. Auf jeden Fall ist es nicht wirklich etwas, das es wert ist, in anderen Codes auf diese Art und Weise hervorgehoben zu werden .

Wenn Sie sich den Apache- oder Linux-Kernel-Quellcode ansehen (zwei sehr stark kooperierende Open-Projekte), werden Sie viele Leerzeilen sehen.


APACHE-WEBSERVER:

AP_DECLARE_NONSTD(const char *) ap_set_string_slot(cmd_parms *cmd,
                                                   void *struct_ptr,
                                                   const char *arg)
{
    int offset = (int)(long)cmd->info;

    *(const char **)((char *)struct_ptr + offset) = arg;

    return NULL;
}

LINUX KERNEL:


static int jz4740_musb_init(struct musb *musb)
{
 musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2);
 if (!musb->xceiv) {
 pr_err("HS UDC: no transceiver configured\n");
 return -ENODEV;
 }

 /* Silicon does not implement ConfigData register.
 * Set dyn_fifo to avoid reading EP config from hardware.
 */
 musb->dyn_fifo = true;

 musb->isr = jz4740_musb_interrupt;

 return 0;
} 
 
Arav007:


Manchmal kann eine leere Zeile bequem sein, aber nicht, wenn man sie nach jeder geschriebenen Zeile macht.

Außerdem macht das Setzen von geschweiften Klammern das Lesen des Codes einfacher


vom MACD, um ihn als Beispiel zu verwenden

   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         //--- long position is opened
         if(OrderType()==OP_BUY)
           {

            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     //--- modify order and exit
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return;
                    }
                 }
              }
           }
         else // go to short position
           {

            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     //--- modify order and exit
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return;
                    }
                 }
              }
           }
        }
     }

Jetzt sehen Sie, wie Sie den Preis-Währungs-Chart mit dem Order-Open-Price Ihres Handels vergleichen können

Sie müssen so etwas auch tun...

 
ydrol:

Es ist Ansichtssache, aber im Allgemeinen gilt es als gute Praxis, beim Programmieren Leerzeilen (an den logischen Stellen) zu verwenden. Auf jeden Fall ist es nicht wirklich etwas, das es wert ist, in anderen Codes auf diese Art und Weise hervorgehoben zu werden .

Wenn Sie sich den Apache- oder Linux-Kernel-Quellcode ansehen (zwei sehr stark kooperierende Open-Projekte), werden Sie viele Leerzeilen sehen.


APACHE-WEBSERVER:

LINUX KERNEL:

der punkt ist, dass jede geschriebene zeile eine leere zeile ist

es wird schwierig, große Codes zu lesen , wenn man ständig nach oben/unten scrollt, um den Code zu lesen

und wenn es auch noch keine Logik für die Platzierung von { } gibt, wird es noch schwieriger, Fehler zu finden

 
deVries:


von MACD, um es als Beispiel zu verwenden

Jetzt sehen Sie, wie Sie den Preis-Währungs-Chart mit dem Order-Open-Price Ihres Handels vergleichen können.

Sie müssen so etwas auch tun...


Ich habe eine solche Kursvergleichsfunktion.

Wie kann ich den 'Comment' der ausgewählten Order mit OrderSend() vergleichen, so wie wir die Magic Number der ausgewählten Order?

Zum Beispiel, wenn ich überprüfen möchte, ob OrderComment() mit dem Kommentar der ausgewählten Order übereinstimmt?

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

Jetzt kann ich so vergleichen:

OrderComment()=="Sell Order" // ?

Kann ich auch den Kommentar der OrderSend() Funktion wie folgt definieren:

string comment_sell="Sell Order";

SellOrder=OrderSend(Symbol(), iOrderType_Sell, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice, comment_sell ,MagicNumber, 0,Red);

Und dann vergleichen:

if (OrderComment()=="comment_sell") // ?

Grüße

 
Arav007:


Ich habe eine solche Preisvergleichsfunktion.

Wie kann ich den "Kommentar" der ausgewählten Bestellung in OrderSend() mit der Magic Number der ausgewählten Bestellung vergleichen?

Zum Beispiel, wenn ich überprüfen möchte, ob OrderComment() mit dem Kommentar der ausgewählten Order übereinstimmt?

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

Jetzt kann ich so vergleichen:

OrderKommentar()=="Verkaufsorder" // ?

Kann ich auch den Kommentar der OrderSend() Funktion wie folgt definieren:

string comment_sell="Sell Order";

SellOrder=OrderSend(Symbol(), iOrderType_Sell, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice, comment_sell ,MagicNumber, 0,Red);

Und dann vergleichen:

if (OrderComment()=="comment_sell") // ?

Gruß


OrderComment kann von Ihrem Broker überschrieben werden

Sie wollen... Nun, nach meiner Anforderung, wenn der Preis würde sagen, 7 pip [103.603] im Gewinn, der Stop Loss von

Der Stop Loss des 1. und 2. Handels wird auf 1 Pip Gewinn [103,543] gesetzt und der Stop Loss des 3. Handels bleibt bei 103,386.

make extern int BreakEven = 7

         if(OrderType()==OP_BUY)
           {

            //--- check for BreakEven
            if(BreakEven>0)
              {
               if(Bid-OrderOpenPrice()>Point(*10)*BreakEven)
                 {
                  if(OrderStopLoss()<OrderOpenPrice())
                    {
                     //--- modify order
                     if(OrderTakeProfit()>Point)OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+Point(*10),OrderTakeProfit(),0,Green);
                    }
                 }
              }
           }

(* 10 ) Korrektur bei 5-stelligem Broker, um den Pipwert zu erhalten