2つの移動平均のクロスオーバー追跡戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-11 15:27:45
タグ:

この戦略は,トレードを追跡するための市場動向方向性を決定するために,移動平均 SMA と EMA の2つのグループ間のクロスオーバーを計算します.

格差は,格差値が格差値に等しい場合と,格差値が格差値に等しい場合と,格差値が格差値に等しい場合と,格差値が格差値に等しい場合と,格差値が格差値に等しい場合と等しい場合と等しい.格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合,格差値が格差値に等しい場合と等しい.

このダブルMA戦略の利点は,ダイナミックな2つのMAに基づいたシンプルで明確なルールである.EMAを使用すると,逆転を把握する際により敏感になります.しかし,レンジバインド市場でも簡単にウィップソーが発生します.

一般的に,ダブルMAクロスオーバートラッキング戦略は,モメントの方向で取引するためのトレンド市場に適しています. しかし,適切なパラメータ調整,厳格なストップロストおよびポジションサイジングは,この戦略の長期的安定性にとって重要です.


/*backtest
start: 2023-08-11 00:00:00
end: 2023-09-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// strategy("Moving Average Strategy of BiznesFilosof", shorttitle="MAS of BiznesFilosof", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.15, pyramiding=0)

//Period
startY = input(title="Start Year", defval = 2011)
startM = input(title="Start Month", defval = 1, minval = 1, maxval = 12)
startD = input(title="Start Day", defval = 1, minval = 1, maxval = 31)
finishY = input(title="Finish Year", defval = 2050)
finishM = input(title="Finish Month", defval = 12, minval = 1, maxval = 12)
finishD = input(title="Finish Day", defval = 31, minval = 1, maxval = 31)
//finish = input(2019, 02, 28, 00, 00)
timestart = timestamp(startY, startM, startD, 00, 00)
timefinish = timestamp(finishY, finishM, finishD, 23, 59)
window = time >= timestart and time <= timefinish ? true : false // Lenghth strategy

lma1 = input(title="Length MA1", defval = 21, minval=1)
exponential1 = input(false, title="exponential")
lma2 = input(title="Length MA2", defval = 1, minval=1)
exponential2 = input(false, title="exponential")
lbars = input(title="Length bars close", defval = 0, minval=0)

ma1 = exponential1 ? ema(close, lma1) : sma(close, lma1)
ma2 = exponential2 ? ema(close, lma2) : sma(close, lma2)

//source = close
source = ma2

//open
strategy.entry("LongEntryID", strategy.long, comment="LONG", when = crossover(ma2, ma1) and window)
strategy.entry("ShortEntryID", strategy.short, comment="SHORT", when = crossunder(ma2, ma1) and window)

if crossunder(source, ma1) and strategy.position_size > 0
    strategy.close_all()
if crossunder(ma2[lbars], ma1[lbars]) and strategy.position_size > 0 and lbars != 0
    strategy.close_all()    
if crossover(source, ma1) and strategy.position_size < 0
    strategy.close_all()
if crossover(ma2[lbars], ma1[lbars]) and strategy.position_size < 0 and lbars != 0
    strategy.close_all()      

src = close
src1 = high
src2 = low
maH = exponential1 ? ema(src1, lma1) : sma(src1, lma1)
maL = exponential1 ? ema(src2, lma1) : sma(src2, lma1)
maColor = src>maH ? green : src<maL ? red : blue

plot(ma1, title="MA1", color=maColor, linewidth=2, style=line)
plot(ma2, title="MA2", color=gray, linewidth=1, style=line)



もっと