
この策略は移動平均の跨度反転と名付けられており,異なる周期的な移動平均の間の交差を計算して,トレードが逆転するタイミングを判断し,適切な多空操作を行う.
この戦略は3つの移動平均を同時に計算します.
急速移動平均線が下からゆっくり移動平均線を通るときは,短期的な動きが多頭部に逆転し始めることを示す.急速移動平均線が上から下からゆっくり移動平均線を通るときは,短期的な動きが空頭部に逆転し始めることを示す.
偽の突破をフィルターするために,戦略は第4の移動平均,すなわち長期トレンドフィルター ((周期パラメータtlenght) を導入した.価格が移動平均線上にある場合にのみ,多信号を考慮し,価格が移動平均線の下にある場合にのみ,空信号を考慮する.
取引の具体的ルールは以下の通りです.
急速移動平均線上には遅い移動平均線を穿い,そして遅い移動平均線上には最も遅い移動平均線を穿いするときに (短期多頭シグナル) 価格が長期トレンドフィルターよりも高いとき,多頭ポジションを平らにする.
急速移動平均線の下からゆっくり移動平均線を通過し,そしてゆっくり移動平均線が最もゆっくり移動平均線を下を通過するときに (短期空頭シグナル),そして価格が長期トレンドフィルターより低いとき,空頭ポジションを平らにする. 急速移動平均線上からゆっくり移動平均線を通過するときに空頭ポジションを平らにする.
この戦略の利点は以下の通りです.
この戦略には以下のリスクもあります.
解決策は
この戦略は,以下の点で最適化できます.
この戦略は,移動平均の金叉死叉をベースに逆転取引を行い,同時に長期トレンドフィルターを導入し,取引方向を指引し,市場逆転のタイミングを効果的に識別することができる.回測結果からすると,この戦略は収益性が優れ,一定の現金市場適用価値がある.その後,パラメータ選択,指標フィルター,止損機構などから最適化することができ,戦略をより安定して実用的にすることができる.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average Trap", overlay=true)
flenght = input.int(title="Fast MA Period", minval=1, maxval=2000, defval=3)
llenght = input.int(title="Slower MA Period", minval=1, maxval=2000, defval=5)
sslenght = input.int(title="Slowest MA Period", minval=1, maxval=2000, defval=8)
tlenght = input.int(title="Trend Filter MA Period", minval=1, maxval=2000, defval=200)
ssma = ta.sma(close, sslenght)
fma = ta.sma(close, flenght)
sma = ta.sma(close, llenght)
tma = ta.sma(close, tlenght)
plot(fma, color=color.red)
plot(sma, color=color.white)
plot(ssma, color=color.green)
plot(tma, color=color.maroon, linewidth=2)
short = (fma > sma and sma > ssma) and close < tma
long = (fma < sma and sma < ssma) and close > tma
closeshort = fma < sma and sma < ssma
closelong = fma > sma and sma > ssma
if long
strategy.entry("long", strategy.long)
if closelong
strategy.close("long")
if short
strategy.entry("short", strategy.short)
if closeshort
strategy.close("short")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)