Chiến lược này tính toán giao thoa giữa hai nhóm đường trung bình động SMA và EMA để xác định hướng xu hướng thị trường cho các giao dịch theo dõi.
Cụ thể, nó sử dụng một cặp trung bình di chuyển nhanh và một cặp di chuyển chậm. Nó đi dài khi đường nhanh vượt qua đường chậm, và đi ngắn trên đường chéo xuống. Sự ra đi xảy ra khi giá giảm xuống dưới đường chậm hoặc tăng lên trên đường nhanh.
Lợi thế của chiến lược MA kép này là các quy tắc đơn giản và rõ ràng dựa trên hai MA năng động. Sử dụng EMA cung cấp độ nhạy hơn trong việc nắm bắt sự đảo ngược.
Nói chung, chiến lược theo dõi chéo MA kép phù hợp với thị trường xu hướng để giao dịch theo hướng động lực.
/*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)