初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 783

 
Vitaly Muzichenko:

ご清聴ありがとうございました。

インジケータの全体像はこんな感じで、iEnvelopesOnArrayとiBandsOnArrayを 使わずにどうやってやるのかが全く不明です。


なぜ、それらを使わずに行わなければならないのか。まあ、バッファーデータを元に自分で計算してみてください。しかし、その後、捨てたいものと同じ計算を繰り返すはずです。

 
Artyom Trishkin:

なぜダメなのか?まあ、バッファーデータを元に自分で計算してみてください。しかし、その後に捨てたいものと同じ計算を繰り返さなければならない。

誰も拒否はしないが、mql4のように任意の配列ではなく、ハンドルしか取らない

 
Alexey Viktorov:

誰も拒否はしないが、ハンドルしか受け付けない、mql4のように任意の配列は受け付けない

なるほど、迷いますね。mql4についての質問かと思いました。
 
Artyom Trishkin:
なるほど、混乱していたんですね。4くらいだと思ってた。

質問は5への変換についてで、目標は4で今と同じような表示にすることです

より完全なコードは以下の通りです。シンボルは、チャート上のボタンを押すことでインジケータに代入されます。

  for(int i=0; i<limit; i++) {
    Last[i] = Symbol1_Vol*Vol1*iClose(Symbol1_Name,0,iBarShift(Symbol1_Name,0,Time[i])) - 
              Symbol2_Vol*Vol2*iClose(Symbol2_Name,0,iBarShift(Symbol2_Name,0,Time[i]));
  }

 for(int i=0; i<limit; i++) {
    if(ButtonSt) { // кнопка выбора, отображать Bands, или Envelopes
     MA[i]=iMAOnArray(Last,0,Env_Period,0,MODE_SMA,i);
     LineUp[i]=iEnvelopesOnArray(Last,0,Env_Period,MODE_SMA,0,Env_Dev,MODE_UPPER,i);
     LineDn[i]=iEnvelopesOnArray(Last,0,Env_Period,MODE_SMA,0,Env_Dev,MODE_LOWER,i);
    } else {
     MA[i]=iMAOnArray(Last,0,BB_Period,0,MODE_SMA,i);
     LineUp[i]=iBandsOnArray(Last,0,BB_Period,BB_Dev,0,MODE_UPPER,i);
     LineDn[i]=iBandsOnArray(Last,0,BB_Period,BB_Dev,0,MODE_LOWER,i);
    }
  }

これをどう5進数に変換するのか?それとも、機能的に無理なのでしょうか?

 
Vitaly Muzichenko:

質問は5への変換についてで、目標は4で今と同じような表示にすることです

より完全なコードは以下の通りです。シンボルは、チャート上のボタンを押すことでインジケータに代入されます。

これをどう5進数に変換するのか?それとも、機能が入っていないため無理なのでしょうか?

だから、誰もイナイレでハンドルを握ることを堂々としていない...。

 
Alexey Viktorov:

だから、誰もイナイレでハンドルを握ることを堂々としていない...。

かまわない)

iEnvelopesOnArrayとiBandsOnArrayを どう置き換えればいいのか、Fiveにないので全くわからず、どこから手をつけていいのかわからない状態です。MT5で完全に同じマッピングを取得する必要があります。

 
Vitaly Muzichenko:

かまわない)

iEnvelopesOnArrayとiBandsOnArrayを どう置き換えればいいのか、Fiveにないので全くわからず、どこから手をつけていいのかわからない状態です。MT5で完全に同一のマッピングを取得する必要があります。

無視するのは今に始まったことじゃないから。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

初心者からのFAQ MQL5 MT5 MetaTrader 5

アレクセイ・ビクトロフ, 2017.09.21 20:06

includeのルートにMovingAverages.mqhがありますが、BBは探していません、多分ないでしょう。しかし、最良の選択肢は、データソースインジケーターのハンドルをiMA関数に価格として貼り付けることです。

iMAをスムージングしただけの例です。

int haMa8, haFastMa, haMa21, haSlowMa;

int OnInit()
 {
   haMa8  = iMA(_Symbol, PERIOD_CURRENT, perFastMa, 0, metodFastMa, priceFastMa);
   haFastMa = iMA(_Symbol, PERIOD_CURRENT, perFastMa, 0, metodFastMa, haMa8);
   
   haMa21 = iMA(_Symbol, PERIOD_CURRENT, perSlowMa, 0, metodSlowMa, priceSlowMa);
   haSlowMa = iMA(_Symbol, PERIOD_CURRENT, perSlowMa, 0, metodSlowMa, haMa21);

//Продолжение догадаешься

BBも同様です。

ソースがカスタムインジケータの 場合は

  • 別に作る。
  • 新しいインジケータを作成します。
  • 最初の1枚を資料として添付する。
  • そして、そのハンドルを受け取った後、iMAに挿入するなどの機能があります。

なんということでしょう・・・。


 
Alexey Viktorov:

自分の書いたものを無視するのは今に始まったことではないので

includeのルートにMovingAverages.mqhがありますが、BBは探したことがないので、もしかしたらないのかもしれません。
ありますね。\゙MQL5 ゙Indicators ゙Trend.mqh
 
Artyom Trishkin:
了解です。\゙MQL5 ゙Indicators ゙Trend.mqh

ありがとうございます、今見つけました。

カスタムインジケータに iTEMAを適用する必要があったのですが、そこを見ようと思わなかった...。上記のようにしたところ、すべて問題なく動作するようになりました。

 

関数を作りたいのですが、よろしくお願いします。

私は現在のTFと推定TFを持っています、関数は、測定がバーであった場合、任意の組み合わせで2つのTFの差を返す必要があります

計算用TF 15 15 15 60 60 60 240 240 240
現在のTF 15 5 1 15 5 1 60 15 5
Nbarの差 1 3 15 4 12 60 4 16 48

どうすれば正しく実装できるのか?

理由: