Domande da un "manichino" - pagina 197

 
FiftyStars:

Come faccio a determinare quando si aprirà la prossima barra, cioè quella che non si è ancora formata?

In generale, non si può; anche se nel caso di timeframe di mezz'ora o più, la probabilità di una previsione corretta supera il 99,9%.
 

È possibile mettere in loop una richiesta come questa per aprire un ordine? )

      while(result.retcode!=TRADE_RETCODE_DONE)
      {
        if(OrderCheck(request,check))
        {
          OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: È possibile mettere in loop una richiesta come questa per aprire un ordine? )
Non desiderabile. Immaginate, per esempio, che invece di TRADE_RETCODE_DONE il server restituisca la risposta che l'ordine è stato effettuato. Allora il vostro codice sovraccaricherebbe il server con lo stesso tipo di richieste.
 
Yedelkin:
Non desiderabile. Immaginate, per esempio, che invece di TRADE_RETCODE_DONE il server restituisca una risposta che un ordine è stato effettuato. Allora il vostro codice inonderà il server con lo stesso tipo di richieste.

Sarebbe meglio?

      int ResBear = -1;
      while(ResBear == -1)
      {
        if(OrderCheck(request,check))
        {
          ResBear = OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: Sarà meglio così?

Improbabile. Guardate la descrizione della funzione OrderSend(). Dovrebbe dirvi che se viene eseguito con successo, dovete ancora controllare il codice di ritorno. Quindi dovremo seguire la via più noiosa: prendere una lista di codici di ritorno e pensare al comportamento del programma per ognuno di questi codici. Cioè "abbiamo inviato OrderSend(), ottenuto il codice di ritorno, reagito al retcode che abbiamo ricevuto".

Il secondo punto. È meglio usare il modello a eventi. Cioè, non mettere in loop l'esecuzione della funzione dopo l'arrivo di un tick, e dopo diversi tentativi infruttuosi, uscire dalla funzione e aspettare un nuovo tick.

 
Grazie, davvero noioso, preferirei mettere un limite ai tentativi.
 
G001: Grazie, davvero noioso, metterò un limite migliore ai tentativi.

Un giorno dovrai farlo comunque :) Parlando per esperienza personale.

 
Sono sicuro, ma finora la conoscenza è carente.
 

Scusa, come faccio a fare una condizione in modo che nel tester non ci sia nessuna condizione, ma nel tester in modalità visuale ci sia una condizione?

L'elenco delle proprietà non lo permette, e per qualche ragione questa condizione non funziona per me:

if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

 
if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

da questa condizione viene fuori che si esibirà in tre situazioni:

1)Quando il tester funziona

2) Quando il tester NON funziona

3) Quando il tester visivo funziona

in modo che la funzione funzioni sempre, molto probabilmente dovreste rimuovere la seconda condizione e collegare la prima e la terza con &&