MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1115

 
Maxim Kuznetsov:

oanda apiを見る - 写真に間違いがなければ、それはPositionBookです。

おつかれさまでした

 
Artyom Trishkin:

そのため、自動スクロールするグラフは無効にする必要があります。そして、これは非同期コマンドであることを忘れないでください。

障害者...

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

障害者...

それなら、自分のコードの中を見てください。

 

MT5で古い期間のMAインジケータのデータを取り込もうとしています。

//OnInit
 if((slowMovingHandleHigherTF=iMA(_Symbol, HighMovingsTF, SlowMovingPeriod_HigherTF, 0, MA_Method, MA_Apply_To))==INVALID_HANDLE) {
      PrintFormat("Slow moving (HigherTF) handle troubles");
      return (INIT_FAILED);
   }
//OnCalculate
 if(!FillArrayFromBuffer(slowMovingHandleHigherTF,SlowValuesHigherTF,0,40)) Print("Beda");

しかし、エラー 4806 (Requested data not found) が発生します。現在のタイムフレームから取ると、すべてOKです。データが必要なのです。でも、高いほうに問題があるんです。 修正方法を教えてください。

 
Artyom Trishkin:

それなら、自分のコードの中を見てください。

どこが間違っているのか、教えてください。

void OnStart()
{
   ArraySetAsSeries(rates,true);
   ChartSetInteger(ChartID(),CHART_AUTOSCROLL,false);
   

   for(int i = 0; i < in_range; i++)
   {

   // Тут рассчитываю X
      if(X)       {          ChartNavigate(ChartID(),CHART_END,-i);          if(MessageBox(ask,"ASK",MB_OKCANCEL) == IDOK)          {             ObjectCreate(ChartID(),"SigDN_"+IntegerToString(i),OBJ_VLINE,0,rates[i].time,rates[i].open);             //return;             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_COLOR,clrRed);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_SELECTABLE,true);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_SELECTED,false);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);             Print("SigDN_",i);          }       }    } }

時間目にH2でスクリプトを実行しました。

先ほど書いたように、正常に動作しているのですが、ある時点からチャートが最後に配置され、MessageBoxが 表示されるようになりました。見つかった図が見えないのに、なぜリクエストに応じるのか?

 

2361
期間H1から、変数や関数がおかしな値を出力するようになる。

Print(_Period);
Print(Period());
H1
16385
16385
H4
16388
16388

など

 
Roman:

2361
期間H1から、変数や関数がおかしな値を出力するようになる。

など

彼らの "妙 "とは何か?

 
Artyom Trishkin:

彼らの "妙 "とは何か?

変数_PeriodおよびM30までのPeriod() は、分単位の値を出力する。
期間がM1であれば、1
期間M2なら2
...
期間M30なら30

1時間当たりの回転数が60回転になるのは理にかなっています。
二時限目 120
三時百八十分
など

しかし、H1以降は間違った値が表示されます。

 
Roman:

M30までの_Period変数とPeriod()関数は、分単位の値を出力します。
期間M1なら1
期間M2なら2
...
M30 の期間が 30 である場合

1時間当たりの回転数が60回転になるのは理にかなっています。
二時限目 120
三時百八十分
など

しかし、H1以降は間違った値が表示されます。

EnumToString(Period()の場合)

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

EnumToString(Period()の場合)

ヘルプには、EnumToString() で変換した識別子ではなく、タイムフレームの値を 返すように書かれています。
変数_Periodは、intを返します。
ENUM_TIMEFRAMES Period() は int が返されることも意味する。