Cos'è order_id? - pagina 2

 
toi10005doi:

@Raptor:

Sì, ma ho capito male perché ho appena iniziato a scrivere EA. Sr per il disturbo.

Non capisco perché il mio ordine si chiude istantaneamente dopo che è partito.

Se non capisci il mio thread hai bisogno di leggere di più il Libro. . . . il thread riguarda solo un ciclo e gli ordini di chiusura ed è molto semplice e chiaro e tu ancora non ne hai fatto tesoro.


Perché cerchi di chiudere l'ordine 4 volte? Due volte al Bid e due volte all'Ask?

 
La mia condizione vicina è una cobina. Ma quando l'ho scritto, non funziona. Cosìl' hoseparata.
 
toi10005doi:
La mia condizione vicina è una cobina. Ma quando l'ho scritto, non funziona. Quindil' hoseparata.
Ma tu stai cercando di chiudere lo stesso ordine (per numero di biglietto) quattro volte... perché?
 
toi10005doi:

Sì, ho capito.

Ho aggiustato il mio codice ma il mio ordine si chiude ancora all'istante dopo l'avvio.

Nel ciclo in cui chiudi il tuo ordine stampa questi valori. . DIPlus1 DIMinus1 Main0 Rsi assicurati di usare DoubleToStr() per ottenere il corretto numero di posizioni decimali.
 
Raptor ti ha già detto cosa fare. Aggiungete alcune istruzioni di stampa con il valore completo della variabile nel vostro ciclo e scoprirete perché
 
RaptorUK:
Nel ciclo in cui chiudete il vostro ordine stampate questi valori. . DIPlus1 DIMinus1 Main0 Rsi assicuri di usare DoubleToStr() per ottenere il numero corretto di posizioni decimali.

Fate così, cosa ottenete nel log?
 
RaptorUK:
Fai così, cosa ottieni nel log?

Puoi mostrarmi il codice?

 
toi10005doi:

Puoi mostrarmi il codice?

Stai scherzando? È solo una singola linea che usa Print() e DoubleToStr() . . .

Scrivilo tu stesso, postalo qui e io darò il mio tempo gratuitamente per rivederlo per te.
 
RaptorUK:
Stai scherzando? È solo una singola linea che usa Print() e DoubleToStr() . . .

Scrivetelo voi stessi, postatelo qui e io darò il mio tempo gratuitamente per revisionarlo per voi.

int start()
{
   int i ,times;
   string DIPlus1;
   string DIPlus0;
 
   string DIMinus1;
   string DIMinus0;
   
   string Main1;
   string Main0;
   
   string MACD_main;
   string MACD_signal;
   string Rsi;
   
   string err = 26;
   string x = 70;
   string xx = 30;
   
   double sl = 300;
   double tp = 50;
   
   int MagicNumber1=1234,MagicNumber2=4321;
//----
/*DIPlus1=DoubleToStr(  DIPlus1, 4);
DIPlus0=DoubleToStr(    DIPlus0, 4);
DIMinus1=DoubleToStr(   DIMinus1, 4);
DIMinus0=DoubleToStr(   DIMinus0, 4);
Main1=DoubleToStr(      Main1, 4);
Main0=DoubleToStr(      Main0, 4);
Rsi=DoubleToStr(        Rsi, 4);
//err=DoubleToStr(err,4);
//x=DoubleToStr(x,4);
//xx=DoubleToStr(xx,4);*/

//---
 
DIPlus1=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,1);
DIPlus0=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,0);
 
DIMinus1=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,1);
DIMinus0=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,0);

Main1=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,1);
Main0=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,0);

Rsi = iRSI(NULL,0,14,PRICE_CLOSE,0);

times = Minute() % 15 ==0 && Seconds() ==0;

//MACD_main = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); 
//MACD_signal = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
   
//----
if(Minute() % 15 ==0 && Seconds() ==0)
{
  if( Main0 > err && Main1 < err && DIPlus0 > DIMinus0 && Rsi < x )

    
       OrderSend(Symbol(),OP_BUY,0.03,Ask,5,Ask-sl*Point,Ask+tp*Point,"",1234,0,Blue);
          
   

   if (Main0 > err && Main1 < err && DIPlus0 < DIMinus0  && Rsi > xx)
     
       OrderSend(Symbol(),OP_SELL,0.03,Bid,5,Bid+sl*Point ,Bid-tp*Point,"",4321,0,Red);
}
     
  //---
 int PositionIndex;    
 
int TotalNumberOfOrders;  

TotalNumberOfOrders = OrdersTotal();   

for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)  
   {
   if(  OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) continue;   
   
   if( OrderMagicNumber() == MagicNumber2      
     && OrderSymbol() == Symbol()          
      && OrderType() == OP_BUY         
       || OrderType() == OP_SELL )  
       Print("DIPlus1",DoubleToStr(     DIPlus1, 4));
         Print("DIMinus1",DoubleToStr(  DIPlus1, 4));
          Print("Main0",DoubleToStr(    DIPlus1, 4));
           Print("Rsi",DoubleToStr(     DIPlus1, 4));  
     {if( DIPlus1 > DIMinus1 || Main0 < err || Rsi < xx)
                   OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
     } 
   if( OrderMagicNumber() == MagicNumber1      
     && OrderSymbol() == Symbol()          
      &&  OrderType() == OP_BUY          
        || OrderType() == OP_SELL )  
        Print("DIPlus1",DoubleToStr(    DIPlus1, 4));
         Print("DIMinus1",DoubleToStr(  DIPlus1, 4));
          Print("Main0",DoubleToStr(    DIPlus1, 4));
           Print("Rsi",DoubleToStr(     DIPlus1, 4));
    { if( DIPlus1 < DIMinus1 || Main0 < err || Rsi > x  )
                   OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);   
   }
      {  if ( ! OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 3 ) )               
         Print("Order Close failed, order number: ", OrderTicket(), " Error: ", GetLastError() ); 
    }           
    }
 return(0);
 }
   
Intendi questo? Ma ora non chiude l'ordine.
 
toi10005doi:
Intendi questo? Ma ora non chiude l'ordine.
Ho detto di aggiungere una linea... era tutto ciò che serviva.

Guarda il tuo codice. ... seguilo linea per linea, vedi cosa hai aggiunto, vedi perché l'hai spezzato... è così che impari. Hai capito come funziona un'istruzione if? Hai capito lo scopo delle parentesi graffe { }?
Motivazione: