本策略名称为“双指数移动平均线RSI交易策略”。该策略利用双指数移动平均线(Double EMA)和相对强弱指数(RSI)作为主要交易指标,实现机械化交易。
该策略首先计算价格的双指数移动平均线(MA),然后基于MA计算RSI,再计算RSI的指数移动平均线(Smooth)。当RSI上穿其移动平均线时生成买入信号;当RSI下穿其移动平均线时生成卖出信号。 optionally,该策略还设定了每日最大交易次数、交易资金份额、交易时间段、止损止盈点数以及追踪止损点数等参数进行风险控制。
对策:
1. 适当缩短移动平均线周期,提高敏感性。
2. 结合其它指标如成交量过滤信号。
3. 动态调整交易资金比例。
4. 根据市场波动性和变化调整止损止盈幅度。
5. 适当放宽追踪止损点数。
本策略整体 mechanic 规则明确,可靠性较高,适用于中长线趋势品种。优化后可成为基础的趋势跟踪机械交易策略,风险可控,值得进一步评估实盘效果。
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title='[STRATEGY][RS]DemaRSI V0', shorttitle='D', overlay=false, initial_capital=100000, currency=currency.USD)
src = input(close)
ma_length = input(21)
rsi_length = input(4)
rsi_smooth = input(4)
ma = ema(ema(src, ma_length), ma_length)
marsi = rsi(ma, rsi_length)
smooth = ema(marsi, rsi_smooth)
plot(title='M', series=marsi, color=black)
plot(title='S', series=smooth, color=red)
hline(0)
hline(50)
hline(100)
max_order_per_day = input(6)
// strategy.risk.max_intraday_filled_orders(max_order_per_day)
trade_size_as_equity_factor = input(false)
trade_size = input(type=float, defval=10000.00) * (trade_size_as_equity_factor ? strategy.equity : 1)
take_profit_in_points = input(100000)
stop_loss_in_points = input(100000)
trail_in_points = input(150)
USE_SESSION = input(true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_SESSION ? true : not na(time('1', trade_session))
buy_entry = istradingsession and crossover(marsi, smooth)
sel_entry = istradingsession and crossunder(marsi, smooth)
strategy.entry('buy', long=true, qty=1, when=buy_entry)
strategy.entry('sel', long=false, qty=1, when=sel_entry)
strategy.exit('buy.Exit', from_entry='buy', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.exit('sel.Exit', from_entry='sel', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.close_all(when=not istradingsession)