MetaTrader 5向けスマートトレンドフォロワーの解説

Mike 2025.02.04 12:53 17 0 0
添付ファイル

今回は、MetaTrader 5で利用できる「スマートトレンドフォロワー」について詳しく解説します。このEA(エキスパートアドバイザー)は、移動平均線やストキャスティクスを使用して、トレンドを追いかけることができる優れたツールです。

1. 列挙型(Enum Types)

  • enumJnsSignal: EAで使用するシグナルの種類を定義します。シグナルには以下の2つのオプションがあります。
    • eTypeCrossMA: 2つの移動平均線の交差を利用したシグナル。
    • eTypeTrend: 移動平均線とストキャスティクスを使ってトレンドを追うシグナル。
  • enumOrderType: 注文の種類を定義します。
    • eBuy: 買い注文。
    • eSell: 売り注文。
    • eNone: 注文が実行されていない状態。

2. 入力パラメータ

  • inMagicNumber: このEAからの注文を区別するためのユニークなマジックナンバー。
  • inLotSize: 各注文の初期ロットサイズ。
  • inMultiply: ロットサイズ戦略で使用される乗数ファクター。
  • inJarakLayer: グリッド/レイヤー戦略でのトレーディングポジション間のピップ距離。
  • inMAPeriodFast & inMAPeriodSlow: 移動平均線の速い期間と遅い期間。
  • inSTOKPeriod, inSTODPeriod, inSTOSlowing: ストキャスティクスオシレーターのパラメータ。
  • inTakeProfit & inStopLoss: テイクプロフィットとストップロスの設定。

3. 構造体 dataTrades

  • この構造体は、オープンしているトレーディングポジションに関連するデータを保存します。具体的には、ポジションの総数(ttlPos)、ポジションの平均価格(hargaTA, hargaTB)、および総ボリューム(ttlLot)を含みます。

4. OnInit() 関数

  • この関数はEAの初期化を行います。入力パラメータの検証(例: 速いMA期間が遅いMA期間より小さいことを確認)や、MAおよびストキャスティクスインジケーターのハンドル作成を含みます。

5. OnTick() 関数

  • 価格が動くたびに実行されるメインの関数です。
  • GetSignal()を呼び出して新しいシグナルを確認し、シグナルが見つかればmanageTrading()を使ってトレードを実行します。
  • setTPSL()を呼び出してテイクプロフィットとストップロスが常に更新されるようにします。

6. isNewCandle() 関数

  • この関数は新しいキャンドルが形成されたかどうかを検出します。EAは新しいキャンドル形成時にのみシグナルを確認します。

7. GetSignal() 関数

  • この関数は選択した戦略に基づいて有効なトレーディングシグナルが存在するかを判断します。
    • eTypeCrossMA: 速い移動平均線と遅い移動平均線の交差によってシグナルを決定します。
    • eTypeTrend: MAとストキャスティクスからの確認を用いてシグナルを決定します。

8. manageTrading() 関数

  • この関数はトレードの実行を管理します。
  • 有効なシグナルが検出された場合、getLotSize()関数を使用して決定されたロットサイズでポジションをオープンします。
  • 価格の距離(inJarakLayer)に基づいて追加のポジションを開くためにグリッド/レイヤー戦略も適用されます。

9. updateDataTrades() 関数

  • この関数は進行中のトレーディングポジションに関連するデータを更新し、オープンポジションの平均価格と総ボリュームを計算します。

10. openTrade() 関数

  • この関数は生成されたシグナルと計算されたロットサイズに基づいて新しいトレーディングポジションを開きます。 OrderSend()を使用して注文を実行します。

11. setTPSL() 関数

  • この関数は各オープンポジションのテイクプロフィットとストップロスを設定または更新します。

12. modifTPSL() 関数

  • この関数は、以前に設定された値と異なる場合に既存のポジションのテイクプロフィットとストップロスを修正します。

13. validateLot() 関数

  • この関数は、使用されるロットサイズが許可された最小および最大範囲内であり、最小ロットステップ(gLotStep)に従っていることを確認します。

14. getLotSize() 関数

  • この関数は初期ロットサイズとすでにオープンされているポジションの数に基づいて使用するロットサイズを計算します。乗数ファクター(inMultiply)も考慮されます。

このコードは、市場のトレンドを捉え、移動平均線やストキャスティクスからの技術的シグナルを使用してトレーディングポジションを自動的に管理するように設計されています。

リスト
コメント 0