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

 
CHistoryOrderInfo::FormatOrder, CDealInfo::FormatDeal で同じエラーが発生する。
 
Mr.FreeMan:

ボタンを押したときにエキスパートがアンロードさ れるのはなぜですか?

ログには何と書いてあるのですか?
 
sergey1294:
ログには何が書かれているのですか?


2011.04.03 19:19:31 simple (EURUSD,M15) ' simple.mq5' (43,19) の配列が範囲外。

これは正しいコードではなくボタンを押した時にアンロードさ れるEAのコードです。

int ZigZag1Handle,ZigZag2Handle,ZigZag3Handle;
double ZigZag1[],ZigZag2[],ZigZag3[];
string row;
int bar;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(ObjectFind(0,"history")<0)
     {
      ObjectCreate(0,"history",OBJ_BUTTON,0,100,100);
      ObjectSetInteger(0,"history",OBJPROP_XDISTANCE,220); 
      ObjectSetInteger(0,"history",OBJPROP_YDISTANCE,5);
      ObjectSetInteger(0,"history",OBJPROP_CORNER,CORNER_LEFT_UPPER); 
      ObjectSetString(0,"history",OBJPROP_TEXT,"Передать историю");   
      ObjectSetInteger(0,"history",OBJPROP_FONTSIZE,8);
      ObjectSetInteger(0,"history",OBJPROP_XSIZE,110); 
      ObjectSetInteger(0,"history",OBJPROP_YSIZE,20);
      ObjectSetInteger(0,"history",OBJPROP_SELECTABLE,false);
      ChartRedraw(0);
     }
   ZigZag1Handle=iCustom(NULL,0,"Examples\\ZigZag",6,2,3);
   return(0);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      string Text="history";
      if(sparam==Text)
        {

         ArraySetAsSeries(ZigZag1,true);
         if(CopyBuffer(ZigZag1Handle,0,0,90,ZigZag1)<0){Comment("ZigZag1 error =",GetLastError());}

               if(ZigZag1[bar-1]>ZigZag1[bar-2])
                 {

                 }
        }
      ObjectSetInteger(0,"history",OBJPROP_STATE,false);

     }
  }
//+------------------------------------------------------------------+
 
Mr.FreeMan:


2011.04.03 19:19:31 simple (EURUSD,M15) ' simple.mq5' (43,19) の配列が範囲外。

ボタン押下時にアンロードさ れるExpert Advisorのコードは こちらです。

その理由はログにはっきりと書かれています。ロシア語に翻訳すると、次のようになります。 - simple.mq5の配列の外側で終了します。 43行目でエラーになります。

そして、もうひとつ。ほとんどの場合、配列のサイズが設定 されていないことが原因だと思われます

double ZigZag1[],ZigZag2[],ZigZag3[];
Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - Документация по MQL5
 
sergey1294:
その理由はログにはっきりと書かれています。ロシア語に翻訳すると、次のようになります。 - simple.mq5ファイルの配列の外側で終了してください。
aah))クソッ)私の馬鹿さ加減がよくわかりました)ありがとうございます。
 
対応してください。インジケータキャッシュを制限する
 
皆さん!テーブル 要素の配列を送ると、このテーブルをチャートに表示するクラスがあるかどうか教えてください。
 
Graff:
皆さん!テーブル要素の配列を送ると、このテーブルをチャートに表示するクラスがあるかどうか教えてください。
そして、何のために?と、条件を明示する。
 
多次元配列が あり、それを表としてプロットする必要があります。迅速な表出力のための標準クラスはありますか?
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Graff:
多次元配列が あり、それを表としてプロットする必要があるだけです。もしかしたら、素早く表を出力するための標準クラスがあるかもしれません。

ファイルにプリントして、エクセルで調べる。

でも、これでは満足されないと思いますので、「これはその場で表示すること」などの条件を追加でお願いしました。