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

 
barabashkakvn:
すべての計算はOnCalculateで行われます(つまり、新しいバーイベントがここで定義されます)。
ありがとうございます、見てみます。私の理解不足かもしれませんが、Fiveではカスタムインジケータの 値を取得するためのバッファインデックスを指定することができないようです。
 
forexman77:
ありがとうございます、見てみます。私の理解不足かもしれませんが、カスタムインジケータの 値を取得するためにバッファのインデックスを指定することはできないようです。
iCustomは、カスタムインジケータのハンドルを指定します。次にCopyBuffer、この中の第2パラメータはバッファ番号です。
 
個別の最適化実行ではなく、EAの最適化を 完全に停止させる機能があれば教えてください。
 
barabashkakvn:
iCustomは、カスタムインジケータの ハンドルを指定します。次にCopyBuffer、この中の第2パラメータはバッファ番号です。

教えてください!スクリプトでインジケーターの値を取得することは可能でしょうか?

こんな風にやってみました。

input int MA_Period=21;
input int MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMA;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
double MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",
                     MA_Period,
                     MA_Shift,
                     MA_Method,
                     PRICE_CLOSE // считаем по ценам закрытия
                     );  
Alert("MA_handle=",MA_handle);
  }

任意のインジケータ10で値を取得する。

私もこの方法で試してみました(エラー4807が出ます)。

input int MA_Period=21;
input int MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMA;
int MA_handle;
double ma1Val[]; 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

//--- массив значений индикатора MA
   ArraySetAsSeries(ma1Val,true);
//--- копируем значения индикаторов из индикаторных буферов
   if(CopyBuffer(MA_handle,0,0,3,ma1Val)<0)
     {
      Alert("Ошибка копирования буферов индикатора Moving Average - номер ошибки:",GetLastError(),"!!");
      return;
     }
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",
                     MA_Period,
                     MA_Shift,
                     MA_Method,
                     PRICE_CLOSE // считаем по ценам закрытия
                     );  
Alert("ma1Val[0]=",ma1Val[0]);
  }
 
forexman77:
以下の手順で行います。
iCustomは、カスタムインジケータの ハンドルを指定します。そして、CopyBuffer。第2パラメータはバッファ番号です。

教えてください!スクリプトでインジケーターの値を取得することは可能でしょうか?

こんな風にやってみました。

任意のインジケータ10で値を取得する。

別の方法を試した(エラー4807が出る)。

1.iCustomのヘルプを読む。
2.インジケータバッファの値を取得するには、インジケータハンドルを取得し、CopyBufferを使用して必要なインジケータバッファをコピーしてください。
 
barabashkakvn:
1.iCustomのヘルプを読む。
2.インジケータバッファの値を取得する順序:インジケータハンドルを取得し、次にCopyBufferを使用して必要なインジケータバッファをこのハンドルでコピーする。
わかりました、勉強します。スクリプトは "OnInit "がなく、ハンドルを取得してしまうので質問しました。では、スクリプトは "OnStart "の前にハンドルを要求するのですね。
 
forexman77:
なるほど、調べてみます。スクリプトは "OnInit "がなく、ハンドルを取得してしまうので質問しました。これは、スクリプトが "OnStart "の前にハンドルを要求していることを意味するのでしょうか?
OnInitはExpert Advisorとインジケータに存在します。
 
barabashkakvn:
OnInitはエキスパートとインジケータにあります。
全部うまくいった!!!ありがとうございます!!!
 
forexman77:
すべてうまくいった!ありがとうございます!!!
どういたしまして。
 
Fleder:
マーケットにある製品のアクティベーションは5~20回です(販売店の判断による)。アクティベーションの試行回数を使い切っていなくても、追加料金を請求されることはありませんのでご安心ください。
返信ありがとうございます、購入のボタンを押してみます。他にはありません :-)
理由: