
この戦略は,2つの異なるパラメータの移動平均を計算することによって,快線が慢線を横切るときに買取シグナルを生成する.同時に,平均実際の波動範囲を計算してストップ価格を追跡し,価格がストップ価格を下回るときに売りシグナルを生成する.この戦略は,市場動向を効果的に追跡し,利益の後にタイムリーにストップする.
この戦略はトレンド追跡とストップ管理を融合し,中長線方向を追跡することも,ストップを介して単一の損失を制御することもできます.
移動平均のパラメータを適切に最適化したり,ATR倍数を調整したりして,ストップ・ローズを均衡させることができる.また,他の指標をフィルター条件として組み合わせて,入場時間を改善することもできる.
この戦略は,移動平均のトレンド追跡とATRの動的ストップをうまく融合させ,パラメータを最適化することで,異なる株式特性に適応できます.この戦略は,明確な買入制限とストップ制限を形成し,取引ロジックは簡単に明確になります.全体的に,この双移動平均のストップトラッキング戦略は,安定し,シンプルで,最適化されやすく,株式取引の基本戦略に適しています.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//created by XPloRR 24-02-2018
strategy("XPloRR MA-Buy ATR-MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100)
testStartYear = input(2005, "Start Year")
testStartMonth = input(1, "Start Month")
testStartDay = input(1, "Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2050, "Stop Year")
testStopMonth = input(12, "Stop Month")
testStopDay = input(31, "Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriodBackground = input(title="Background", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
emaPeriod = input(12, "Exponential MA")
smaPeriod = input(45, "Simple MA")
stopPeriod = input(12, "Stop EMA")
delta = input(6, "Trailing Stop #ATR")
testPeriod() => true
emaval=ema(close,emaPeriod)
smaval=sma(close,smaPeriod)
stopval=ema(close,stopPeriod)
atr=sma((high-low),15)
plot(emaval, color=blue,linewidth=1)
plot(smaval, color=orange,linewidth=1)
plot(stopval, color=lime,linewidth=1)
long=crossover(emaval,smaval)
short=crossunder(emaval,smaval)
//buy-sell signal
stop=0
inlong=0
if testPeriod()
if (long and (not inlong[1]))
strategy.entry("buy",strategy.long)
inlong:=1
stop:=emaval-delta*atr
else
stop:=iff((nz(emaval)>(nz(stop[1])+delta*atr))and(inlong[1]),emaval-delta*atr,nz(stop[1]))
inlong:=nz(inlong[1])
if ((stopval<stop) and (inlong[1]))
strategy.close("buy")
inlong:=0
stop:=0
else
inlong:=0
stop:=0
plot(stop,color=green,linewidth=1)