Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1259

 

Pomeriggio.

Un paio di domande sul tester in MT5:

1) In MT5, nella modalità di test visivo dell'Expert Advisor, tutti gli indicatori che sono calcolati tramite iCustom nel codice dell'Expert Advisor sono applicati al grafico stesso. Come si può disattivare/regolare?

2) Ho un singolo test eseguito nel tester con "modalità visiva con visualizzazione di grafici, indicatori e trade" spuntata, e poi ho lo stesso test eseguito con la spunta disattivata (senza visualizzazione). Nel primo caso, il grafico di equilibrio è disegnato abbastanza normalmente, mentre nel secondo caso è solo una linea retta in alcune celle. A cosa può essere collegato?

 
satorifx:

Pomeriggio.

Un paio di domande sul tester in MT5:

1) In MT5, nella modalità di test visivo dell'Expert Advisor, tutti gli indicatori che sono calcolati attraverso iCustom nel codice dell'Expert Advisor sono applicati al grafico stesso. Questo può essere disabilitato/regolato in qualche modo?


1.TesterHideIndicators().

Документация по MQL5: Общие функции / TesterHideIndicators
Документация по MQL5: Общие функции / TesterHideIndicators
  • www.mql5.com
Задает режим показа/сокрытия индикаторов, которые используются в эксперте. Функция предназначена для управления видимостью используемых индикаторов только при тестировании. По умолчанию на графике визуального тестирования показываются все индикаторы, которые создаются в тестируемом эксперте.  Также эти индикаторы показываются на графике...
 
Come distinguere tra gli eventi di cancellazione di un oggetto grafico e rinominare un oggetto grafico. In entrambi i casi viene generato un evento di cancellazione. Come faccio a distinguere l'uno dall'altro?
 
leonerd:
Come distinguere tra gli eventi di cancellazione di un oggetto grafico e rinominare un oggetto grafico. L'evento di cancellazione viene generato in entrambi i casi. Come si fa a distinguere l'uno dall'altro?

Non si può. Rinominare è, cancellare e crearne uno nuovo. Quindi cercate di catturare la creazione dopo la cancellazione.

 
I commenti non relativi a questo argomento sono stati spostati in "Domande dai principianti di MQL4 MT4 MetaTrader 4".
 

Puoi dirmi cosa scrivere per ottenere numeri casuali a 6 cifre?

int Random() {
 int r=MathRand(); // 100000 -> 999999
  return(r);
 }
 
Vitaly Muzichenko:

Puoi dirmi cosa scrivere per ottenere numeri casuali a 6 cifre?

Ho trovato questa soluzione

int Random(int min,int max) {
   int v=0;
   MathSrand(GetTickCount());
   while(true) {
      v=MathRand()*2*MathRand();
      if(v>=min && v<=max)
         break;
     }
   return(v);
  }
 
Vitaly Muzichenko:

Ho trovato questa soluzione

Vitaly, questa non è la soluzione migliore.

Prima di tutto, è meglio usare un ciclo do while in questo caso.

In secondo luogo, secondo me, è più sicuro ottenere un numero maggiore di 6 cifre in esponenziazione che in moltiplicazione. Ma in questo caso è possibile ottenere INF. Ma si può limitare il valore della potenza... Nel mio esempio, la potenza non è più di 16.

/********************Script program start function*******************/
void OnStart()
 {
  double dr = 0,
         df = 0;
  srand(GetTickCount());
  do
   {
    dr = fabs(rand());
    df = fabs(rand());
   }
  while((dr == 1 || df == 1) && !IsStopped());
  double dp = pow(dr, fmod(df, 16));
  Print(DoubleToString(fmod(dp, 1000000), 8));
 }/*******************************************************************/

E prendere il resto della divisione e ottenere un numero a sei cifre.

 
Alexey Viktorov:

Vitaly, questa non è l'opzione migliore.

Prima di tutto, è meglio usare un ciclo do while in questo caso.

In secondo luogo, secondo me, è più sicuro ottenere un numero maggiore di 6 cifre quando è elevato a una potenza che quando è moltiplicato. Ma in questo caso è possibile ottenere INF. Ma si può limitare il valore della potenza... Nel mio esempio, la potenza non è più di 16.

E prendere il resto della divisione ottenendo un numero di sei cifre.

Grazie, ho sostituito la parte nel codice.

 
Vitaly Muzichenko:

Grazie, ne ho sostituito una parte nel codice.

E qual è stato il risultato? Non pretendo di essere infallibile...)))

Motivazione: