Afflitto dall'errore non ci sono operazioni commerciali - pagina 6

 

Questo problema è ancora più interessante. Ho costruito un semplice EA basato sul codice del post sopra. Apre anche 5 trade, ognuno nel mercato per 5 minuti, e poi chiude. Ecco il codice:

#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static int test_ticket[2]={0,0};
   if(test_ticket[1]<5 && test_ticket[0]==0) {
      test_ticket[0]=OrderSend(_Symbol,OP_BUY,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN),NormalizeDouble(Ask,_Digits),30,0.0,0.0,"test",33333,0,clrNONE);
      if(test_ticket[0]>0) test_ticket[1]++;
   }   
   if(OrderSelect(test_ticket[0],SELECT_BY_TICKET))
      if(OrderCloseTime()==0 && OrderOpenTime()+300<TimeCurrent())
         if(OrderClose(test_ticket[0],OrderLots(),NormalizeDouble(Bid,_Digits),30,clrNONE)) {
            printf("Test order closed, ticket #%d",test_ticket[0]);
            test_ticket[0]=0;
         }   
   
  }
//+------------------------------------------------------------------+

Ha superato la convalida al primo tentativo, ma non ci sono operazioni su NZDUSD. Perché?


Anche se il validatore imposta il deposito insufficiente per l'apertura con lotto minimo, l'errore 134 apparirà come nel messaggio sopra. Ma non ci sono scambi! Perché?

Forse il validatore non funziona bene o c'è una spiegazione ragionevole?

 
Renat Akhtyamov:

e metti prima la risposta completa del validatore qui

E cosa ti fa pensare che la validatrice assegni i biglietti secondo il principio che hai inventato tu?

per aprire 5 operazioni, è necessario contare il numero di operazioni aperte, non preoccuparsi dei biglietti

Renat, è quello che penso siano le transazioni, guarda meglio. Potete anche eseguire il mio codice nel tester. C'è un array di due valori: test_ticket[0] - memorizza l'ordine dei biglietti, test_ticket[1] - numero di tentativi.

Cambiando il numero di tentativi nella prima condizione è possibile aprire un numero diverso di affari

