双均线跟随策略是一种基于移动平均线的趋势跟随策略。它通过计算不同周期的移动平均线,判断行情趋势方向,以发出交易信号。当短期移动平均线上穿长期移动平均线时,做多;当短期移动平均线下穿长期移动平均线时,做空。该策略顺应趋势运行,以获利。
双均线跟随策略通过计算14周期和28周期的简单移动平均线(SMA)判断趋势方向。具体来说,它在每个周期末计算close价格的14周期SMA和28周期SMA。当14周期SMA上穿28周期SMA时,发出做多信号并打开长仓;当14周期SMA下穿28周期SMA时,发出做空信号并打开短仓。
进入仓位后,它会通过设置止盈和止损来控制风险。止盈和止损的点数通过输入的参数转换为价格。此外,它还在图表上绘制了止盈线、止损线和入场均价的参考线,便于直观判断仓位利润和风险。
双均线跟随策略具有以下优势:
双均线跟随策略也存在一些风险:
为控制上述风险,可以从以下方面进行优化:
双均线跟随策略可以从以下几个方面进行优化:
增加波动率指标,动态调整止损点。例如结合ATR指标,当市场波动加大时扩大止损点,避免过早止损。
优化移动平均线周期参数。可以测试更多组合,选择产生交易信号次数更合适的周期。
添加趋势滤波器。例如增设MACD、DMI等指标,避免在趋势末期出现的假信号,减少不必要的交易。
增加机器学习模型。使用LSTM、GRU等深度学习模型预测价格趋势,替代传统均线法则,可能获得更好的效果。
多品种交易。将策略套用到更多品种,利用非相关性降低整体回撤。
双均线跟随策略整体来说是一个简单实用的趋势策略。它顺应趋势而动,回撤风险较小,容易实现。我们可以通过调整周期参数、设置止损止盈、增加趋势判断指标等方式优化该策略,使其能够适应更多市场环境,获得更稳定的投资回报。
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © coinilandBot // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © adolgov // @description // //@version=4 strategy("coiniland copy trading platform", overlay=true) // random entry condition longCondition = crossover(sma(close, 14), sma(close, 28)) if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = crossunder(sma(close, 14), sma(close, 28)) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) moneyToSLPoints(money) => strategy.position_size !=0 ? (money / syminfo.pointvalue / abs(strategy.position_size)) / syminfo.mintick : na p = moneyToSLPoints(input(200, title = "Take Profit $$")) l = moneyToSLPoints(input(100, title = "Stop Loss $$")) strategy.exit("x", profit = p, loss = l) // debug plots for visualize SL & TP levels pointsToPrice(pp) => na(pp) ? na : strategy.position_avg_price + pp * sign(strategy.position_size) * syminfo.mintick pp = plot(pointsToPrice(p), style = plot.style_linebr ) lp = plot(pointsToPrice(-l), style = plot.style_linebr ) avg = plot( strategy.position_avg_price, style = plot.style_linebr ) fill(pp, avg, color = color.green) fill(avg, lp, color = color.red)