本文将详细分析一种基于200日移动平均线与价格距离的趋势追踪型策略,称为“坚果离线趋势追踪策略”。该策略通过追踪价格与200日移动平均线的距离,在超过设定阈值时建立部位,达到获利目标后平仓离场。
一、策略原理
该策略的核心指标是200日指数移动平均线(200 EMA)。策略判断价格是否偏离200日线达到设定百分比后,在最近一根K线为阳线(多头入场)或阴线(空头入场)时建立部位。多头入场条件为价格低于200日线且价格与200日线距离百分比大于阈值,并在最近一根K线收阳线时入场做多;空头入场条件为价格高于200日线且价格与200日线距离百分比大于阈值,并在最近一根K线收阴线时入场做空。
出场条件为价格回归到200日线时或达到止盈目标(入场价1.5倍)时平仓离场。设定止损为期权申报价值的20%。
详细的入场、出场条件如下:
多头入场: 收盘价<200日线 并且 收盘价与200日线距离百分比≥阈值 并且 最近一根K线收阳线
空头入场: 收盘价>200日线 并且 收盘价与200日线距离百分比≥阈值 并且 最近一根K线收阴线
多头出场: 收盘价≥200日线 或 达到止盈目标 或 交易日结束
空头出场: 收盘价<=200日线 或 达到止盈目标 或 交易日结束
止损条件为期权申报价值的20%。
二、策略优势
该策略主要具有以下优势:
三、策略风险
该策略主要存在以下风险:
为降低上述风险,可以优化如下几个方面:
四、策略优化方向
该策略主要可从以下几个方面进行优化:
五、总结
本文详细分析了基于价格与200日移动平均线距离的趋势追踪策略的原理、优势、风险与优化方向。该策略通过追踪价格与长期均线的距离来判断中长线趋势方向,在价格达到超过均线一定阈值时建仓追踪趋势,退出条件为止损或止盈触发。该策略能很好地跟踪中长期价格趋势,但也存在一定的参数优化空间。未来可从多个方面继续完善该策略,使之能够在更多不同行情下获得稳定收益。
/*backtest start: 2024-02-22 00:00:00 end: 2024-02-24 06:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Intraday Price Away from 200 EMA Strategy", overlay=true) // Define inputs emaPeriod = input(200, title="EMA Period") thresholdPercent = input(0.75, title="Threshold Percent", minval=0) // Define the threshold percentage // Calculate 200 EMA ema = ema(close, emaPeriod) // Calculate distance from 200 EMA as a percentage distance_percent = ((close - ema) / ema) * 100 // Track average entry price var float avgEntryPrice = na // Buy conditions buy_condition = close < ema and abs(distance_percent) >= thresholdPercent and close[1] < close[2] // Exit conditions for buy exit_buy_condition = close >= ema or time_close(timeframe.period) or (avgEntryPrice * 1.5) <= close // Sell conditions sell_condition = close > ema and abs(distance_percent) >= thresholdPercent and close[1] > close[2] // Exit conditions for sell exit_sell_condition = close <= ema or time_close(timeframe.period) or (avgEntryPrice * 1.5) >= close // Execute buy and sell orders only if there are no open trades if strategy.opentrades == 0 strategy.entry("Buy", strategy.long, when=buy_condition) strategy.entry("Sell", strategy.short, when=sell_condition) // Update average entry price for buy condition if buy_condition avgEntryPrice := close // Update average entry price for sell condition if sell_condition avgEntryPrice := close // Close buy position if exit condition is met strategy.close("Buy", when=exit_buy_condition) // Close sell position if exit condition is met strategy.close("Sell", when=exit_sell_condition) // Plot 200 EMA plot(ema, color=color.blue, linewidth=2) // Plot buy and sell signals plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)