均线震荡突破HODL策略

Author: ChaoZhang, Date: 2023-09-12 16:02:24
Tags:

本策略通过观察价格与长周期均线(如200日线)的关系,在价格突破均线时建仓做多,在价格跌破均线时平仓,属于长线震荡突破操作策略。该策略追求长期持有并减少交易频率。

策略原理:

  1. 计算一条长周期的移动平均线,典型参数为200日线。

  2. 当收盘价从下方突破该均线时,进行买入做多操作。

  3. 当收盘价从上方跌破该均线时,进行卖出平仓操作。

  4. 在做多状态则持续持有,直至价格跌破均线止损。

该策略的优势:

  1. 长线均线可有效识别价格中长线趋势。

  2. 突破交易方式可及时捕捉股价长线反转。

  3. 减少交易频率,有助于降低交易成本和风险。

该策略的风险:

  1. 长周期均线滞后问题较严重,入场时点不佳。

  2. 无法限制突破后的回调波动带来的亏损。

  3. 频繁出现小幅震荡突破可能带来连续小额损失。

总之,该HODL策略通过长周期均线震荡来判断持有时机,可减少交易频率。但在参数优化与止损设置方面仍有改进空间,以控制回撤并获得长期稳定收益。


/*backtest
start: 2022-09-05 00:00:00
end: 2023-04-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("HODLBot", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick=true, overlay=true)
    
//// Time limits 
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2029, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

maPeriod = input(200, "MA Period")
smoothing = input(defval="EMA", options=["EMA", "SMA"])

ma(smoothing, src, length) => 
    if smoothing == "EMA"
        ema(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        
//// Main ////

movingAverage = ma(smoothing, close, maPeriod)

plot(movingAverage, color=orange, style = line, linewidth = 4)
 
// very simple, price over MA? Buy and HODL 
if (testPeriod() and close > movingAverage)
    strategy.entry("HODL", strategy.long)

// Price under, close long
if (testPeriod() and close < movingAverage)
    strategy.close("HODL")


更多内容