
概要:この戦略は,3つの異なる周期の移動平均に基づいて金叉死叉取引を実現する.短周期平均線上を長周期平均線を横切るときは多行し,短周期平均線下を長周期平均線を横切るときは空行する.長期トレンド平均線と組み合わせてトレンド方向を判断する.
戦略の原則:
3つの移動平均を定義し,それぞれ短期平均線,長期平均線およびトレンド平均線とする.短期平均線周期は20で,長期平均線周期は200で,トレンド平均線周期は50である.
短期平均線が長期平均線を穿越すると買入シグナルが多く,短期平均線の下で長期平均線を穿越すると売出シグナルが空になる.
同時に,短期平均線と長期平均線がトレンド平均線上にあるかどうかをチェックし,満たされない場合は,その信号をフィルターする.これは逆行操作を避けることができる.
ストップ・ロズとストップ・ストップは入場価格の一定比率に設定され,実際の状況に応じてパラメータを最適化することができる.
均線の交差点を描いて,入場時間を観察する.
優位分析:
戦略はシンプルで直感的で,理解し,実行しやすい.
短期間のトレンドを効果的に捉えることができ,順番を考慮して.
トレンド均線と組み合わせると,逆行操作を避けるため,信号をさらにフィルターできます.
3つの均線のパラメータを調整することで,異なる市場の特徴に適応できます.
リスク管理のためのカスタマイズ可能な止損停止パラメータ.
リスク分析:
市場が急激に揺れ動くと,ストップダメージがカバーされる可能性があります.
市場が変化すると,大きな損失が起こる可能性があります.
パラメータを正しく設定しない場合,取引が頻繁になるか,機会が逃れる可能性があります.
取引コストの影響を考慮する必要があります
改善する方向:
波動率指数と組み合わせて,ATRなどの信号をさらにフィルターすることができます.
機械学習アルゴリズムを導入して動的に最適化できるパラメータ.
MACDなどの他の指数で判断する傾向を組み合わせることができます.
移動ストップを設定して利益をロックできます.
ストップダストのパラメータを反測で最適化することができる.
結論から言うと
この戦略の全体的な考え方は明確で実行しやすく,金叉死叉の系統的なトレンドキャプチャによってリスクを制御する.トレンド均線とストップ・ストップを配合する.パラメータ設定は,特定の市場状況に応じて最適化する必要がある.効果を高めるためにさらに多くの指標を組み合わせることができる.この戦略は,中短期のトレンド取引に適しており,反測とデモ取引で良好なパフォーマンスを発揮する.
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("XAU M15", overlay=true)
// Define input parameters
long_length = input.int(64, title="Long MA Length")
short_length = input.int(1, title="Short MA Length")
trend_length = input.int(200, title="Trend MA Length")
// Calculate moving averages
long_ma = ta.sma(close, long_length)
short_ma = ta.sma(close, short_length)
trend_ma = ta.sma(close, trend_length)
// Plot moving averages on chart
plot(long_ma, color=color.blue, title="Long MA")
plot(short_ma, color=color.red, title="Short MA")
plot(trend_ma, color=color.green, title="Trend MA")
// Entry conditions
enterLong = ta.crossover(long_ma, short_ma) and long_ma > trend_ma and short_ma > trend_ma
enterShort = ta.crossunder(long_ma, short_ma) and long_ma < trend_ma and short_ma < trend_ma
if (enterLong)
strategy.entry("Long", strategy.long)
if (enterShort)
strategy.entry("Short", strategy.short)
// Exit conditions
exitLong = ta.crossunder(long_ma, short_ma)
exitShort = ta.crossover(long_ma, short_ma)
if (exitLong)
strategy.close("Long")
if (exitShort)
strategy.close("Short")
// Set stop loss and take profit levels
long_stop_loss_percentage = input(1, title="Long Stop Loss (%)") / 100
long_take_profit_percentage = input(3, title="Long Take Profit (%)") / 100
short_stop_loss_percentage = input(1, title="Short Stop Loss (%)") / 100
short_take_profit_percentage = input(3, title="Short Take Profit (%)") / 100
strategy.exit("Take Profit/Stop Loss", "Long", stop=close * (1 - long_stop_loss_percentage), limit=close * (1 + long_take_profit_percentage))
strategy.exit("Take Profit/Stop Loss", "Short", stop=close * (1 + short_stop_loss_percentage), limit=close * (1 - short_take_profit_percentage))
plotshape(series=enterLong, title="Buy Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.tiny)
plotshape(series=enterShort, title="Sell Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)