English Deutsch
preview
ParafracおよびParafrac V2オシレーターを使用した取引戦略の開発:シングルエントリーパフォーマンスインサイト

ParafracおよびParafrac V2オシレーターを使用した取引戦略の開発:シングルエントリーパフォーマンスインサイト

MetaTrader 5エキスパートアドバイザー |
25 0
Daniel Opoku
Daniel Opoku

はじめに

テクニカル分析は、既存ツールの改良によって常に進化を続けています。Parafracオシレーターとその後継であるV2モデルは、その代表例です。どちらもParabolic SAR (PSAR)と現在価格のギャップに基づく概念から派生しています。両者の核心的な違いは標準化手法にあり、オリジナルのParafracオシレーターはPSARと価格のギャップをフラクタルレンジで正規化するのに対し、Parafrac V2はATR (Average True Range)を用いて標準化します。この違いによって両インジケーターは異なるトレンド構造やレベルを示すようになり、固有の取引機会を提示するため、詳細な検証に値します。

本記事では、ParafracとParafrac V2の両オシレーターに対して複数の取引戦略を構築し、そのテストをおこなうことを目的としています。両モデルのパフォーマンスを比較することで、市場状況に応じたそれぞれの強みと弱みについて有用な知見を得ることができます。


戦略の定義

本記事では、両オシレーターを3つの異なる戦略フレームワークに適用し、その挙動を検証します。各戦略は特定の市場構造やシグナル特性を捉えるよう設計されています。

戦略1:ゼロラインクロス+ヒストグラム確認

  • 買いシグナル:オシレーターがゼロラインを上抜け、最初の2本のヒストグラムのいずれかが、設定した正の閾値を上抜けた場合
  • 売りシグナル:オシレーターがゼロラインを下抜け、最初の2本のヒストグラムのいずれかが、設定した負の閾値を下抜けた場合

戦略2:ヒストグラムモメンタムシフト

  • 売りシグナル:3本のヒストグラムすべてがゼロより上にあり、かつ減少している場合
  • 買いシグナル:3本のヒストグラムすべてがゼロより下にあり、かつ増加している場合

戦略3:ヒストグラムとローソク足の組合せ

  • 買いシグナル:3本のヒストグラムすべてがゼロより上で増加しており、かつ2本前に確定したローソク足が陰線である場合
  • 売りシグナル:3本のヒストグラムすべてがゼロより下で減少しており、かつ2本前に確定したローソク足が陽線である場合

これら3つの戦略を体系的に適用することで、ParafracオシレーターとParafrac V2オシレーターのパフォーマンスを定量的に比較します。本分析は、特定の戦略アプローチに対してどちらのインジケーターがより適しているか、またどのように総合的な取引プランへ統合すべきかについて、トレーダーに実践的な知見を提供します。


バックテストパラメータ

結果を検討する前に、本検証で使用したテスト条件を明確にしておく必要があります。すべての戦略はGBP/USDを対象とし、時間足はH1(1時間足)で統一しました。バックテスト期間は2021年1月1日から2024年12月31日までとし、多様な市場環境を十分に含む堅牢なデータセットを確保しています。 

入力パラメータ

//--- Indicator Type enum
enum IndicatorType
  {
   TypParafrac=0,
   TypParafracV2=1
  };

// Input parameters for trading
input IndicatorType UseIndicator = TypParafrac;  // Select Parafrac or V2 model
input double LotSize = 0.01;                     // Lot size
input int StopLossPoints = 700;                  // Stop loss in points
input double RiskRewardRatio = 2.0;              // Risk/Reward ratio
input double pstep = 0.02;
input double pMax = 0.2;
input int AtrPeriod = 7;                         //ATRperiod for V2
input bool UseStrategy1 = true;                  // Enable Strategy 1
input double threshold4Strat1 =1.5;              //threshold for strat 1
input bool UseStrategy2 = false;                 // Enable Strategy 2
input bool UseStrategy3 = false;                 // Enable Strategy 3

enum部では、IndicatorTypeというカスタム列挙型を定義しています。これにより、次の2つのインジケーターモードを選択できます。

  • TypParafrac = 0: オリジナルのParafracオシレーター
  • TypParafracV2 = 1: ATRを基盤としたParafrac V2オシレーター

EAの挙動は、以下の設定項目によって制御されます。

  • オシレーターの選択:使用するオシレーターを選択します。 デフォルトはTypParafracです。
  • ロットサイズ:すべての注文で使用する固定ロット数を指定します。本記事では全テストで0.01ロットを使用しました。
  • ストップロス距離:ストップロスをポイント単位で設定します(pipsではありません)。必要に応じてユーザーがpipsへ手動換算する必要があります。
  • テイクプロフィット:リスクリワード比(RRR)を用いてテイクプロフィットを設定します。
  • インジケーターパラメータ:PSARおよびATRの各種パラメータを設定します。 ATRはParafrac V2オシレーター使用時のみ有効です。
  • 戦略1の閾値:戦略1でのみ使用される閾値を設定します。
  • 戦略の有効化:3つの戦略(1、2、3)を個別に有効化または無効化できます。EAは常に同時に1つの取引しか実行しません。すべての戦略を有効にしていても、発生した最初の有効シグナルのみが取引をトリガーします。
   if( !TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) ){ 
        MessageBox("Enable AutoTrading"); 
        return (0); 
       }

   // Create indicator handle
   indicatorHandle = (UseIndicator==TypParafrac)?
    iCustom(_Symbol, _Period, "ParaFracOscillator", pstep, pMax ):
    iCustom(_Symbol, _Period, "ParaFracV2_Oscillator", pstep, pMax, AtrPeriod );  
   
   if(indicatorHandle == INVALID_HANDLE)
   {
      Print("Error creating indicator handle");
      return(INIT_FAILED);
   }

初期化関数では、EAが次の項目を確認できるようになっています。

  • 自動取引権限チェック:プラットフォーム側でAutoTradingが有効かどうかを確認します。 無効の場合は[Enable AutoTrading]というポップアップメッセージを表示し、EAの初期化処理を即座に終了します(以降の処理は実行しません)。
  • インジケーターの読み込み:ユーザーが選択した設定に応じて、Parafracオシレーターまたは Parafrac V2オシレーターを読み込みます。 システムにインジケーターが存在しない場合は、名称をクリックすることでダウンロードページへ移動し、そのままインストールできます。
  • ハンドル管理:インジケーターバッファへアクセスするためのハンドルを保持します。 インジケーターの読み込みや初期化に失敗した場合、EAは例外を発生させず安全に終了します。
void OnDeinit(const int reason)
{
   // Release indicator handle
   if(indicatorHandle != INVALID_HANDLE)
      IndicatorRelease(indicatorHandle);
}

EAの初期化解除処理では、iCustom()で生成したParafrac(またはV2)カスタムインジケーターがメモリから適切に解放されるよう処理をおこないます。


結果と考察

以降のセクションでは、コード実装の詳細とバックテスト結果の考察について説明します。

戦略の検証はGBPUSDのH1時間足を対象に、初期証拠金1000ドル、期間2021年1月から2024年12月までの3年間で実施しました。パフォーマンス評価には以下の主要指標を使用しています。

  1. 総純利益:初期証拠金に対する総損益
  2. 利益率:総利益と総損失の比率
  3. 総取引数:実行された全取引の数
  4. ドローダウン率:資産ピークからの最大下落率
  5. 勝率およびRRR:勝率およびリスクリワード比に基づく評価
  6. 連敗・連勝数:連続した損失または勝利の回数

戦略1:実装とテスト

最初の戦略は、前述の売買ルールに基づいて実装しました。ParafracオシレーターとParafrac V2モデルの両方について、この戦略フレームワーク下でテストをおこないました。

   // Strategy 1: Zero line crossover with strong momentum
   if(UseStrategy1 && !Check4TradesOpen(POSITION_TYPE_BUY) )
   {
      // Buy condition: Cross up zero and any of first 2 histograms above threshold
      if( (prevValue <= 0 && currentValue > 0 || prevValue2 <= 0 && prevValue > 0) 
           && currentValue > threshold4Strat1  )
      {
         ExecuteBuy();
      }
   }
   
   if(UseStrategy1 && !Check4TradesOpen(POSITION_TYPE_SELL))
   {
      // Sell condition: Cross down zero and any of first 2 histograms below -threshold
      if( (prevValue >= 0 && currentValue < 0 || prevValue2 >= 0 && prevValue < 0 )  
           && currentValue < -threshold4Strat1 )
      {
         ExecuteSell();
      }
   }

このフェーズでは、戦略を最適化するために、ストップロス、RRR、閾値の3つの主要パラメータを使用しました。 目的は、戦略1のフレームワーク内で、各インジケーターに対して最もパフォーマンスと堅牢性を最大化できるパラメータセットを特定することです。 最適化プロセスの後、各インジケーターにおける最良パフォーマンスのパラメータセットを選定しました。

Parafracオシレーターの結果

図1は、戦略1におけるParafracオシレーターのパフォーマンスを示しています。

paraf_strat1

図1:戦略1におけるParafracオシレーターの結果

分析

  • 総純利益:74.15ドル(初期証拠金の+7.4%)。穏やかな成長を示し、戦略は利益を出しているものの規模は限定的です。
  • プロフィットファクター:1.18。利益は損失をわずかに上回る程度で、余裕は大きくありません。
  • 総取引数:133。取引回数は多く機会は多いものの、ノイズやだましシグナルへの露出も増加します。
  • ドローダウン率:5.23%。中程度のリスクで比較的良好な資産保護が実現されています。
  • 勝率とRRR:勝率37.59%、RRR 2。勝率は低いものの、RRRが高いためシステムは利益を維持できています。
  • 連敗/連勝数:連敗7回、連勝2回。長期連敗が発生しやすく、トレーダー心理に影響する可能性があります。

Parafrac V2オシレーターの結果

図2は、戦略1におけるParafrac V2オシレーターのパフォーマンスを示しています。 

strat1_prafV2

図2:戦略1におけるParafrac V2オシレーターの結果

分析

  • 総純利益:120.06ドル(初期証拠金の+12.0%)。オリジナルParafracよりも成長率が高く、より強力な利益が見込めます。
  • プロフィットファクター:1.53。利益に対する損失の割合が良好で、収益性が高いことを示します。
  • 総取引数:52。取引回数は少ないものの、より選択的で質の高い取引機会となっています。
  • ドローダウン率:6.37%。 オリジナルよりやや高いものの、許容範囲内です。
  • 勝率とRRR:勝率51.92%、RRR 1.5。勝率とRRRのバランスが良く、安定したパフォーマンスを示します。
  • 連敗/連勝数:連敗6回、連勝4回。オリジナルより一貫性が高く、長期連敗も少なくなっています。

比較分析

戦略1では、Parafrac V2がほとんどの指標でオリジナルを上回りました。総純利益が高く、プロフィットファクターも改善され、取引分布もよりバランスの取れたものになっています。V2はドローダウンがやや高いものの、勝率の向上と取引頻度の低下により、よりクリーンで質の高いシグナルを提供しています。

オリジナルParafracは利益を出せるものの、低勝率を高RRRで補う形であり、連敗が続くとトレーダーの心理的負荷が高まる可能性があります。

シグナルフィルタリングに関する重要な観察

シミュレーションで得られた重要な知見として、両オシレーターは確認閾値に非常に敏感であることがわかりました。閾値を低く設定すると、低品質の取引が過剰に発生し、取引コストやだましによってマイナスの結果となります。閾値を高めることで取引数は大幅に減少し、パフォーマンスも著しく改善されました。これは、このインジケーター設定の本質的な価値がトレンド方向の特定ではなく、ブレイク時のモメンタムの強さを定量化することにあることを示しています。閾値は重要なフィルターとして機能し、有意なモメンタムのみが取引をトリガーすることで、標準的なPSARクロスオーバーシステムにはない独自の優位性を提供します。

戦略2:実装とテスト

2番目の戦略も、前述の取引ルールに従って実装しました。ゼロラインを基準としたヒストグラムのモメンタム変化に注目する手法です。ParafracオシレーターとParafrac V2モデルの両方について、この戦略フレームワーク下でテストをおこないました。

   // Strategy 2: Momentum reversal
   if(UseStrategy2 && !Check4TradesOpen(POSITION_TYPE_BUY))
   {
      // Buy condition: 3 histograms increasing below zero
      if(currentValue < 0 && prevValue < 0 && prevValue2 < 0 &&
         currentValue > prevValue && prevValue > prevValue2)
      {
         ExecuteBuy();
      }
   } 
   
   if(UseStrategy2 && !Check4TradesOpen(POSITION_TYPE_SELL))
   {
      // Sell condition: 3 histograms decreasing above zero
      if(currentValue > 0 && prevValue > 0 && prevValue2 > 0 &&
         currentValue < prevValue && prevValue < prevValue2)
      {
         ExecuteSell();
      }
   }   

戦略1とは異なり、戦略2では閾値フィルターは使用せず、最適化はストップロスとRRRの2項目のみに焦点を当てました 。 最適化フェーズ終了後、各インジケーターにおける最良パフォーマンスのパラメータセットを選定しました。

Parafracオシレーターの結果

図3は、戦略2におけるParafracオシレーターのパフォーマンスを示しています。

strat2paraf

図3:戦略2におけるParafracオシレーターの結果

分析

  • 総純利益:94.80ドル(初期証拠金の+9.4%)。利益は出ているものの、取引数の多さに対してリターンは控えめです。
  • プロフィットファクター:1.02。利益と損失がほぼ均衡しており、ほとんど余裕のない状況です。
  • 総取引数:1,323。極めて高い取引回数であり、過剰取引や取引コストの増加にさらされます。
  • ドローダウン率:12.61%。戦略1に比べリスクは深くなっています。
  • 勝率とRRR:勝率41.04%、RRR 1.5。控えめな勝率でも、わずかに有利なRRRが利益維持に寄与しています。
  • 連敗/連勝数:連敗7回、連勝5回。長期連敗の傾向がある一方、中程度の連勝も可能です。

Parafrac V2オシレーターの結果

図4は、戦略2におけるParafrac V2オシレーターのパフォーマンスを示しています。

strat2paraV2

図4:戦略2におけるParafrac V2オシレーターの結果

分析

  • 総純利益:123.06ドル(初期証拠金の+12.3%)。オリジナルより絶対利益で上回っています。
  • プロフィットファクター:1.03。オリジナルよりわずかに高く、トントンに近い効率ですが、わずかに改善が見られます。
  • 総取引数:1,266。オリジナルよりやや少ない取引数でありながら、依然として高頻度です。
  • ドローダウン率:13.7%。オリジナルよりやや高く、リスク露出は増加しています。
  • 勝率とRRR:勝率51.26%、RRR 1.0。勝率の向上により、RRRの低さを補い、より安定した勝利結果が得られています。
  • 連敗/連勝数:連敗5回、連勝8回。オリジナルに比べ、長期連敗は少なく、連勝のまとまりが強化されています。

比較分析

戦略2においては、Parafrac V2が全体的により優れた効果を示しました。総純利益が高く、勝率も向上し、連敗回数も減少しています。ドローダウンはやや大きいものの、長期連勝や信頼性の高い結果によって相殺されています。

一方、オリジナルParafracオシレーターは依然として利益を出せますが、取引数が過剰でプロフィットファクターが1.0付近にとどまるなど効率は低くなります。取引量に依存するため、V2モデルに比べ信頼性は劣ります。

まとめると、戦略2においてはParafrac V2がよりバランスの取れたパフォーマンスを発揮するのに対し、オリジナルParafracは過剰取引や連敗の影響で信頼性が低い結果となります。

戦略3:実装とテスト

3番目の戦略も、前述のルールに基づいて実装しました。ヒストグラムの動きとローソク足の確認シグナルを組み合わせる手法です。具体的には、3つのヒストグラムが同一方向に揃った際に、直近確定ローソク足が確認シグナルを示した場合にポジションを建てます。 ParafracオシレーターおよびParafrac V2モデルの両方で、この戦略をテストしました。

   // Strategy 3: Momentum continuation with confirmation
   if(UseStrategy3 && !Check4TradesOpen(POSITION_TYPE_BUY))
   {
      // Buy condition: 3 histograms increasing above zero AND bearish candle
      if(currentValue > 0 && prevValue > 0 && prevValue2 > 0 &&
         currentValue > prevValue && prevValue > prevValue2 &&
         priceData[0].close < priceData[0].open)
      {
         ExecuteBuy();
      }
   }
   
   if(UseStrategy3 && !Check4TradesOpen(POSITION_TYPE_SELL))
   {
      // Sell condition: 3 histograms decreasing below zero AND bullish candle
      if(currentValue < 0 && prevValue < 0 && prevValue2 < 0 &&
         currentValue < prevValue && prevValue < prevValue2 &&
         priceData[0].close > priceData[0].open)
      {
         ExecuteSell();
      }
   }
}

最適化プロセスでは、 ストップロスとRRRの2項目に焦点を当てました。  最適化の結果をもとに、両インジケーターで最も良好なパフォーマンスを示す設定が選定されました。

Parafracオシレーターの結果

図5は、戦略3におけるParafracオシレーターのパフォーマンスを示しています。

strat3paraf

図5:戦略3におけるParafracオシレーターの結果

分析

  • 総純利益:187.81ドル(初期証拠金の+18.8%)。強い収益性を示し、このインジケーターで観測された全戦略の中で最も高い利益です。
  • プロフィットファクター:3.9。利益が損失のほぼ4倍に達しており、非常に効率的な取引がおこなわれています。
  • 総取引数:26。非常に選択的なシステムで、取引機会は少ないもののシグナル品質は高くなります。
  • ドローダウン率:3%。リスク露出が非常に低く、安定的で資本保護に優れています。
  • 勝率とRRR:勝率73.08%、RRR 1.5。高い勝率と有利なRRRの組み合わせにより、安定した取引成果が得られています。
  • 連敗/連勝数:連敗2回、連勝7回。短い連敗と長期連勝により、心理的にも有利な取引環境です。

Parafrac V2オシレーターの結果

図6は、戦略3におけるParafrac V2オシレーターのパフォーマンスを示しています。

strat3paraV2

図6:戦略3におけるParafrac V2オシレーターの結果

分析

  • 総純利益:42.14ドル(初期証拠金の+4.2%)。利益は出ているものの、オリジナルParafracに比べてはるかに低い結果です。
  • プロフィットファクター:1.03。利益が損失をわずかに上回る程度で、取引の優位性は限定的です。
  • 総取引数:247。オリジナルに比べ非常に高頻度の取引で、ノイズが多く選択性が低下しています。
  • ドローダウン率:16.69%。リスクが大きく、資本が高いボラティリティにさらされています。
  • 勝率とRRR:勝率41.7%、RRR 1.5。勝率が低いため、RRRが合理的でも収益性は抑えられています。
  • 連敗/連勝数:連敗9回、連勝4回。長期連敗が発生しやすく、資産減少リスクや心理的負荷が増加します。

比較分析

戦略3では、オリジナルParafracオシレーターがV2モデルに対して明確に優位であることが示されました。取引数が少なく、ドローダウンが低く、勝率が高く、プロフィットファクターも強力であるため、効率性と収益性の両面でオリジナルが勝っています。

一方、V2オシレーターはこの戦略では苦戦しました。取引数の増加、プロフィットファクターの低下、深いドローダウンにより、シグナル品質のフィルタリング能力が低いことが示されました。それでも純利益はプラスですが、効率性や安定性ではオリジナルに及びません。

したがって、戦略3ではオリジナルParafracオシレーターの方が有効であり、高い収益と安定性の両方を提供します。

戦略2と3に関する重要な観察

このシミュレーションにより、シグナルフィルターの重要性が改めて示されました。戦略2は確認フィルターがないためにノイズが過剰となり、低品質な取引が数千回発生しました。一方、戦略3ではプライスアクション(ローソク足フィルター)を組み込むことで、オリジナルParafracのノイズを大幅に減らし、パフォーマンスを劇的に改善することに成功しました。しかし、Parafrac V2では、このプライスアクションフィルターだけでは本戦略における固有のノイズを抑えきれず、依然として取引数が多い結果となっています。このことから、V2モデルにおいて戦略3を実用化するには、最低モメンタム閾値やトレンド強度フィルターなど、追加 のフィルターが必要であることが示唆されます。

3つの戦略はGBPUSDのH1時間足で評価されましたが、分析をM30やH4など他の時間足に拡張したり、GBPJPY、AUDUSD、EURAUDなど他の通貨ペアに適用した調査も可能です。さらに、コモディティ市場でテストすることで、インジケーターの強みや制約をより包括的に評価することもできます。


結論

本記事では、オリジナルParafracオシレーターおよびそのV2モデルに対して3つの取引戦略を適用し、それぞれの強みと弱点について洞察を提供しました。

  • 戦略1(ゼロラインクロス+ヒストグラム確認)では、ストップロス、RRR、閾値の最適化により、両オシレーターとも利益を上げることができました。V2モデルは総純利益と勝率でオリジナルを上回りましたが、両モデルとも取引過多を抑えるために閾値を高めることで大幅な改善が見られました。
  • 戦略2(ヒストグラムモメンタムシフト) 閾値なしで運用した結果、両オシレーターとも過剰な取引回数となりました。V2オシレーターは勝率を維持しましたが、総利益は両モデルともわずかで、プロフィットファクターもほぼトントンでした。この結果から、フィルタリングされていない戦略は市場ノイズに弱いことが明らかになりました。
  • 戦略3(ヒストグラムとローソク足の組合せ)では、ローソク足による確認フィルターを導入した結果、オリジナルParafracオシレーターはV2モデルを大きく上回りました。総純利益、プロフィットファクター、勝率が大幅に向上し、ドローダウンも低く安定性が高い結果となりました。一方、V2モデルは取引数が多く、長期連敗が発生しやすく、効率性が低下しました。

総合すると、シグナルフィルタリングや実行ルールはオシレーターの有効性を決定する上で非常に重要であることが示されました。V2モデルは戦略1では優れたパフォーマンスを発揮し、戦略2でもやや優位でしたが、戦略3ではオリジナルParafracが圧倒的に有効であり、ローソク足を用いた確認の重要性が確認されました。つまり、どちらか一方が「常に優れている」というわけではなく、取引戦略に応じて適したモデルを選択することが重要です。 

次回の記事では、3つの戦略すべてに閾値の微調整やプライスアクションフィルターを導入し、パフォーマンスの一貫性や収益性をさらに向上できるかを検証します。

MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/19439

添付されたファイル |
MQL5でのAI搭載取引システムの構築(第2回):ChatGPT統合型アプリケーションのUI開発 MQL5でのAI搭載取引システムの構築(第2回):ChatGPT統合型アプリケーションのUI開発
本記事では、MQL5でChatGPTを統合したプログラムを開発します。このプログラムでは、第1回で作成したJSON解析フレームワークを活用してOpenAIのAPIにプロンプトを送信し、MetaTrader 5のチャート上に応答を表示します。入力フィールド、送信ボタン、応答表示を備えたダッシュボードを実装し、API通信やテキストの折り返し処理をおこなうことで、ユーザーとのインタラクションを実現します。
ボラティリティベースのブレイクアウトシステムの開発 ボラティリティベースのブレイクアウトシステムの開発
ボラティリティベースのブレイクアウトシステムは、市場のレンジを特定したうえで、ATRなどのボラティリティ指標によるフィルタを通過した場合に、価格がそのレンジを上方または下方へブレイクしたタイミングでエントリーする手法です。このアプローチにより、強い方向性を伴う値動きを捉えやすくなります。
Market Sentimentインジケーターの自動化 Market Sentimentインジケーターの自動化
この記事では、市場の状況を強気、弱気、リスクオン、リスクオフ、中立(ニュートラル)に分類するMarket Sentimentカスタムインジケーターを自動化します。エキスパートアドバイザー(EA)は、現在の市場の傾向や方向性の分析プロセスを合理化しながら、一般的なセンチメントに関するリアルタイムの洞察を提供します。
MQL5でのデータベースの簡素化(第2回):メタプログラミングを使用してエンティティを作成する MQL5でのデータベースの簡素化(第2回):メタプログラミングを使用してエンティティを作成する
前回の記事では、MQL5における#defineを活用した高度なメタプログラミング手法を検討し、テーブルや列のメタデータ(データ型、主キー、オートインクリメント、NULL許容など)を表現するエンティティを定義しました。これらの定義はTickORM.mqhに集約し、メタデータクラスを自動生成する仕組みを整えることで、SQLを直接記述することなくORMが効率的にデータ操作を実行できる基盤を構築しています。