海取引の3日逆転戦略は,ラリー・コノスとセサール・アルベレスによる”高確率ETF取引“の3日平均回帰戦略の修正に基づいています. 本の著者は,高確率ETFの平均回帰戦略について議論し,その簡単なルールは:
練習と反省によって,この戦略は,SMAではなくEMAを使ってトレンドラインを計算すると,より効果的であることがわかりました.
この戦略の仕組みは以下の通りです.
このうち,退出EMAはデフォルトで5日EMAで,長さを調整できます。
この戦略の主な考えは,短期反転効果を利用することです. 株価が連続した下落の後,弱くなると,短期反転が発生する可能性が高いのです. この戦略は,価格が3日連続で収縮し,短期平均線より低いかどうかを判断することによって,反転の機会があるかどうかを判断します.
従来の移動均線交差策と比較して,この戦略は以下の利点があります.
3日連続の収縮判断の逆転の機会を利用して,取引信号の質を向上させました.
長短平均線フィルターと組み合わせて,トレンド市場での取引を避ける.
EMAではなくSMAを用いたトレンドラインの計算は,より敏感で,反転を捕捉するのにより適時である.
EMAからの離脱の長さは調整可能で,市場に応じてストップ・ロスの戦略を調整することができる.
取引頻度が低く,一度に1-2日しかポジションを保有しないため,多頭ポジションのリスクを避ける.
この戦略には以下のリスクもあります.
逆転の失敗のリスク. 逆転のシグナルが発生した後に,価格は破綻し,反発する代わりに下落を続ける可能性があります.
頻繁にストップするリスク. 変動の状況では,価格が頻繁にストップを誘発する可能性がある.
パラメータ最適化リスク 退出EMA その他のパラメータは,市場に応じて継続的にテスト・最適化が必要で,調整しなければ効果の差を招く可能性があります.
過剰最適化のリスク オーバーフィットしないように注意し,パラメータの設定を安定にしてください.
リスクは以下の方法で軽減できます.
ストップ・ロスのルールを厳格に遵守し,単一損失をコントロールする.
リスクと利益のバランスを取るために,最適化時に堅牢なパラメータの設定を行います.
ポジションのサイズを調整し,単位のポジションを削減し,リスクを分散する.
この戦略は以下の点で最適化できます.
市場への入場と出場の指標として,異なる長さのEMAをテストし,より適切なパラメータを見つけます.
量能指数などの他のフィルタリング条件を追加し,反転信号をより信頼できるようにする.
ATRのストップ,ストップトラッキングなどのストップ戦略を最適化して,ストップを柔軟にします.
トレンド判断と組み合わせて,反転シグナルがトレンドの中で誤った取引を避ける.
ポートフォリオの最適化,他の戦略の組み合わせ,非関連性の分散リスクの利用.
機械学習などの方法を用いてパラメータの自適化最適化を行い,パラメータを動的に調整する.
海取引3日逆転戦略は,価格が3日連続で収縮し,短期EMAより低い形状を判断することによって,短期逆転の機会を探します.従来の移動平均線戦略と比較して,その入場信号はより信頼性が高く,退出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()