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

 
Como aumentar o número de parâmetros optimizáveis no testador? Talvez haja algumas formas virtuais no MQL, talvez em Python ou noutro lugar ? Dêem-me alguma direcção, por favor...
 
Vladimir M.:
Como aumentar o número de parâmetros optimizados no testador? Talvez haja algumas formas virtuais no MQL, talvez em Python ou noutro lugar ? Dêem-me algumas indicações, por favor...

OnTester()

 
Vladimir Karputov:

Tire um exemplo da referência! Quantas vezes? Não use as suas próprias construções inventadas se não compreender muito do seu significado. Utilizar construções padrão - descobrir como funcionam. Depois disso, atirem as vossas construções para o lixo.


E usar 'MQL Wizard' para gerar um modelo.

Código

e resultado


Vladimir, tenho a sensação de que estão a tentar falar entre um mudo e uma pessoa surda.

  1. Utilizei o modelo'MQL Wizard'.
  2. Porque se preocupam com as minhas construções? Não são piores do que as suas, especialmente para as minhas necessidades!

if(rates_total - prev_calculated > 1)

Quando corro o indicador taxas_total = ХХХ (digamos ХХХ = 1000), pré_calculado = 0, taxas_total - pré_calculado (1000 - 0 = 1000) superior a 1! A condição funcionou!

Próximo

if(prev_calculated == 0)

Quando se inicia o indicador, pré_calculado = 0. A condição funcionou!

E depois explique-me como o seu difere

      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];

do meu

            barsBuffer1[0] = newCandles_Open[i];
            barsBuffer2[0] = newCandles_High[i];
            barsBuffer3[0] = newCandles_Low[i];
            barsBuffer4[0] = newCandles_Close[i];

considerando que a minhasérie ArraySetAsSeries está configurada para ser ???? verdadeira.

Porque é que os seus castiçais são fundidos, mas os meus não o são?

Há quase duas semanas que lhe peço que me explique isso! Não há necessidade de me enviar para ler a documentação! Eu sei-o quase de cor. Diga-me apenas porquê? Ou me explica, ou me diz que não sabe, ou me diz que não quer responder!

Oh meu, esqueceste-te do título deste fio?

 
Сергей Таболин:


E que tal isto? Tem todos os índices atribuídos a um índice zero nos amortecedores.

            barsBuffer1[i] = newCandles_Open[i];
            barsBuffer2[i] = newCandles_High[i];
            barsBuffer3[i] = newCandles_Low[i];
            barsBuffer4[i] = newCandles_Close[i];
 
Сергей Таболин:


É isso que estou a tentar ensinar-vos: continuo a dar-vos exemplos, mas vocês continuam a bater com a cabeça contra a parede.

Pela última vez: atirem os vossos desenhos para o lixo e utilizem os desenhos padrão. Depois pode perguntar: como desenhar (por exemplo, os cinco candelabros mais à direita no quadro) de acordo com as suas regras. Mas não antes de destruir as suas construções, não antes de deixar de usar oincremento de prefixo em vez doincremento de posfixo...

 
Сергей Таболин:


Exemplo

//+------------------------------------------------------------------+
//|                                                 Draw Candles.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot USDJPY
#property indicator_label1  "USDJPY"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      Input1=9;
//--- indicator buffers
double   Buffer1[];
double   Buffer2[];
double   Buffer3[];
double   Buffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,Buffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Buffer3,INDICATOR_DATA);
   SetIndexBuffer(3,Buffer4,INDICATOR_DATA);
//--- the 0 (empty) value will mot participate in drawing
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(rates_total<10)
      return(0);
//---
   int limit=prev_calculated-5;
   if(prev_calculated==0)
     {
      limit=rates_total-5;
      for(int j=0; j<limit; j++)
        {
         Buffer1[j]=0.0;
         Buffer2[j]=0.0;
         Buffer3[j]=0.0;
         Buffer4[j]=0.0;
        }
     }
   for(int i=limit; i<rates_total; i++)
     {
      if(i<rates_total-5)
        {
         //--- затираем всё, что левее пяти свеч (сюда попадаем при рождении нового бара)
         Buffer1[i]=0.0;
         Buffer2[i]=0.0;
         Buffer3[i]=0.0;
         Buffer4[i]=0.0;
         continue;
        }
      //--- четыре левые свечи будут перерисовываться на каждом тике - это не оптимально,
      //--- но пригодится в будущем (если для них потом подсовывать тики)
      //--- пятая свеча (она же самая правая на графике) реагирует онлайн на изменение текущих цен
      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Resultado:


Arquivos anexados:
 
Vladimir Karputov:

É isso que estou a tentar ensinar-vos: continuo a dar-vos exemplos, mas vocês continuam a bater com a cabeça contra a parede.

Pela última vez: atirem os vossos desenhos para o lixo e utilizem os desenhos padrão. Depois pode perguntar: como desenhar (por exemplo, os cinco candelabros mais à direita no quadro) de acordo com as suas regras. Mas não antes de deitar fora as suas construções, não antes de deixar de usar oincremento de prefixo em vez doincremento de posfixo...

O que tem contra isso? Porque não o entende? Eu, por exemplo, utilizo frequentemente este laço

for(int i PositionsTotal(); i-- > 0)

e não há qualquer problema.........

 
Alexey Viktorov:

O que é que não lhe agrada nele? Porque não o entende? Eu, por exemplo, utilizo frequentemente este ciclo

for(int i PositionsTotal(); i-- > 0)

e não há qualquer problema.........

Que tal tentar lê-lo em vez de se apressar a responder-lhe? Utiliza (como a maioria) o postfix. E o seu exemplo é postfixado. Não se deve apressar a responder em vez de pensar.

 
Youri Lazurenko:
Carga de CPU 100% e após alguns minutos de trabalho o computador trava (processador phenom II x4 955 (4 núcleos, 3,2 GHz), o refrigerador é de reserva). Depois de duas vezes, decidi não arriscar mais. Como deve isto ser interpretado?

Verifique o seu computador com Aida64 ou Linx - se não houver problemas com CPU e testes de memória e se a temperatura estiver dentro dos limites normais, então verifique o disco rígido. Geralmente parece ser a fonte de alimentação, se não tiver sido alterada durante muito tempo, é provável que seja o problema. O terminal funciona bem com os segundos fenómenos.

 
Boa tarde colegas, sabem se existe tal símbolo na forma de um traço horizontal numa bola, não o consigo encontrar :-(
Razão: