トートルトレーディング3日逆転戦略は,ラリー・コナーズとセザー・アルバレスによる本"高確率ETF取引"から"3日平均逆転戦略"を改変したものです.著者は,これらの単純なルールで高確率ETF平均逆転戦略について議論しています.
練習とバックテストを通じて,トレンドラインに SMA の代わりに EMA を使えば,戦略が一貫してうまく機能することを発見しました.このスクリプトではトレンドラインに EMA を使います.また,出口 EMA の長さを調整することができます.
戦略は以下の通りです
エクジット EMA は 5 日間の EMA に設定され,その長さは調整できます.
この戦略の主な考え方は,短期間の平均逆転を利用することである.価格が継続的に下がると,短期的には反発する可能性が高い.この戦略は,価格が短期EMA以下で3日連続で収縮したかどうかを確認することによって,平均逆転機会を特定する.逆転が起きたら,価格が出口EMAを超えるとすぐに終了する.
伝統的な移動平均のクロスオーバー戦略と比較して,この戦略には以下の利点があります.
3日連続の収縮を用いることで 逆転を特定することで 信号の質が向上します
長期・短期EMAのフィルタリングは,トレンド市場での取引を避けます.これは,範囲帯での逆転を意味する取引だけです.
トレンドラインに SMA の代わりに EMA を使うことは,逆転を捉えるのにより敏感です.
調整可能なEXIT EMA長さは,市場の状況に基づいてストップロスの戦略をカスタマイズすることができます.
1〜2日間の保持期間で取引頻度が低いため,長向きの賭けに関連するリスクは避けられます.
この戦略には次のリスクもあります
逆転のリスクは失敗します. 逆転信号の後,価格が反転し,下落を続けることがあります.
ストップ・ロスのリスクが頻繁です 価格が不安定な市場では繰り返しストップ・ロスを打つ可能性があります
パラメータ最適化リスク.Exit EMAやその他のパラメータは,市場の進化に基づいて継続的なテストと調整が必要です.調整がなければパフォーマンスが低下する可能性があります.
オーバーフィッティングリスク 最適化はオーバーフィッティングを避けるべきです パラメータは堅牢でなければなりません
リスクは以下によって軽減できます.
ストップ・ロスの規則を厳格に遵守し,単一の取引損失を制御する.
リスクとリターンをバランスするために最適化中に 堅牢なパラメータ調整
ポジションのサイズを調整し,取引ごとにリスクが低いようにします.
戦略は以下の点で改善できる:
入口と出口の異なるEMA長さをテストして最適なパラメータを見つける.
音量などのフィルターを追加して 逆転信号がより信頼性が高いようにします
ATR や トレイリングストップのような方法でストップロスを強化して 柔軟性を高めます
既存のトレンドに逆転の信号を取らないようにトレンドフィルターを組み込む.
ポートフォリオの最適化と多様化のための他の戦略と組み合わせます
適応性パラメータ調整のために機械学習を使用します
トートルトレーディング3日逆転戦略は,ショートEMA以下の3日間の収縮パターンを検出することによって,短期逆転機会を特定する.従来の移動平均戦略と比較して,より信頼できるエントリー信号とストップ損失最適化のための調整可能な出口EMAを持っています.この戦略は範囲限定の揺らぎ市場とショートブーンを捕獲するのにうまく機能します.しかし,パラメータ,ストップ損失,トレンドフィルターを改善するためのさらなる機会があります.他の戦略と組み合わせることでパフォーマンスをさらに向上させることができます.
/*backtest start: 2023-10-05 00:00:00 end: 2023-10-12 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // @version = 5 // Author = TradeAutomation strategy(title="ETF 3-Day Reversion Strategy", shorttitle="ETF 3-Day Reversion Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_order, commission_value=1, initial_capital = 10000000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Backtest Date Range Inputs // StartTime = input(defval=timestamp('01 Jan 2012 05:00 +0000'), title='Start Time') EndTime = input(defval=timestamp('01 Jan 2099 00:00 +0000'), title='End Time') InDateRange = true // Strategy Rules // DayEMA5 = ta.ema(close, 5) Rule1 = close>ta.ema(close, 200) Rule2 = close<DayEMA5 Rule3 = high<high[1] and low<low[1] and high[1]<high[2] and low[1]<low[2] and high[2]<high[3] and low[2]<low[3] ExitEMA = ta.ema(close, input.int(5, "EMA Length For Exit Strategy", tooltip = "The strategy will sell when the price crosses over this EMA")) plot(DayEMA5) plot(ExitEMA, color=color.green) // Entry & Exit Functions // if (InDateRange) strategy.entry("Long", strategy.long, when = Rule1 and Rule2 and Rule3) // strategy.close("Long", when = ta.crossunder(close, ATRTrailingStop)) strategy.close("Long", when = ta.crossover(close, ExitEMA)) if (not InDateRange) strategy.close_all()