記事"DoEasyライブラリの時系列(第35部): バーオブジェクトと銘柄の時系列リスト"についてのディスカッション

 

新しい記事 DoEasyライブラリの時系列(第35部): バーオブジェクトと銘柄の時系列リスト はパブリッシュされました:

本稿は、簡単で迅速なプログラム開発のためのDoEasyライブラリの作成に関する新しいシリーズの始まりとなります。本稿では、銘柄の時系列データにアクセスして操作するためのライブラリ機能を実装します。メインおよび拡張時系列バーデータを格納するバーオブジェクトを作成し、オブジェクトの検索と並び替えを容易にするために、時系列リストにバーオブジェクトを配置します。

本稿は、MetaTrader 5および4ターミナル用のプログラムを簡単に開発するためのライブラリの説明に関する新しいセクションの始まりとなります。初めのセクション(34稿)ではライブラリオブジェクトとその相互接続の概念に専念しました。この概念は、口座の現在のステータスと履歴を操作するための機能を開発するために使用されました。

現在、ライブラリには次の機能があります。

  • 任意の注文またはポジションのデータの検索、並べ替え、比較をおこなう
  • 注文およびポジションのプロパティへの迅速で便利なアクセスを提供する
  • 口座イベントを追跡する
  • 口座および銘柄データを取得および比較する
  • データベース(コレクション)内のすべての既存オブジェクトのプロパティ変更に応答し、発生したイベントの通知をプログラムに送信する

また、ライブラリが応答する必要のあるイベントをライブラリに通知したり、監視対象イベントに関する通知を送信したりすることもできます。

さらに、ターミナル取引機能と連携する機能を実装しました。また、新しいタイプの取引リクエストも作成しました。保留中取引リクエストにより、さまざまな取引条件でプログラムの動作ロジックを作成したり、新しいタイプの未決注文を作成するための機能一式を提供したりできます。
以前のセクションでは、これらすべておよびその他の多くのものが作成され、説明されました。

この2番目のセクションでは、価格データ、銘柄チャート、市場深度、指標などを操作する多くの側面を考慮しています。一般的に、今回の連載では、価格データ配列およびそれらのストレージオブジェクトとソースへの迅速なアクセス、検索、比較、並び替えのためのライブラリ機能の開発に当てられます。

作者: Artyom Trishkin

 

SBに同名の クラスがあるのに、CSシリーズに 新しいクラスを 設けるのは、ちょっと不謹慎だ。

Документация по MQL5: Стандартная библиотека / Индикаторы / Базовые классы / CSeries
Документация по MQL5: Стандартная библиотека / Индикаторы / Базовые классы / CSeries
  • www.mql5.com
Класс CSeries обеспечивает всем своим потомкам (классам таймсерий и индикаторов) возможность упрощенного доступа к общим функциям API MQL5 в части работы с серийными данными.
 
Denis Kirichenko:

SBに同名の クラスがあるのに、CSシリーズに 新しいクラスを 設けるのは、ちょっと不謹慎だ。

そうだね。ありがとう。

 

各バーの非常に重要なパラメータは、高値の時間と安値の時間、または少なくとも2つの高値または安値のどちらが時間的に最初に発生したかを示すフラグです。この情報は、より低い時間枠のバーを分析するか、M1から直接得ることができます。この機能を追加してください。

 
Rosimir Mateev:

各バーの非常に重要なパラメータは、高値の時間と安値の時間、または少なくとも2つの高値または安値のどちらが時間的に最初に発生したかを示すフラグです。この情報は、より低い時間枠のバーを分析するか、M1から直接得ることができます。この機能を追加してください。

このような機能は自分自身で行うことができます - 低い時間枠のすべてのデータがあり、そのバーのすべてのデータがあります。これは最後の記事ではなく、次の記事にはあらゆるシンボルのすべてのタイムフレームの完全なリストがあります。特に、タイムスケールの更新時間が長くなります。したがって、必要のないところでこのような分析を行うよりも、リクエストに応じてすでに利用可能なものからデータを取得する方がよいでしょう。

 

Artyomさん、こんにちは --標準ライブラリの代わりにDoEasyを使用して、 https://www.mql5.com/ja/code/316 CCandlePatternの ように、異なるローソク足のパターンを検出するクラスを作成するには、どのような方法がありますか?

このライブラリの将来の方向性に完全に反することをしないようにお願いしたいのですが...。私は、(1) CBarと CSeriesの クラスを修正 または拡張して、私が必要とすることを行うか、(2) またはDoEasyイベントを使って、私が興味を持っているシンボル/期間の新しいバーを検出し、そこからローソク足のパターンをチェックするコードを実装し、DoEasyを再び使って注文を出したりポジションを持ったりすることを考えていました。多分、#2のオプションの方が将来の開発に対してよりクリーンでリスクが少ないと思いますが、他の提案があれば教えてください。

acandlepatterns.mqh

class  CCandlePattern : public  CExpertSignal
  {
protected:

// ...

   //--- ローソク足パターン形成のチェックに使用されるメソッド。
   double            AvgBody(int ind);
   double            MA(int ind)                const { return(m_MA.Main(ind));             }
   double            Open(int ind)              const { return(m_open.GetData(ind));        }
   double            High(int ind)              const { return(m_high.GetData(ind));        }
   double            Low(int ind)               const { return(m_low.GetData(ind));         }
   double            Close(int ind)             const { return(m_close.GetData(ind));       }
   double            CloseAvg(int ind)          const { return(MA(ind));                    }
   double            MidPoint(int ind)          const { return(0.5*(High(ind)+Low(ind)));   }
   double            MidOpenClose(int ind)      const { return(0.5*(Open(ind)+Close(ind))); }
   //--- ローソク足パターンのチェック方法
   bool              CheckPatternThreeBlackCrows();
   bool              CheckPatternThreeWhiteSoldiers();
   bool              CheckPatternDarkCloudCover();
   bool              CheckPatternPiercingLine();
   bool              CheckPatternMorningDoji();
   bool              CheckPatternEveningDoji();
   bool              CheckPatternBearishEngulfing();
   bool              CheckPatternBullishEngulfing();
   bool              CheckPatternEveningStar();
   bool              CheckPatternMorningStar();
   bool              CheckPatternHammer();
   bool              CheckPatternHangingMan();

MQL5 Wizard - Trade Signals Based on Hammer/Hanging Man + MFI
MQL5 Wizard - Trade Signals Based on Hammer/Hanging Man + MFI
  • www.mql5.com
The generic idea is the following: the class of trading signals is derived from CExpertSignal, the next, it's necessary to override the LongCondition() and ShortCondition() virtual methods with your own methods. The best way is to create the separate class, derived from CExpertSignal for checking of formation of candlestick patterns. For...
 
ddiall :

こんにちは、Artyom --標準ライブラリの代わりにDoEasyを使用して、 https://www.mql5.com/ja/code/316 CCandlePatternと 同様に、異なるローソク足のパターンを検出するクラスを作成するには、どのような方法がありますか?

私は、あなたがこのライブラリで取ろうとしている将来の方向性に完全に反するようなことをしないようにお願いしているのですが...。私は、(1) CBarと CSeriesの クラスを修正 または拡張して、私が必要とすることを行うか、(2) またはDoEasyイベントを使って、私が興味を持っているシンボル/期間の新しいバーを検出し、そこからローソク足パターンをチェックするコードを実装し、DoEasyを再び使って注文を出したりポジションを持ったりすることを考えていました。多分、#2のオプションの方がよりクリーンで、将来の開発に対するリスクも少ないと思いますが、他の提案があれば教えてください。

acandlepatterns.mqh

class   CCandlePattern :  public   CExpertSignal
  {
protected :

// ...

    //--- ローソク足パターン形成のチェックに使用されるメソッド。
    double             AvgBody( int  ind);
    double             MA( int  ind)                 const  {  return (m_MA.Main(ind));             }
    double             Open( int  ind)               const  {  return (m_open.GetData(ind));        }
    double             High( int  ind)               const  {  return (m_high.GetData(ind));        }
    double             Low( int  ind)                const  {  return (m_low.GetData(ind));         }
    double             Close( int  ind)              const  {  return (m_close.GetData(ind));       }
    double             CloseAvg( int  ind)           const  {  return ( MA(ind) );                    }
    double             MidPoint( int  ind)           const  {  return ( 0.5 *(High(ind)+Low(ind)) );   }
    double             MidOpenClose( int  ind)       const  {  return ( 0.5 *(Open(ind)+Close(ind)) ); }
    //--- ローソク足パターンのチェック方法
    bool               CheckPatternThreeBlackCrows();
    bool               CheckPatternThreeWhiteSoldiers();
    bool               CheckPatternDarkCloudCover();
    bool               CheckPatternPiercingLine();
    bool               CheckPatternMorningDoji();
    bool               CheckPatternEveningDoji();
    bool               CheckPatternBearishEngulfing();
    bool               CheckPatternBullishEngulfing();
    bool               CheckPatternEveningStar();
    bool               CheckPatternMorningStar();
    bool               CheckPatternHammer();
    bool               CheckPatternHangingMan();

このライブラリには、PriceActionのローソク足のパターンや、様々な日本のローソク足のフォーメーションを検索するためのクラスが含まれます。

CBarオブジェクト・クラスに新しいプロパティを追加するのが最も賢明だと思う。従って、時系列のコレクションは目的のローソク足とパターンを検索できるようになる。

つまり、ライブラリになるわけだ。

今のところ、必要なパターンとローソク足を時系列コレクションのリストから探すことができる。

 
Artyom Trishkin:

このライブラリには、PriceActionのローソク足のパターンと、日本の様々なローソク足のフォーメーションを検索するためのクラスが含まれます。

CBarオブジェクト・クラスに新しいプロパティを追加するのが最も賢明だと思う。従って、タイム・シリーズのコレクションは、希望するローソク足とパターンを検索できるようになる。

つまり、ライブラリになるわけだ。

今のところ、必要なパターンとローソク足を時系列コレクションのリストから検索することができます。

それは素晴らしい!この素晴らしい機能をいつ実装しますか?コードの提供には興味がありますか?

 
Dima Diall :

それは素晴らしいことだ!この良いものをすべて実装し始めるのはいつになりそうですか?コードの提供には興味がありますか?

その時が来たらね。)