Erros, bugs, perguntas - página 14

 
stringo:
A optimização por bool foi corrigida
OK, excepto que não vejo qualquer movimento no pedido (ainda havia certas nuances)...
 
Interesting:
OK, só que não vejo qualquer movimento na aplicação (ainda havia certas nuances)...

Aguarde, por favor.

As aplicações serão sincronizadas ao fim de algum tempo.

 
alexvd:

Aguarde, por favor.

As aplicações são sincronizadas ao fim de algum tempo.

Foi observado que, se lhes lembrarmos, a sincronização é mais rápida.


PS

Por exemplo, o meu pedido #14620 parece ter sido esquecido (demora demasiado tempo a sincronizá-lo)...

 

Pode dizer-me o que estou a fazer mal? Os indicadores foram criados para clarificação.

1. criei dois indicadores, separadamente tudo funciona (sorteios).

Indicador 00 (unicolor)

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_color1  Green

double      Buffer_0[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetIndexBuffer(0,Buffer_0,INDICATOR_DATA);
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[])        // Spread
  {
   if(rates_total<10) return(0);
   int  start_pos=0;   // точка старта

   if(prev_calculated==0) start_pos=rates_total-100;
   else start_pos=prev_calculated-1;
   
   for(int i=start_pos;i<rates_total;i++)
     {
     Buffer_0[i]=high[i];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Indicador 11 (multi-colorido)

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   1
#property indicator_color1  Blue,Yellow,Red

double      Buffer_0[],Buffer_1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Buffer_0,INDICATOR_DATA);
   SetIndexBuffer(1,Buffer_1,INDICATOR_COLOR_INDEX);

   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_LINE);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[])        // Spread
  {
   if(rates_total<10) return(0);
   int  start_pos=0;   // точка старта

   if(prev_calculated==0) start_pos=rates_total-100;
   else start_pos=prev_calculated-1;
   
   for(int i=start_pos;i<rates_total;i++)
     {
     Buffer_0[i]=low[i];
     Buffer_1[i]=1;
     if(Buffer_0[i]>Buffer_0[i-1]) Buffer_1[i]=0;
     if(Buffer_0[i]<Buffer_0[i-1]) Buffer_1[i]=2;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  } 

Quero combiná-los; tomo o indicador 11 (multicolor) como base e adiciono um tampão, como se faz no indicador 00

A linha (Buffer_2[i]=high[i];) não é desenhada, embora seja calculada, eu posso mudar de cor.

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots   2
#property indicator_color1  Blue,Yellow,Red
#property indicator_color2  Green

double      Buffer_0[],Buffer_1[];
double      Buffer_2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetIndexBuffer(0,Buffer_0,INDICATOR_DATA);
   SetIndexBuffer(1,Buffer_1,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(2,Buffer_2,INDICATOR_DATA);
   
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_LINE);
   PlotIndexSetInteger(2,PLOT_DRAW_TYPE,DRAW_LINE);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[])        // Spread
  {
   if(rates_total<10) return(0);
   int  start_pos=0;   // точка старта

   if(prev_calculated==0) start_pos=rates_total-100;
   else start_pos=prev_calculated-1;
   
   for(int i=start_pos;i<rates_total;i++)
     {
     Buffer_0[i]=low[i];
     Buffer_2[i]=high[i];// вот это не рисует
     Buffer_1[i]=1;
     if(Buffer_0[i]>Buffer_0[i-1]) Buffer_1[i]=0;
     if(Buffer_0[i]<Buffer_0[i-1]) Buffer_1[i]=2;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

O que estou a fazer mal ?

Arquivos anexados:
00.mq5  2 kb
11.mq5  2 kb
22.mq5  3 kb
 
Prival:

O que é que estou a fazer mal?


PlotIndexSetInteger(2,PLOT_DRAW_TYPE,DRAW_LINE);
 
Obrigado.
 
sergey1294:
Вопрос был по поводу внешних параметров input , у меня в советнике их большое количество, необходимые для более гибкой настройки эксперта, так вот как только я выбираю своего эксперта из общего списка в тестере, вылетает сразу терминал. с меньшим количеством нормально.

stringo:

É prática comum utilizar um ficheiro de configuração para configurações, especialmente se houver muitas configurações. Mas o nome do ficheiro de configuração pode ser passado como um parâmetro.

Uma prática comum (entre profissionais) é que o terminal exiba uma mensagem de erro, em vez de se avariar.
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
simpleton:
A prática comum (entre os profissionais) é quando o terminal emite uma mensagem de erro, mas não quando se despista.

Eu apoio-o - Não feche o terminal nem retire a EA do gráfico em todas as oportunidades (de acordo com os programadores)...


PS

Por falar em aves, há um pedido #17391 apenas sobre este assunto...

 
Interesting:

É um bom ponto, se se lembrar, a sincronização é mais rápida...


PS

Por exemplo, parecem ter-se esquecido do meu pedido #14620 (demora demasiado tempo a sincronizá-lo)...

Descarregue a última versão da Ajuda e veja"Referência MQL5 / Constantes, enumerações e estruturas padrão / Estado do ambiente / Informações sobre ferramentas".
 
Rosh:
Descarregue a última versão da ajuda e dê uma olhada em"Referência MQL5 / Constantes, enumerações e estruturas padrão / Estado do ambiente / Informações sobre ferramentas".

Comparei a versão online com o ficheiro que tenho. Ou sou completamente cego ou eles são completamente iguais...

Presumo que estamos a falar do próximo lançamento do terminal e de uma nova versão de ajuda?