
この戦略は,移動平均の交差と動的ATRのストップ・ローズに基づく量化取引戦略である.この戦略は,2つの異なる周期の単純な移動平均 ((SMA)) を使って取引信号を生成し,同時に平均実際の波動幅 ((ATR)) を使って,リスクをより良く制御するためにストップとストップ・ローズを動的に設定する.さらに,この戦略は,異なる取引時間帯に応じて取引信号をフィルターして,戦略の安定性を高める.
この戦略の核心原理は,移動平均線の交差を利用して価格トレンドの変化を捉えることである. 急速移動平均線が,下から上へとゆっくり移動平均線を横切るとき,買入シグナルを生成する. 急速移動平均線が,上から下へとゆっくり移動平均線を横切るとき,売り出しシグナルを生成する. 同時に,この戦略は,ATRを使って動的にストップとストップ・ロスを設定し,ストップ・ロスは入場価格に3倍のATRを加え,ストップ・ロスは入場価格に1.5倍のATRを減去する.
この戦略は,移動平均の交差によって価格の傾向を捉え,ATRを使用してリスクを制御する簡単な,分かりやすいトレンド追跡戦略である.この戦略には一定のリスクがあるにもかかわらず,パラメータ最適化,シグナルフィルタリング,リスク管理などの最適化により,戦略の安定性と収益性をさらに向上させることができます.初心者にとって,この戦略は,学習と実践の良い事例です.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced Moving Average Crossover Strategy", overlay=true)
// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(50, title="Slow MA Length")
atrLength = input(14, title="ATR Length")
riskPerTrade = input(1, title="Risk Per Trade (%)") / 100
// Time-based conditions
isLondonSession = hour >= 8 and hour <= 15
isAsianSession = hour >= 0 and hour <= 7
isEuropeanSession = hour >= 7 and hour <= 14
// Moving Averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// Average True Range (ATR) for dynamic stop loss and take profit
atr = ta.atr(atrLength)
// Buy and Sell Conditions
buySignal = ta.crossover(fastMA, slowMA)
sellSignal = ta.crossunder(fastMA, slowMA)
// Dynamic stop loss and take profit
stopLoss = close - atr * 1.5
takeProfit = close + atr * 3
// Strategy Logic
if (buySignal and isEuropeanSession)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", limit=takeProfit, stop=stopLoss)
if (sellSignal and isEuropeanSession)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", limit=takeProfit, stop=stopLoss)
// Plotting
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")