该策略是一个结合了MACD指标和Supertrend指标的双重验证趋势跟踪交易系统。策略通过比较MACD线与信号线的交叉情况,同时结合Supertrend指标的趋势方向来确定入场时机,并设置了固定百分比的止损和止盈水平以控制风险。这种双重验证机制提高了交易信号的可靠性,有效降低了虚假信号的干扰。
策略的核心逻辑基于以下几个关键要素: 1. Supertrend指标:使用20周期的ATR和2倍因子计算趋势线,用于判断当前市场趋势方向。 2. MACD指标:采用经典的12/26/9参数设置,通过快线与慢线的交叉生成交易信号。 3. 入场条件:只有当MACD快线向上穿越慢线(买入信号)且Supertrend方向为上升趋势(direction==1)时才会触发买入操作。 4. 风险管理:对每笔交易设置0.5%的止损和99.99%的止盈水平,以保护资金安全并锁定利润。
该策略通过结合MACD和Supertrend指标的优势,构建了一个相对可靠的趋势跟踪交易系统。46%的准确率和46%的收益率表明策略具有一定的盈利能力。通过建议的优化方向,特别是动态止损和市场环境过滤的引入,策略的稳定性和适应性有望得到进一步提升。策略适合日内和期货交易,但使用者需要注意市场环境的适配性,并根据实际情况调整参数设置。
/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('MANTHAN BHRAMASTRA', overlay=true)
// Supertrend function
f_supertrend(_period, _multiplier) =>
atr = ta.sma(ta.tr, _period)
upTrend = hl2 - _multiplier * atr
downTrend = hl2 + _multiplier * atr
var float _supertrend = na
var int _trendDirection = na
_supertrend := na(_supertrend[1]) ? hl2 : close[1] > _supertrend[1] ? math.max(upTrend, _supertrend[1]) : math.min(downTrend, _supertrend[1])
_trendDirection := close > _supertrend ? 1 : -1
[_supertrend, _trendDirection]
// Supertrend Settings
factor = input(2, title='Supertrend Factor')
atrLength = input(20, title='Supertrend ATR Length')
// Calculate Supertrend
[supertrendValue, direction] = f_supertrend(atrLength, factor)
// MACD Settings
fastLength = input(12, title='MACD Fast Length')
slowLength = input(26, title='MACD Slow Length')
signalSmoothing = input(9, title='MACD Signal Smoothing')
// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
// Generate Buy signals
buySignal = ta.crossover(macdLine, signalLine) and direction == 1
// Plot Buy signals
// Calculate stop loss and take profit levels (0.25% of the current price)
longStopLoss = close * 0.9950
longTakeProfit = close * 1.9999
// Execute Buy orders with Target and Stop Loss
if buySignal
strategy.entry('Buy', strategy.long)
strategy.exit('Sell', 'Buy', stop=longStopLoss, limit=longTakeProfit)