底部猎人策略是一种用于数字货币的短线交易策略。该策略通过识别下跌趋势中的底部,确定合适的买入时机。
该策略结合多种技术指标来识别底部,具体来说,使用MACD指标判断底部反转信号,使用RSI指标判断超卖状态,使用布林带判断价格是否低于下轨。满足全部条件时产生买入信号。
首先,该策略使用MACD指标的故意发散来判断底部。所谓故意发散是指价格创新低而MACD指标没有创新低。这种情况代表着成交量的减弱,通常预示着即将出现的趋势反转。
其次,策略要求RSI指标低于31.1。RSI低于30代表着超卖状态,这为买入提供了机会。
最后,该策略要求收盘价低于布林带的中轨。这表示价格已经低于常态范围,从而也为买入提供了更好的机会。
当上述全部条件同时满足时,该策略产生买入信号,建立好仓。
底部猎人策略具有以下优势:
该策略也存在一些风险:
针对上述风险,可以通过实时跟踪止损,调整参数区间等方式进行优化。
该策略可以从以下几个方向进行优化:
底部猎人策略通过捕捉关键底部来进行买入,以期获得超额利润。该策略判断底部的依据稳健,同时结合多种过滤条件来避免假信号。如果参数调整得当、止损控制到位,该策略可以在数字货币市场的短线交易中获得不错的效果。
/*backtest start: 2023-01-30 00:00:00 end: 2024-02-05 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("MACD Divergence Strategy", shorttitle="Strategy: MACD Dive", overlay=true) // MACD设置 fastLength = input.int(12, "Fast Length") slowLength = input.int(26, "Slow Length") signalSmoothing = input.int(9, "Signal Smoothing") [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) // 计算99日EMA均线 ema99 = ta.ema(close, 99) // 计算RSI rsiLength = input.int(14, title="RSI Length") rsi = ta.rsi(close, rsiLength) // 计算布林带中轨 length = input.int(20, "BB Length") src = input(close, "Source") mult = input.float(2.0, "BB StdDev") basis = ta.sma(src, length) // 买入筛选条件 priceLow = ta.lowest(low[1], 60) macdLow = ta.lowest(macdLine[1], 60) divergence = low < priceLow and macdLine > macdLow allHighsBelowEma99 = true for i = 0 to 14 if high[i] > ema99 allHighsBelowEma99 := false rsiBelow = rsi < 31.1 priceDifference = (high - low) / low * 100 buySignal1 = divergence and allHighsBelowEma99 and rsiBelow buySignal2 = high < ema99 and priceDifference >= 3 and close < open and high < basis buySignal3 = buySignal1 or buySignal2 // 定义一个变量来存储买入时的价格 var float buyPrice = na // 买入逻辑 if buySignal3 buyPrice := close // 存储买入时的价格 strategy.entry("Buy", strategy.long) // 止盈和止损条件 longTakeProfit = buyPrice * 1.1 // 止盈设为买入价格的1.2倍 longStopLoss = buyPrice * 0.98// 止损设为买入价格的0.99倍 // 应用止盈和止损 strategy.exit("Exit", "Buy", limit=longTakeProfit, stop=longStopLoss) // 绘制买入信号 plotshape(series=buySignal3, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)