Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1259

 

Tarde.

Um par de perguntas sobre o testador em MT5:

1) Em MT5, no modo de teste visual do Expert Advisor, todos os indicadores que são calculados através de iCustom no código do Expert Advisor são aplicados ao próprio gráfico. Como pode ser desactivado/ajustado?

2) Tenho um único teste com "modo visual com exibição de gráficos, indicadores e comércio" assinalado, e depois tenho o mesmo teste com o assinalado desligado (sem visualização). No primeiro caso, o gráfico de equilíbrio é desenhado de forma bastante normal, enquanto no segundo caso é apenas uma linha recta em algumas células. A que é que isto pode estar relacionado?

 
satorifx:

Tarde.

Um par de perguntas sobre o testador em MT5:

1) Em MT5, no modo de teste visual do Expert Advisor, todos os indicadores que são calculados através de iCustom no código do Expert Advisor são aplicados ao próprio gráfico. Isto pode ser desactivado/ajustado de alguma forma?


1.TesterHideIndicators().

Документация по MQL5: Общие функции / TesterHideIndicators
Документация по MQL5: Общие функции / TesterHideIndicators
  • www.mql5.com
Задает режим показа/сокрытия индикаторов, которые используются в эксперте. Функция предназначена для управления видимостью используемых индикаторов только при тестировании. По умолчанию на графике визуального тестирования показываются все индикаторы, которые создаются в тестируемом эксперте.  Также эти индикаторы показываются на графике...
 
Como distinguir entre os eventos de eliminação de um objecto gráfico e a renomeação de um objecto gráfico. Em ambos os casos, é gerado um evento de eliminação. Como distinguir um do outro?
 
leonerd:
Como distinguir entre os eventos de eliminação de um objecto gráfico e a renomeação de um objecto gráfico. O evento de eliminação é gerado em ambos os casos. Como se distingue um do outro?

Não pode. Renomear é, apagar e criar um novo. Por isso, tente apanhar a criação após a eliminação.

 
Comentários não relacionados com este tópico foram transferidos para "Perguntas dos principiantes do MQL4 MT4 MetaTrader 4".
 

Pode dizer-me o que devo escrever para obter números aleatórios de 6 dígitos?

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

Pode dizer-me o que devo escrever para obter números aleatórios de 6 dígitos?

Encontrei esta solução

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:

Encontrei esta solução

Vitaly, esta não é a melhor solução.

Antes de mais, é melhor fazer um loop nesse caso.

Em segundo lugar, na minha opinião, é mais seguro obter um número superior a 6 dígitos em exponenciação do que em multiplicação. Mas, neste caso, é possível obter INF. Mas pode limitar o valor do poder... No meu exemplo, o poder não é superior a 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 pegue no resto da divisão e obtenha um número de seis dígitos.

 
Alexey Viktorov:

Vitaly, esta não é a melhor opção.

Em primeiro lugar, é melhor usar um "faça enquanto faz" nesse caso.

Em segundo lugar, na minha opinião, é mais seguro obter um número superior a 6 dígitos quando é elevado a uma potência do que quando é multiplicado. Mas, neste caso, é possível obter INF. Mas pode limitar o valor do poder... No meu exemplo, o poder não é superior a 16.

E pegue no resto da divisão recebendo um número de seis dígitos.

Obrigado, substituiu a parte do código.

 
Vitaly Muzichenko:

Obrigado, substituiu parte no código.

E qual foi o resultado? Eu não pretendo ser infalível...)))

Razão: