Errori, bug, domande - pagina 14

 
stringo:
L'ottimizzazione per bool è stata corretta
OK, solo che non vedo alcun movimento nella domanda (c'erano ancora certe sfumature)...
 
Interesting:
OK, solo che non vedo alcun movimento nella domanda (c'erano ancora certe sfumature)...

Si prega di attendere.

Le applicazioni si sincronizzeranno dopo un po'.

 
alexvd:

Si prega di attendere.

Le applicazioni vengono sincronizzate dopo un po'.

È stato osservato che se si ricorda loro, la sincronizzazione è più veloce...


PS

Per esempio, la mia richiesta #14620 sembra essere stata dimenticata (ci vuole troppo tempo per sincronizzarla)...

 

Puoi dirmi cosa sto sbagliando? Gli indicatori sono stati creati per chiarire.

1. Ho creato due indicatori, separatamente tutto funziona (disegna).

Indicatore 00 (monocolore)

#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);
  }

Indicatore 11 (multicolore)

#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);
  } 

Voglio combinarli insieme; prendo l'indicatore 11 (multicolore) come base e aggiungo un buffer, come si fa nell'indicatore 00

La linea (Buffer_2[i]=high[i];) non è disegnata, anche se è calcolata, posso cambiare colore.

#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);
  }

Cosa sto facendo di sbagliato?

File:
00.mq5  2 kb
11.mq5  2 kb
22.mq5  3 kb
 
Prival:

Cosa sto facendo di sbagliato?


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

stringo:

È pratica comune usare un file di configurazione per le impostazioni, specialmente se ci sono molte impostazioni. Ma il nome del file di configurazione può essere passato come parametro.

Una pratica comune (tra i professionisti) è che il terminale visualizzi un messaggio di errore, piuttosto che andare in crash.
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
simpleton:
La pratica comune (tra i professionisti) è quando il terminale dà un messaggio di errore, ma non quando va in crash.

Ti appoggio - Non chiudere il terminale o rimuovere l'EA dal grafico ad ogni occasione (secondo gli sviluppatori)...


PS

A proposito di uccelli, c'è una richiesta #17391 proprio su questo argomento...

 
Interesting:

È un buon punto, se ti ricordi, la sincronizzazione è più veloce...


PS

Per esempio, sembrano aver dimenticato la mia richiesta #14620 (ci vuole troppo tempo per sincronizzarla)...

Scaricate l'ultima versione della Guida e guardate"MQL5 Reference / Standard constants, enumerations and structures / Environment state / Tool info".
 
Rosh:
Scaricate l'ultima versione della guida e date un'occhiata a"MQL5 Reference / Standard constants, enumerations and structures / Environment state / Tool info".

Ho confrontato la versione online con il file che ho. O sono completamente cieco o sono completamente uguali...

Immagino che stiamo parlando della prossima versione del terminale e di una nuova versione di aiuto?

Motivazione: