この戦略は,トレードを追跡するための市場動向方向性を決定するために,移動平均 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)