Probleme bei der Prüfung auf offenen Handel - Seite 7

 
dazamate:
Ja, ich lese mir gerade noch einmal Ihren Kommentar durch, und was ich gemacht habe, ist falsch,
gibt mir nicht die Öffnungszeit des Balkens, müsste ich Time[0] verwenden?


Ja, oder......

tradeopened = TimeHour(TimeCurrent());
 
OrderDelete(OrderTicket( ) );  

Das war's, Raptor.


---------> http://clip2net.com/s/14aYs

 
dazamate:

Das war's, Raptor.


---------> http://clip2net.com/s/14aYs

LOL, ich bin froh, dass ich helfen konnte. . . :-)
 

Mate Sie haben eine Menge Hilfe, die ich endlich die ea in einem Zustand jetzt, wo ich anfangen kann Tuning bis die Strategie. Vielen Dank, aber ich bezweifle, dass Sie das letzte von mir gehört haben, sorry zu sagen haha


Auch ein großes Dankeschön an WHRoeder
 

Sooo.. Sie dachten, es war vorbei lol


Ich habe einen Code hinzugefügt, der den Stoploss von einem gleitenden Durchschnittswert ableitet. Der Code funktioniert gut auf Kauf Trades, aber es funktioniert nicht auf Verkauf Trades. Ich kann nichts entdecken, vielleicht könnt ihr es.


// Trailing Stop Code 

   if(Tradeopen()==true && emastoptrail==TRUE)                                  // Trades are open and Trailing stop feature is turned on
    {
      for(int tnumber2 = OrdersTotal()-1; tnumber2 >= 0 ; tnumber2--)                   //scan through open orders
       {
        if (OrderSelect(tnumber2, SELECT_BY_POS) && 
            OrderMagicNumber()==Mnumber3)                                                // The orders magic number is the same as the magic number used the profit trade
            {                                          
          
            if(OrderType()==OP_BUY && (iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1) > OrderStopLoss() ))       // The stop loss is less than the moving average value
          
               {
                OrderModify(OrderTicket(),OrderOpenPrice(),iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1),OrderTakeProfit(),0);  // Modify Stop to MA value
               }
            
            if(OrderType()==OP_SELL && (iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1) < OrderStopLoss() ))       // The stop loss is more than the moving average value
          
               {
                OrderModify(OrderTicket(),OrderOpenPrice(),iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1),OrderTakeProfit(),0);   // Modify Stop to MA value
               }
            }
       }
     }
 

Nun, der Trailing-Stop-Code ist möglicherweise nicht das Problem. Es gibt ein Problem mit dem Code, der schwebende Aufträge nach einer bestimmten Zeit löscht...


// DELETE PENDING ORDERS THAT HAVE NOT BEEN TRIGGERED WITHIN ' int = pendinglimit'

   if((iBarShift(Symbol(),60 ,tradeopened)>pendinglimit) && Tradeopen()==true)              // Check to see if pending orders have expired
     {
        for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--)                  //scan through open orders
        {
          if (OrderSelect(tnumber, SELECT_BY_POS) &&   
             ((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             ((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)))       // The orders magic number is the same as the magic number used in this ea
          
               {
                OrderDelete(OrderTicket( ) );                                            // Delete it
               }
        }
       
     }

Nachdem jeder Handel geöffnet ist, führe ich auch diesen Code aus...

tradeopened = TimeHour(TimeCurrent());

Ich kommentiere ...

(iBarShift(Symbol(),60 ,tradeopened)

und es fängt bei 1000 an und zählt einfach weiter bei jedem neuen Bar und wird nicht zurückgesetzt, wenn ich es ausführe ...

tradeopened = TimeHour(TimeCurrent());


Das macht die Prüfung zum Löschen von Pending Orders immer wahr und wenn der Handel nicht innerhalb des nächsten Taktes ausgelöst wird, wird die Pending Order sofort gelöscht -__-

Ahhh HELP lol

 

Ich glaube, ich habe das Problem behoben ....

Ich habe es so geändert, dass eine weitere Prüfung, um den Handel zu löschen, darin bestand, die maximal zulässige Zeit, zu der ein schwebender Auftrag geöffnet werden kann, zurückzustellen und zu sehen, ob sie mit der Zeit übereinstimmt, zu der der Handel geöffnet wurde :)

  for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--)                  //scan through open orders
        {
          if (OrderSelect(tnumber, SELECT_BY_POS) &&   
             ((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             ((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)) &&       // The orders magic number is the same as the magic number used in this ea
              (iTime(   Symbol(), 60, pendinglimit) == tradeopened))
               {
                OrderDelete( OrderTicket() );                                            // Delete it
               }
        }
 
dazamate:

Ich glaube, ich habe das Problem behoben ....

Ich habe es so geändert, dass eine weitere Prüfung zum Löschen des Trades darin bestand, die maximal erlaubte Zeit, zu der eine schwebende Order geöffnet werden kann, zurückzuschieben und zu sehen, ob sie mit der Zeit übereinstimmt, zu der der Trade geöffnet wurde :)

Sie haben fast so etwas wie das, was ich mir vorstellte ... .

Es gibt ein Problem bei der Verwendung Ihrer tradeopened-Variable ... wenn es offene Trades gibt und der EA heruntergefahren wird, verlieren Sie die Informationen in dieser Variablen ... warum ersetzen Sie sie nicht durch OrderOpenTime( ) und machen etwas wie dies ...

for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--)                  //scan through open orders
        {
          if (OrderSelect(tnumber, SELECT_BY_POS) &&   
             ((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             ((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)) &&       // The orders magic number is the same as the magic number used in this ea

              (iBarShift(OrderSymbol(),PERIOD_H1 ,OrderOpenTime()) - pendinglimit) <= 0));    //  <----------- this . . .

               {
                OrderDelete( OrderTicket() );                                            // Delete it
               }
        }
 
Das einzige Problem ist, dass ich die ibarshift fucntion vor und aus irgendeinem Grund war es die Ausgabe von 1000 +
 

Auch raptor Ich muss wieder Ihr Gehirn zu pflücken.... :)


Gibt es eine Möglichkeit, einen gleitenden Durchschnittswert in Grad umzuwandeln? Ich bin gerade am googeln, um zu sehen, ob ich irgendwelche Mathe-Foren finden kann. Auf diese Weise wäre es einfach, Seitwärtsmärkte zu erkennen und klare Auf- und Abwärtstrends zu erkennen.

Grund der Beschwerde: