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

 

私のインジケータはテストでは表示され、テスト終了後もインジケータウィンドウに残りますが、Expert AdvisorでiCustomを通して呼び出すと、インジケータが表示されないのはなぜですか?

//+------------------------------------------------------------------+
//|                                             Tiscks_Window_49.mq4 |
#property version   "1.00"
#property strict

#property indicator_separate_window
#property indicator_buffers 1
#property  indicator_color1 clrLawnGreen

double ExtMapBuffer1[];
int Draw_Bars;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorShortName("Ask");
   IndicatorDigits(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexLabel(0,"Ask");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ExtMapBuffer1[0]=MarketInfo(Symbol(),MODE_ASK);
   for(int i=Bars-2; i>=0; i --)
     {
      ExtMapBuffer1[i+1]=ExtMapBuffer1[i];
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+


iCustomで正しく呼び出せていないのでは?

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double sep_window=iCustom(Symbol(),PERIOD_CURRENT,"Tiscks_Window_49",0,0);
   Print(" sep_window= ",sep_window);
  }
//+------------------------------------------------------------------+
 
Nauris Zukas:

私のインジケータはテストでは表示され、テスト終了後もインジケータウィンドウに残りますが、Expert AdvisorでiCustomを通して呼び出すと、インジケータが表示されないのはなぜですか?
iCustomで正しく呼び出せていないのでは?

その通りだ。他の指標で試してみても、同じようになります。

 
Nauris Zukas:

私のインジケータはテストでは表示され、テスト終了後もインジケータウィンドウに残りますが、Expert AdvisorのiCustomを通して呼び出すと、インジケータが表示されないのはなぜか、どなたか教えていただけませんか?


iCustomで正しく呼び出せていないのでは?

ExtMapBuffer1[0]=MarketInfo(Symbol(),MODE_ASK);

簡単に言うと、「聞く」です。
または、close[0]をチェックするために

とここで、なぜ履歴を全部移動させる必要があるのか?最初の100〜300本で十分です。

for(int i=Bars-2; i>=0; i --)
 
LRA:

大丈夫です。他のインジケーターで試してみても、同じようになります。

RSIを試したが、すべてうまくいった。どこかにニュアンスがあるのですが、まだどこかはわかりません。


 
Taras Slobodyanik:

は、=Askだけにしてみてください。
またはclose[0]をチェックするために

とここで、なぜ全編を動かそうと思ったのか?最初の100~300本で十分です。

変更したが、それも効果がない。

 
Nauris Zukas:

私のインジケータはテストでは表示され、テスト終了後もインジケータウィンドウに残りますが、Expert AdvisorでiCustomを通して呼び出すと、インジケータが表示されないのはなぜですか?


iCustomで正しく呼び出せていないのでは?

おそらく、インジケーターが そのように書かれているからでしょう。Expert Advisor から呼び出されたときに、すべてのバーを再計算するのに十分な時間がないだけである確率はどのくらいですか?

すべてのバーを一度だけ再計算し、Expert Advisorからの新しい呼び出しだけにしてみてください。
 
Alexey Viktorov:

Expert Advisorから呼び出したときに、すべてのバーを再計算する時間がないだけである可能性はどのくらいですか?

Expert AdvisorでPrintを 印刷すると、価格があることがわかるので、バーが再計算されたことになります。

アレクセイ・ヴィクトロフ
すべてのバーを 一度だけ 再計算して、EAからの新しいコールだけにしてみてください。

このバリエーションはまだテストしていません、どうすればいいか考え中です。

 

こんにちは、私の最初のステップを踏みます、私はチュートリアルなどを読みました、私は質問を間違っているかもしれませんが、それでも...。

過去数年間のティックアーカイブを取得したい場合、サードパーティのアプリケーションで分析するために、より長い期間のアーカイブが必要になる場合があります。Barsには現在のチャートデータしか入っていないのでしょうか?

 
ijonhson:

こんにちは、私の最初のステップを踏みます、私はチュートリアルなどを読みました、私は質問を間違っているかもしれませんが、それでも...。

過去数年間のティックアーカイブを取得したい場合、サードパーティのアプリケーションで分析するために、より長い期間のアーカイブが必要になる場合があります。Barsには現在のチャートデータしか入っていないのでしょうか?

これらのログの 使い方がわからない場合は、他のログで上書きしようとしないでください。Googleがお手伝いします。

 

こんにちは、Artiomです。価格があるレベルを通過するまで注文を開かず、価格がレベルより上に戻った後も注文を開き続けるようなEAを書く 方法を教えてください。アンドレイさん、こんにちは。