E facciamone un "cartone animato" (multicurrency) - pagina 5

 

Si è rallegrato troppo presto. La compilazione non ha errori, ma nello Strategy Tester, quando l'ordine viene aperto, il prezzo non arriva all'indicatore attraverso questa funzione. Lo chiamo così: OP=PriceOpenLastPos(); ma nel codice, OP rimane uguale a zero.

È un problema del tester che non passa valori all'indicatore che si blocca nella finestra in modalità di visualizzazione?

 
Angela писал(а) >>

Si è rallegrato troppo presto. La compilazione non ha errori, ma nello Strategy Tester, quando l'ordine viene aperto, il prezzo non arriva all'indicatore attraverso questa funzione. Lo chiamo così: OP=PriceOpenLastPos(); ma nel codice, OP rimane uguale a zero.

È un problema del test, non passa valori all'indicatore che si blocca nella finestra in modalità di visualizzazione?

L'indicatore non può vedere cosa succede nel tester. Ma se ci fossero stati ordini aperti, li avrebbe mostrati.

 
ALex2008 писал(а) >>

Si prega di rispondere)

//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type = OrderType();
      Ticket=OrderTicket();
      return(true);
  }
  return(false);  
}
 
Vinin >> :

Riparato... Ma il problema rimane(.

La funzione cancella ordini DellAllOrders() non funziona...

//-------Удаление всех ордеров
void DellAllOrders(){
      if( WorkOrders())OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
  }
  
//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type = OrderType();
      Ticket=OrderTicket();
      return(true);}
  return(false);
  }

Penso che avrei dovuto aggiungere





OrderDelete(Ticket);

Come questo....?

//-------Удаление всех ордеров, открытых и отложенных
void DellAllOrders(){
      if( WorkOrders()){
      OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
      OrderDelete( Ticket);}
  }
 
ALex2008 писал(а) >>

Risolto... Ma il problema rimane(.

DellAllOrders() non funziona.

//-------Удаление всех ордеров
void DellAllOrders(){
  for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      if (OrderType()<=OP_SELL) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10);
      else OrderDelete(OrderTicket());
  }
}
Cancella anche gli ordini in sospeso.
 
Vinin >> :
Cancella anche i rinvii.

Grazie)

>> Penso che tutto dovrebbe funzionare ora.

//-------Удаление всех ордеров, открытых и отложенных
void DellAllOrders(){
      if( WorkOrders()){
      if( Type<=1)OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
      else OrderDelete( Ticket);}
  }
Ho anche notato un errore durante il salvataggio di EA (penso che sarà lo stesso se riavvio il terminale)...
aggiunto un controllo prima di impostare lo stoploss...


if(WorkOrders())
      if ((Type<=1)&& (Stop==0))SetStop();



//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type  = OrderType();
      Ticket=OrderTicket();
      Stop  =OrderStopLoss();
      return(true);}
  return(false);
  }
 
Persone) Guarda... Forse c'è qualcos'altro che non va, qualcosa da mettere a punto?
 
ALex2008 >> :
Persone) Guarda... Forse c'è qualcos'altro che non va, qualcosa da mettere a punto?
OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Ask+ Profit, 0, 0,0, Green);

>> È così che deve andare?

Enter+ Profit
 
Swan >> :

>> È così che deve andare?

È davvero un errore) È un pendolo, proprio così!!! >> Grazie. Rielaborato.

 
ALex2008 >> :

L'errore è vero) Non è critico però... >> Grazie.

errore 130 per tutto il tempo.

StopLevel dovrebbe essere controllato, per StopLoss e Enter.


>> e icho.

if(b0<b1) StopLoss=b1;
else StopLoss=b0;

>> dovrebbe essere scelto il più grande?