È necessario un semplice codice per l'EA (modificare due ordini aperti) - pagina 5

 
deVries:


Vuoi che modifichi lo StopLoss sia per le operazioni di acquisto che di vendita con lo stesso pip?

Ripensateci se è quello che volete e potete capire perché non si modifica in quel modo....

Inoltre non modificare i trade con ogni nuovo punto nella direzione giusta scegli un trailingstep per permettere la modifica (xx Points può sceglierne 10 o più per evitare molti errori di tradecontext troppo occupato)

"!" è qualcosa come non nella codifica

Al momento voglio solo il TakeProfit modificato su entrambi i trade, lo StopLoss è lo stesso per tutto il trade (per i test attuali comunque).
 

OK, trovato il problema . . . Lo spread viene restituito come numero di punti . . .

Quindi, cambia queste linee . . .

if(OrderTakeProfit() > Candle23Open - ((TakeProfitModified - 1) * Point) + Spread )      //  check if TakeProfit has already been modified
                  if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Candle23Open - (TakeProfitModified * Point) + Spread, 0, Blue))

a questo . . .

if(OrderTakeProfit() > Candle23Open + ((Spread - TakeProfitModified + 1 ) * Point)  )      //  check if TakeProfit has already been modified
                  if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Candle23Open + ((Spread - TakeProfitModified) * Point) , 0, Blue))
 
RaptorUK:

OK, trovato il problema . . . Lo spread viene restituito come numero di punti . . .

Quindi, cambia queste linee . . .

a questo . . .

Questo lo fa funzionare, grazie! Sia le operazioni di acquisto che di vendita vengono modificate ora, tuttavia, per alcune ragioni vengono modificate alcune volte durante le operazioni e il take profit sembra a volte andare oltre a quello che gli input richiedono. Questo sembra accadere in momenti interi come le 2:00 o le 7:00, non sono sicuro del perché questo accada, ha per caso qualcosa a che fare con lo spread che cambia continuamente? Questo succede sia con le operazioni di acquisto che di vendita, quindi immagino che non possa essere lo spread. L'unico modo che mi viene in mente è che la candela alle 23:00 sembra cambiare, anche se questo non avrebbe senso e non sono sicuro di come potrei testarlo.

 
Aggiungete qualche istruzione di stampa qua e là per mostrarvi cosa stanno facendo le variabili, poi potrete capire cosa sta andando storto e risolverlo.
 

Sto cercando di usare questo:

Print(Open [iBarShift(NULL, 0, StrToTime("23:00") )]);

Per vedere se il prezzo di apertura della barra cambia ma sembra che stampi ogni volta orari casuali.

Inoltre in uno dei giorni ho notato che i trade non seguono la regola di chiudere tutti i trade alle 22:59 indipendentemente da quello che sta succedendo, penso che questo abbia smesso di funzionare.

Sto usando questo

   if (TimeDayOfWeek(TimeCurrent())==5 && TimeCurrent()>=StrToTime("22:59")) { CloseAll(); return(0); }

e questo

void CloseAll()
   {
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderMagicNumber()!=MagicNumber) continue;
         
      //
      //
      //
      //
      //
         
      if (OrderType()==OP_BUY || OrderType()==OP_SELL)
         {
         for(int c=0; c<3; c++)
            {
            RefreshRates();
            if (OrderType()==OP_BUY)
                  { double cp = Bid;}  
            else  {        cp = Ask;}
               
            OrderClose(OrderTicket(),OrderLots(),cp,0,Yellow);
            int err=GetLastError();
            if(err==4 || err==136 || err==137 || err==138 || err==146)
               {
               Sleep(5000); continue;
               }  
               break;                     
            }
            break;

Per chiudere le compravendite all'ora specificata.

 

Un post tutto in lettere maiuscole è stato rimosso.

Si prega di non fare un uso eccessivo di lettere maiuscole quando si posta, è considerato urlare e molto maleducato.

Motivazione: