该策略基于MBO指标实现了一个简单的趋势跟随交易系统。MBO指标类似于MACD指标,是将快速移动平均线和慢速移动平均线的差值作为交易信号。当快速移动平均线上穿慢速移动平均线时做多,下穿时做空。该策略通过跟随MBO指标的趋势来进行交易。
该策略主要是基于MBO指标的构造来产生交易信号的。MBO指标是由Bryan Strain和Mark Whitley开发的,指标计算方法是:
MBO = 25日简单移动平均线 - 200日简单移动平均线
然后对MBO指数加速线进行平滑,计算出MBO的18日简单移动平均线SMAMBO。
当MBO上穿SMAMBO时,做多;当MBO下穿SMAMBO时,做空。
从代码逻辑上看,主要步骤是:
计算25日和200日简单移动平均线,赋值给xFastAvg和xSlowAvg
计算MBO的值:MFBO = xFastAvg - xSlowAvg
计算MBO的18日简单移动平均线SMAMBO
比较MBO和SMAMBO,产生交易信号pos
如果MBO > SMAMBO, pos = 1,做多
如果MBO < SMAMBO, pos = -1,做空
根据pos的值判断入场和出场
该策略通过跟随MBO指标表现出的趋势走势来进行交易,属于典型的趋势跟随策略。
该策略具有以下优势:
通过跟随中长线趋势,能够减少交易频率,避免无谓的止损。
MBO指标参数可调,可以通过调整参数来适应不同的市场环境。
策略逻辑简单清晰,容易理解实现,适合初学者学习。
可视化指标清楚显示趋势的变化,支持策略的决策。
可扩展性强,可在该策略基础上进行优化,加入止损机制等。
该策略也存在一些风险:
跟随趋势交易容易垂直上涨下跌,可能会带来较大亏损。
在趋势反转时无法及时止损退出,可能扩大损失。
参数设置不当可能导致交易频率过高或信号不准确。
容易产生假突破信号,需要加入过滤机制。
该策略本身没有设置止损点,存在无限亏损的风险。
对应解决方法:
合理设置移动平均线参数,不能太敏感。
加入趋势反转的判断指标,发现反转时及时止损。
优化参数设置,调整至产生准确信号。
加入过滤机制,避免假突破。
设置止损点,控制单笔亏损。
该策略可以从以下方面进行优化:
加入趋势反转信号指标,在趋势反转时及时止损。
优化移动平均线参数设置,平衡交易频率和信号质量。
加入ATR止损,设置合理的止损点,控制单笔亏损。
结合其他指标过滤假突破信号。
加入仓位管理,根据趋势强弱调整仓位。
可以考虑在突破前形成三推结构后才入场。
建立参数优化机制,根据不同市场调整参数。
该策略通过简单的MBO指标捕捉趋势,进行趋势跟随交易。优点是简单实用,可视化指标清晰,适合初学者学习。但也存在只追涨杀跌、无法止损的风险。我们可以通过加入反转信号、优化参数设置、止损机制等来优化策略,使之成为一个稳定可靠的趋势跟随策略。总体来说,该策略作为入门趋势跟随策略非常不错,通过优化可以成为日常交易的有力工具。
/*backtest start: 2023-09-08 00:00:00 end: 2023-10-08 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 16/08/2018 // MBO indicator is the third component of TFS trading system. This indicator // was developed by Bryan Strain and Mark Whitley. // The idea of MBO is similar to moving average convergence/divergence (MACD) // indicator. It is calculated by subtracting the 200-day moving average from // the 25-day moving average. // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="TFS: MBO Backtest", shorttitle="TFS: MBO indicator") Fastavg = input(25, minval=1) Slowavg = input(200, minval=1) Length = input(18, minval=1) reverse = input(false, title="Trade reverse") hline(0, color=blue, linestyle=line) xFastAvg = sma(close, Fastavg) xSlowAvg = sma(close, Slowavg) nMBO = xFastAvg - xSlowAvg xSMAMBO = sma(nMBO, Length) pos = iff(nMBO > xSMAMBO, 1, iff(nMBO < xSMAMBO, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nMBO, color=red, style = histogram, title="TFS: MBO indicator") plot(xSMAMBO, color=blue, title="SMA")