####概述 该策略基于HalfTrend指标,通过判断多空趋势来识别买入信号。当HalfTrend指标由空转多时,在之前空头趋势的HalfTrend值位置下单止损限价买入。该策略利用AmplitudeTrend指标(ATR)来动态调整趋势判断的幅度参数。
####策略原理 1. 计算HalfTrend指标值,需要设置回看周期length和幅度参数amplitude。 2. 比较当前收盘价与上一周期HalfTrend指标值,判断多空趋势。 - 当收盘价上穿HalfTrend指标值amplitude点时,趋势转多。 - 当收盘价下穿HalfTrend指标值amplitude点时,趋势转空。 3. 记录趋势转空时的HalfTrend指标值,作为未来潜在买入位置。 4. 当HalfTrend指标再次由空转多时,在步骤3记录的位置下达止损限价买入单。
####策略优势 1. 基于完整的多空趋势来判断投资方向,最大程度地适应当前行情。 2. 使用limit order下单,可以在预设位置买入以获得更优的成交价。 3. 买入位置基于之前空头HalfTrend趋势确定,保证了买入点的低位安全性。 4. 使用amplitude参数来控制区分多空趋势所需要的最小幅度,可以有效过滤噪音信号。
####策略风险 1. 趋势转向判断依赖amplitude参数,不当的参数值可能导致过早或过晚下单。 2. limit order可能因为价格波动而无法成交,错失上涨行情。 3. 止损设置位置过于靠近买入位置,可能承担较大亏损。
####策略优化方向 1. 对amplitude参数进行优化,寻找最佳的趋势判断幅度。可以使用AmplitudeTrend指标(ATR)动态调整幅度。 2. 在止损买入同时设置take profit卖出,及时锁定利润。 3. 止损位置可以设置得更低一些,给予更大的亏损空间,同时也提高了获利空间。 4. 可以加入移动止损逻辑,在价格向有利方向移动时提升止损位,减小风险。
####总结 HalfTrend多空趋势追踪止损限价买入策略通过判断HalfTrend指标的多空趋势变化来决定买入时机,利用之前空头趋势的低点作为买入位置,以求在相对安全的低位入场做多。该策略包含趋势判断、限价单、止损单等常用策略要素,可以进一步优化以提高风险收益比。
/*backtest start: 2023-05-11 00:00:00 end: 2024-05-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("HalfTrend Stop-Limit Buy", overlay=true) // HalfTrend indicator parameters length = 1 amplitude = 2.0 // HalfTrend calculation float ph = na float pl = na var float dir = na var float trend = na if na(trend) trend := close ph := high pl := low dir := na else if high > ph ph := high if low < pl pl := low if close > trend and na(dir) dir := 1 trend := close ph := high pl := low if close < trend and na(dir) dir := -1 trend := close ph := high pl := low if dir == 1 and close < trend - amplitude dir := -1 trend := close ph := high pl := low if dir == -1 and close > trend + amplitude dir := 1 trend := close ph := high pl := low // Buy signal based on HalfTrend buySignal = dir == 1 and ta.valuewhen(dir == -1, trend, 0) // Plot HalfTrend plot(dir == 1 ? trend : na, color=color.blue, linewidth=2, title="HalfTrend Bullish") plot(dir == -1 ? trend : na, color=color.red, linewidth=2, title="HalfTrend Bearish") // Place a stop-limit buy order if (buySignal) stopPrice = ta.valuewhen(dir == -1, trend, 0) strategy.entry("HalfTrend Buy", strategy.long, stop=stopPrice, comment="HalfTrend Buy")