記事"任意のインジケータの計算部分をEAのコードに転送する方法"についてのディスカッション - ページ 2

 

Dmitriy Gizlyk 非常に良い記事です。 あなたのコードを私のEAに実装したところ、インジケーターがチャートにプロットされていないことに気づきました。 EA内で作成したこのインジケーターをチャートにプロットするにはどうすればよいでしょうか?

ありがとうございます。

 

ジョアン・ルイス・サ・マルキオーロ

こういうのを探していたんだ。ありがとう。素晴らしい記事です。


こんにちは。様々な方法を試してみましたが、うまくいきませんでした。上記の研究で行われたように、EAコード内でインジケータをプロットすることは可能でしょうか?

 
口座に入金するためのパスワード
 
wellingtondala:

Dmitriy Gizlyk 非常に良い記事です。 あなたのコードを私のEAに実装したところ、インジケーターがチャートにプロットされていないことに気づきました。 EA内で作成したこのインジケーターをチャートにプロットするにはどうすればよいでしょうか?

ありがとうございます。

この記事では、インジケータの数学的な部分をアドバイザーに転送する方法を紹介しています。この方法は、計算を高速化したり、インジケータをユーザーから隠したりする場合に適用できます。エキスパートアドバイザーからインジケーターをそのまま描画することはできません。インジケータを表示するには、各動作のグラフオブジェクトをチャート上に作成する必要があります。このプロセスは、プログラマーにとって多くの時間を消費し、使用する際にはコンピューティングリソースを消費します。チャート上にインジケータが必要な場合、そのコードをアドバイザーに転送するのは意味がありません。インジケータとアドバイザーをファイルで転送するには、リソースの機能を使用します。

 

DMITRIY GIZLYK、記事をありがとう。

マルチスレッドの問題に興味があるのですが、クラスを別のプロセッサコアで並列実行することは可能でしょうか?記事の最後に、「MetaTrader 5のマルチスレッドアーキテクチャによって、その利点を平準化することができる」と書かれていますね。

Dmitriy Gizlyk
Dmitriy Gizlyk
  • www.mql5.com
Опубликовал статью Нейросети - это просто Каждый раз, когда речь заходит об искусственном интеллекте, в голове всплывают какие-то фантастические образы и кажется, что это очень сложное и непостижимое. Но мы все чаще и чаще слышим об искусственном интеллекте в повседневной жизни. В новостных лентах все чаще пишут о каких-либо достижениях с...
 
Dmitriy Gizlyk:
そうですね、記事にはすぐに、計算はクローズしたローソク足に基づいていると書かれています。各ティックで計算するには、コードから新しいバーを開くチェックを削除し、現在のように「1」からではなく「0」バーから履歴をコピーする必要があります。

私は正しく理解しましたが、時系列データのフルセットを扱うには、これ以外に配列を追加する必要があります:

массив исходных данных для расчета (m_source_data);

つまり、インジケータが異なるバーデータ(time[]、最高値と最低値 high[]、low[])にアクセスする場合、m_source_dataに 類似の配列を3つ追加し、 CIndicator::LoadHistoryで データをコピー する必要があります、

この関数は仮想関数なので、インジケータ内で直接書き換えることができますか?

 

複数のバッファを作成した場合のエラーの発生箇所は次のとおりです。

bool CIndicator::SetBufferSize(const int bars)
  {
   if(bars>0)
      m_data_len  =  bars;
   else
      m_data_len  =  Bars(m_Symbol,m_Timeframe);
//---
   if(m_data_len<=0)
     {
      for(int i=0;i<m_buffers;i++)
         ar_IndBuffers[i].Shutdown();
      return false;
     }
//---
   if(m_history_len<m_data_len)
      if(!SetHistoryLen(m_data_len))
         return false;
//---
   for(int i=0;i<m_buffers;i++)
     {
      ar_IndBuffers[i].Shutdown();
      if(!ar_IndBuffers[i].Resize(m_data_len))
         return false;
     }
//---
   return true;
  }

'Indicator.mqh'の配列が範囲外 です (156,20)


UPD:関数の最初に1行追加したら、問題は解決しました。

ArrayResize(ar_IndBuffers,m_buffers,m_buffers);

 

記事を本当にありがとう!最も興味深いのは、このバージョンで動作が速くなったことです。私のアロー・インジケータは、CopyTicksRange関数とCopyTicks関数を介してティックのリクエストを使用します。このクラスを通して、すべてが規則正しく動作するようになりました。私は、インジケータのCopyTicksRangeとCopyTicksの動作が少し異なっており、システムが同期する時間を与えてくれないという事実と結びつけています。



ps.複数のバッファを持つ矢印インジケータを転送する人は、Indicator.mqh関数を編集する必要があることに注意してください。

CIndicator::SetHistoryLen(const int bars)

CIndicator::LoadHistory(void)

в зоне protected 

また、インジケーターバッファ ar_IndBuffersからのデータの書き込みと受け取り方法はarrowmanでは異なります。

 

やあ、みんな、

mql5で自分でプログラムしたインジケーターが あるのですが、このインジケーターのバッファから、自分がプログラムしているEAの中で情報を呼び出したいと思っています。この方法を教えてください。記事中のコードは役に立ちますか?

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

 
Carlisson Correia :

スタッフ

mql5で自分でプログラムしたインジケーターがあるのですが、このインジケーターのバッファの情報を、自分がプログラムしているEAの中で呼び出したいのです。この方法を教えてください。記事中のコードは役に立ちますか?

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

こんばんは

iCustom 機能をチェックしてください