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

 
mila.com:

私はサイクロプスでそれを確認し、正しくその指標を入力することはできません。

あなたのスクリプトは、すべての設定においてゼロを返します。現在、1本目と3本目のバーの差は0.005なので、3を返すことになっています。

はっきりしなかったかもしれない。 これをループに入れたいと思う。


double ma_etalon=iMA(NULL,0,...,i+1);

double ma_curr;

int shift;

for(shift=2;shift<5;shift++) {

    ma_curr=iMA(NULL,0,...,i+shift);

    if (ma_etalon-ma_curr<0.005) break; // ах ты чёрт, значение близко

}

if (shift==5) {

   // цикл досчитал до конца, то есть все значение довольно далеко
   // ... развернись плечо ...

}

 
mila.com:

ありがとうございます。でも、何かおかしいんです。


0.005は何の単位で測るのか?(を乗算する必要があります。)
 

皆さんありがとうございました、うまくいきました )

 
mila.com:

皆さんありがとうございました、うまくいきました )

ちょっと気になったんですが、これって必要だったんですか?

 double prevMA=0,currMA=0;
 for(int i=1;i<=5;i++) {
  if(i==1) currMA=iMA(Symbol(),0,14,0,MODE_EMA,PRICE_CLOSE,i);
  prevMA=iMA(Symbol(),0,14,0,MODE_EMA,PRICE_CLOSE,i);
  if(MathAbs(prevMA-currMA)>0.0005) {
   // сюда пишем в буфер
   break;
  }
 }
 
Vitaly Muzichenko:

ただ、そのようなニーズはあったのでしょうか?

はい、そして、このデザインをインジケーターのメインループにどのようにはめ込むのですか?

 
Vladimir Pastushak:

トレーリングでtakeの代わりに0を入れたとはっきり言ったはずです。

このオプションにチェックを入れます。


効果あり!!!:))))....私たち負け犬に付き合ってくれてありがとう))))))ありがとうございました!)

 

こんにちは。

iCustomを使用して、別の時間枠の指標値をシフトして取得する方法を教えてください。

例)M5で作業していて、M15からインジケータの値を取得したい、M15で直前のローソク足の値を取得したい。

int start() 
{ 
  HistBar = History;
  int i,counted_bars = IndicatorCounted();
  if (counted_bars < 0) return (-1);
  if (counted_bars > 0) counted_bars--;
  int limit = MathMin(Bars-counted_bars,HistBar+100);

  for(i=limit; i>=0; i--)
   {  
   int HT1,HT2; 
        if (_Period == PERIOD_M1)  
            {HT1 = PERIOD_M5;
            HT2 = PERIOD_M15;}
        else
           {
           if (_Period == PERIOD_M5)  
            {HT1 = PERIOD_M15;
            HT2 = PERIOD_M30;}
           else
              {
              if (_Period == PERIOD_M15)  
               {HT1 = PERIOD_M30;
               HT2 = PERIOD_H1;}
               }
            }
   //MFI
   long Volume_0_0 = iVolume(NULL,0,i);
   long Volume_0_1 = iVolume(NULL,0,i+1);
   double BWMFI_0_0 = iBWMFI(NULL,0,i);
   double BWMFI_0_1 = iBWMFI(NULL,0,i+1);

   ///////// вопрос как тут указать правильно
   long Volume_1_0 = iVolume(NULL,HT1,i);
   long Volume_1_1 = iVolume(NULL,HT1,i+1);
   double BWMFI_1_0 = iBWMFI(NULL,HT1,i);
   double BWMFI_1_1 = iBWMFI(NULL,HT1,i+1);
   ....
}
 
LSM:

こんにちは。

iCustomを使用して、別のタイムフレームで指標値をシフトして取得する方法を教えてください。

M5で作業しているのですが、M15からインジケータの値を取得したいのですが、M15で直前のローソク足の値を取得したいのですが、どうすればよいでしょうか?

ドキュメントをよく読めば十分です

double  iCustom(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   string       name,             // папка/имя_пользовательского индикатора
   ...                            // список входных параметров индикатора
   int          mode,             // источник данных
   int          shift             // сдвиг
   );
 
Alexey Viktorov:

ドキュメントをよく読んでください

質問を編集し、コードを追加しました。ループが起きているのです。ループで発生した時に何が出るかは不明です。
 
LSM:
質問を編集し、コードを追加しました。ループが起きているのです。ループで発生した時に何が出るかは不明です。

必要な人がいるかもしれないので、自分の質問に答えますね)

   
   !!!!
   int y = iBarShift(NULL,HT1,Time[i]);
   
   long Volume_1_0 = iVolume(NULL,HT1,y);
   long Volume_1_1 = iVolume(NULL,HT1,y+1);
   double BWMFI_1_0 = iBWMFI(NULL,HT1,y);
   double BWMFI_1_1 = iBWMFI(NULL,HT1,y+1);