エラー、バグ、質問 - ページ 14

 
stringo:
boolによる最適化を修正しました。
アプリケーションに動きがないことを除けば(そこにはまだある種のニュアンスがあった)、OKです...。
 
Interesting:
ただ、アプリケーションに動きがない(そこにはまだ一定のニュアンスがあった)ので......。

お待ちください。

しばらくすると、アプリケーションが同期されます。

 
alexvd:

お待ちください。

アプリケーションはしばらくすると同期されます。

リマインドすれば、同期が早くなることが確認されています...。


追記

例えば、私のリクエスト#14620は忘れ去られてしまったようです(同期に時間がかかりすぎる)...。

 

何が間違っているのか、教えてください。指標を明確にするために作成したものです。

1.私は2つの指標を作成し、別々にすべてが動作する(描画)。

インジケーター00(単色)

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

インジケーター11(マルチカラー)

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

これらを組み合わせたい。11番のインジケータ(マルチカラー)をベースに、00番のインジケータで行われているようなバッファを追加する。

線(Buffer_2[i]=high[i];)は、計算されてはいるが、描画されておらず、色を変更することができるのです。

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

私は何を間違えているのでしょうか?

ファイル:
00.mq5  2 kb
11.mq5  2 kb
22.mq5  3 kb
 
Prival:

私は何を間違えているのだろう?


PlotIndexSetInteger(2,PLOT_DRAW_TYPE,DRAW_LINE);
 
ありがとうございます。
 
sergey1294:
Вопрос был по поводу внешних параметров input , у меня в советнике их большое количество, необходимые для более гибкой настройки эксперта, так вот как только я выбираю своего эксперта из общего списка в тестере, вылетает сразу терминал. с меньшим количеством нормально.

ストリングス

特に設定項目が多い場合は、設定ファイルを使用するのが一般的です。しかし、設定ファイル名はパラメータとして渡すことができます。

プロフェッショナルの間では、ターミナルがクラッシュするのではなく、エラーメッセージを 発生させるのが一般的です。
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
simpleton:
一般的に(プロの間では)、ターミナルがエラーメッセージを 出すときは、クラッシュするときは、そうではありません。

応援しています - 機会があるごとにターミナルを閉じたり、チャートからEAを削除したりしないでください(開発者談)...。


追記

鳥といえば、ちょうどこのテーマでリクエスト#17391がありますね...。

 
Interesting:

思い出してみると、同期が早いのは良い点なのですが...。


追記

例えば、私のリクエスト#14620を忘れているようです(同期に時間がかかりすぎる)...。

最新版のヘルプをダウンロードし、「MQL5 Reference/ Standard Constantants, enumerations and structures / Environment state / Tool info " 」をご覧ください。
 
Rosh:
最新版のヘルプをダウンロードし、「MQL5リファレンス/ 標準定数・列挙・構造体 / 環境状態 / ツール情報」をご覧ください "

オンライン版と手持ちのファイルを比較した。私が完全に盲目なのか、それとも完全に同じなのか......。

ターミナルとヘルプの新バージョンの次のリリースの話なんですね?