底部猎人策略是一种用于数字货币的短线交易策略。该策略通过识别下跌趋势中的底部,确定合适的买入时机。
该策略结合多种技术指标来识别底部,具体来说,使用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)