if(test_ticket[1]<5 && test_ticket[0]==0) {
 

Questa è la storia dei seguenti tentativi con diversi numeri di ordini


E qui, in uno dei tentativi successivi, il validatore usa effettivamente il lotto minimo, che consapevolmente non può aprire con un deposito di 1$. La domanda è: perché non ci sono stati scambi sui tentativi prima? E perché questa corsa usa un lotto e un deposito minimo consapevolmente errato che provoca un errore di convalida?

Vladimir Karputov:

...

Tutto sommato, il validatore ha finora fatto fronte al suo compito principale: setacciare il codice incompleto da Market.

Mmm...

E non è un colpo a caso. Ecco i prossimi tre tentativi.


 

L'errore nel log "No money to open such-and-such transaction..." indica che avete inviato un ordine di compravendita, ma non avete controllato nulla (o non tutto) completamente prima. L'articolo fornisce un chiaro algoritmo di controllo.


Ricordate - l'errore "non ci sono soldi per aprire tale e tale affare ...". - è il 99% dell'errore nella logica dell'Expert Advisor. Sono i controlli mancanti (o la loro completa mancanza). Questo è un segno di insufficiente comprensione dei principi di codifica.


Ricordate: nel mondo reale, il deposito può essere di 1$, e la leva non è sempre 1:100, e il lotto minimo può essere 0.01 e 0.02 e 0.30 e 1.0, e un sacco di altre cose...

 
Vladimir Karputov:

L'errore nel log "No money to open such-and-such transaction..." indica che avete inviato un ordine di compravendita, ma non avete controllato nulla (o non tutto) completamente prima. L'articolo fornisce un chiaro algoritmo di controllo.


Ricordate - l'errore "non ci sono soldi per aprire tale e tale affare ...". - è il 99% dell'errore nella logica dell'Expert Advisor. Sono i controlli mancanti (o la loro completa mancanza). Questo è un segno di mancanza di comprensione dei principi di codifica.


Ricordate: nel mondo reale, il deposito può essere di 1$, e la leva non è sempre 1:100, e il lotto minimo può essere 0.01 e 0.02 e 0.30 e 1.0, e un sacco di altre cose...

Vladimir, hai mancato l'elefante. L'errore principale è stato.

Posso rispondere nella vostra lingua e darvi una lezione.

 
Vladimir Karputov:

L'errore nel log "No money to open such-and-such transaction..." indica che avete inviato un ordine di compravendita, ma non avete controllato nulla (o non tutto) completamente prima. L'articolo fornisce un chiaro algoritmo di controllo.


Ricordate - l'errore "non ci sono soldi per aprire tale e tale affare ...". - è il 99% dell'errore nella logica dell'Expert Advisor. Sono i controlli mancanti (o la loro completa mancanza). Questo è un segno di insufficiente comprensione dei principi di codifica.


Ricordate: nel mondo reale, il deposito può essere di 1$, e la leva non è sempre 1:100, e il lotto minimo può essere 0.01 e 0.02 e 0.30 e 1.0, e un sacco di altre cose...

Vladimir, non capisco se leggi i post in generale o scegli solo le foto interessanti. Rileggete tutto attentamente o almeno un paio di volte dall'inizio della pagina. E leggete il codice! Non voglio nemmeno disturbarmi a spiegarvi tutto!

 
Andrey Kaunov:

Non voglio nemmeno disturbarmi a spiegarvi tutto!

Andrew, nessuno vuole ripetere ciò che è già stato scritto e masticato.

 
Sì, ma il problema è evidente. Forse qualcuno di questo forte sito web cercherà di analizzarlo e controllare il validatore. Il semplice codice trasparente senza parametri non esegue l'affare su NZDUSD e GBPUSD controllare a volte. E se aggiungiamo alcune condizioni e non ci saranno scambi anche sull'oro, allora di nuovo riceveremo l'errore dinessuna operazione di trading e di mancato controllo.
 
Andrey Kaunov:
Sì, ma il problema è lì. Forse qualcuno di questo sito forte cercherà di capirlo lo stesso e di controllare il validatore. Il semplice codice trasparente senza parametri non funziona affatto per NZDUSD e GBPUSD Check a volte. E se aggiungiamo alcune condizioni e non ci saranno scambi anche sull'oro, allora di nuovo riceveremo l'errore dinessuna operazione di trading e di mancato controllo.

Non fate affidamento sul fatto che il validatore restituisca un codice di errore dalla lista degli errori del server commerciale. Registra sempre tu stesso il messaggio di errore. Leggi attentamente ciò che è scritto nell'articolo che conosci sull'impossibilità di eseguire l'ordine e cosa devi fare in questo caso.

È molto probabile che l'assenza di un messaggio di errore nel registro, per esempio il calcolo della dimensione del lotto, sia la causa degli errori di convalida.

 
Andrey Kaunov:

Questa è la storia dei seguenti tentativi con diversi numeri di ordini


E qui, in uno dei tentativi successivi, il validatore usa effettivamente il lotto minimo, che consapevolmente non può aprire con un deposito di 1$. La domanda è: perché non ci sono stati scambi sui tentativi prima? E perché questa corsa usa un lotto e un deposito minimo consapevolmente errato che provoca un errore di convalida?

Hmmm...

E non è un colpo a caso. Ecco i prossimi tre tentativi.


Errore nell'invio di un ordine commerciale 134 ...

Il tester ha scritto questo errore? Se sì, questa è anche una delle cause degli errori di convalida. Dovete calcolare voi stessi la possibilità di aprire una posizione e, se questo è impossibile, scrivere il vostro messaggio sull'impossibilità di fare trading con i parametri impostati nel giornale, invece di inviare un ordine consapevolmente errato al server contando sul terminale e sul server che facciano tutto per voi. Con tali ordini errati, si può inondare il server e poi essere tranquillamente banditi dall'auto-trading. È colpa vostra, non del validatore.

Motivazione: