该策略是一个基于双移动平均线的交易策略。它会根据用户设定的长短两根移动平均线进行金叉和死叉操作,即快速移动平均线上穿或下穿慢速移动平均线时发出交易信号。当快速MA上穿慢速MA时,做多;当快速MA下穿慢速MA时,做空。
该策略的核心逻辑基于双移动平均线的交叉原理。何为移动平均线,是将一定时间周期内的收盘价做算术平均而得到的平均价。移动平均线能够有效地滤除随机性噪音,反映更清晰的价格趋势。
该策略中短期MA代表价格的短期趋势,长期MA代表价格的长期趋势。短期MA比长期MA对价格变化更加敏感,能更快捕捉到价格反转。当短期MA上穿长期MA时,代表短期趋势转为上涨,做多;当短期MA下穿长期MA时,代表短期趋势转为空头,做空。
具体来说,策略通过ta.sma计算指定周期的简单移动平均线,以此作为交易信号。用户可自定义两个MA参数,即长线周期long_period和短线周期short_period。策略使用ta.crossover和ta.crossunder来判断MA的黄金交叉和死叉。当短MA上穿长MA,即金叉出现时,做多;当短MA下穿长MA,即死叉出现时,做空。
该策略具有以下几点优势:
该策略也存在一些风险:
针对上述风险,可通过调整MA参数、设置止损止盈、或结合其他指标进行优化。
该策略可从以下几个方面进行优化:
该策略整体来说非常适合作为量化交易的入门策略。它只需要简单的双MA参数即可运行,操作简单,容易理解,能直观反映市场反转时机。同时策略留有较大的优化空间,可根据实际需要调整参数或添增其他逻辑来进行改进。
/*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=5 strategy("Cross 2 Moving Average Strategy", shorttitle="2MA Cross", overlay=true) // User-defined input for moving averages long_period = input(20, title="Long Period") short_period = input(5, title="Short Period") type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"]) // Calculating moving averages long_ma = ta.sma(close, long_period) short_ma = ta.sma(close, short_period) // Plot moving averages plot(long_ma, title="Long Moving Average", color=color.red) plot(short_ma, title="Short Moving Average", color=color.green) // Strategy logic for crossing of moving averages longCondition = ta.crossover(short_ma, long_ma) shortCondition = ta.crossunder(short_ma, long_ma) // Entry orders if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Optional: Add stop loss and take profit stop_loss_perc = input(1, title="Stop Loss (%)") / 100 take_profit_perc = input(2, title="Take Profit (%)") / 100 strategy.exit("Exit Long", from_entry="Long", stop=close*(1-stop_loss_perc), limit=close*(1+take_profit_perc)) strategy.exit("Exit Short", from_entry="Short", stop=close*(1+stop_loss_perc), limit=close*(1-take_profit_perc))