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

 

EAからハイタイムフレームのインジケーターデータが取得できないのですが。

2019.07.22 07:23:02.556 Core 1  2017.10.05 07:00:00   Не удалось скопировать значения индикатора. Error =4806,  copied =-1

そして、最適化の際には、それが効果を発揮します。ビジュアライザーで実行を開始すると、このエラーが表示されます。

インジケーターの調子が悪いのか?

ファイル:
ind.mq5  11 kb
 
EgorKim:

EAからハイタイムフレームのインジケーターデータが取得できないのですが。

そして、最適化の際には、それが効果を発揮します。ビジュアライザーで実行を開始すると、このエラーが表示されます。

インジケーターの調子が悪いのか?

EAコードはどこですか?

原因としては、インジケータが配置されているパス(iCustomを通してアドバイザーにインジケータへの パスを書き込む)にあると思われます。また、インジケーターのmq5とex5のファイルは同じフォルダにあるはずです。

 
EgorKim:

EAからハイタイムフレームのインジケーターデータが取得できないのですが。

そして、最適化の際には、それが効果を発揮します。ビジュアライザーで実行を開始すると、このエラーが表示されます。

インジケーターの調子が悪いのか?

で、そのインジケータは、[date folder]の \MQL5 Indicators .mq5 にあって、コンパイルされたファイルもあるんです。

インジケーターバッファ「0」~「Means」にアクセスするExpert Advisorの例です。

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//--- input parameters
input int      Input1=9;
//---
int    handle_iCustom;              // variable for storing the handle of the iCustom indicator /*
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create handle of the indicator iCustom
   handle_iCustom=iCustom(Symbol(),Period(),"ind");
//--- if the handle is not created 
   if(handle_iCustom==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double means[];
   ArraySetAsSeries(means,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iCustom,0,start_pos,count,means))
      return;

   string text="Means:"+"\n";
   for(int i=count-1;i>=0;i--)
     {
      text=text+"#"+IntegerToString(i)+": "+DoubleToString(means[i],Digits())+"\n";
     }
   Comment(text);
  }
//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
double iGetArray(const int handle,const int buffer,const int start_pos,const int count,double &arr_buffer[])
  {
   bool result=true;
   if(!ArrayIsDynamic(arr_buffer))
     {
      Print("This a no dynamic array!");
      return(false);
     }
   ArrayFree(arr_buffer);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied=CopyBuffer(handle,buffer,start_pos,count,arr_buffer);
   if(copied!=count)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(false);
     }
   return(result);
  }
//+------------------------------------------------------------------+

そしてテスターでの結果。


とオンラインになります。


ファイル:
Test.mq5  7 kb
 
Vladimir Karputov:

で、そのインジケータは、[date folder]の \MQL5 Indicators .mq5 にあって、コンパイルされたファイルもあるんです。

インジケーターバッファ「0」~「Means」にアクセスするExpert Advisorの例です。

そしてテスターでの結果。


そしてオンライン。


現在のタイムフレームではエラーは発生していません。

より高い時間枠のデータを受信した場合に問題が発生します。

明らかに問題はインジケータにあり、私のEAにあるわけではありません)

また、最適化モードでのエラーはありません。シングルパスとビジュアライゼーションを有効にすると-エラーが発生します。エラーは...

以下は、私が理解する同テーマのトピックです。

https://www.mql5.com/ru/forum/190003

Не получается брать данные индикатора со старшего ТФ
Не получается брать данные индикатора со старшего ТФ
  • 2017.04.14
  • www.mql5.com
Уже четвёртый день в индикаторе пытаюсь получить данные стандартного индикатора АО со старшего таймфрейма, и всё никак...
 
EgorKim:

現在の時間軸ではエラーは出ていません。

問題は、より高い時間枠からデータを取得した場合に現れます。

問題は明らかにインジケータにあり、私のEAにあるわけではありません)

また、最適化モードでのエラーはありません。シングルパスとビジュアライゼーションを有効にすると-エラーが発生します。エラーは...

以下は、私が理解する同テーマのトピックです。

https://www.mql5.com/ru/forum/190003

シニアタイムフレームへの言及がない - そのデータは最新に保たれていない。
Проблема перевода с МТ4 на МТ5. Или, точнее, невозможность без'ошибочного исполнения некоторых алгоритмов в МТ5.
Проблема перевода с МТ4 на МТ5. Или, точнее, невозможность без'ошибочного исполнения некоторых алгоритмов в МТ5.
  • 2019.07.21
  • www.mql5.com
Сначала цитата из справочника языка MQL5. Рубрика Организация доступа к данным...
 

このようなインジケータをデフォルトのパラメータでH1チャートに配置します。

エラーが発生しました

アルチョム・トリシキン

インジケーターの修正方法を教えてください。

ファイル:
ind2.mq5  22 kb
 
EgorKim:

現在の時間軸ではエラーは出ていません。

問題は、より高い時間枠からデータを取得した場合に現れます。

問題は明らかにインジケータにあり、私のEAにあるわけではありません)

また、最適化モードでのエラーはありません。シングルパスとビジュアライゼーションを有効にすると-エラーが発生します。エラーは...

以下は、私が理解する同テーマのトピックです。

https://www.mql5.com/ru/forum/190003

COUNTERの改良版です。パラメータでインジケータのタイムフレームを設定 することができます。テスターとオンラインの両方で動作します。

//--- create handle of the indicator iCustom
   handle_iCustom=iCustom(Symbol(),Inp_period,"ind",
                          bars_IN,
                          SP,
                          N_Shift1,
                          Forecast,
                          kstd,
                          Oscilator,
                          N_Buff,
                          Ka,
                          La,
                          Za,
                          Oe,
                          Me,
                          DIGf);
ファイル:
Test.mq5  10 kb
 
Vladimir Karputov:

ここでは、COUNTERの改良版として、パラメータでインジケータのタイムフレームを設定 することができます。テスターでもオンラインでも動作します。

では、Expert Advisorが最適化 中に取引することは、どのように説明できるのでしょうか。そして、ビジュアライゼーションでは、一度もトレードがないのですか?

 
EgorKim:

では、最適化 中にExpert Advisorが 取引するのはどう説明されるのでしょうか。可視化中は取引もない?

ポジションを建てる条件(インジケーターバッファ番号とバー番号)は何ですか?

 
Vladimir Karputov:

ポジションを建てる条件(インジケーターバッファ番号とバー番号)は何ですか?

こんな感じ。

そして、いくつかのオプティマイザーパスはビジュアライザーで一致します。

また、一部のパスでは、全くトレードがないものもあります。

double price1=0.0;
price1=iCustomGet(handle_ind,1,0)
double price2=0.0;
price2=iCustomGet(handle_ind,2,0)
double open=0.0;   
double open          = iOpen(Symbol(),Period(),0);

   if(price1!=0.0 && price2!=0.0 && open!=0.0)
     {
      if(open<price1)
        {
         buy
        }
      if(open>price2)
        {
         sell
        }
      }
//+------------------------------------------------------------------+
//| Get value of buffers for the iCustom                             |
//|  the buffer numbers are the following:                           |
//+------------------------------------------------------------------+
double iCustomGet(int handle,const int buffer,const int index)
  {
   double Custom[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iCustom array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle,buffer,index,1,Custom)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iCustom indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(Custom[0]);
  }
//+------------------------------------------------------------------+

問題はインジケーターにあると思います。

また、アルテムさんが正しく指摘されているように、問題は実際のデータにあります。

ただ、その方法を教えてくれないのです)

理由: