基于向量蜡烛图的通道突破与自定义ChoCH策略


创建日期: 2024-03-29 14:45:57 最后修改: 2024-03-29 14:45:57
复制: 33 点击次数: 319
1
关注
1107
关注者

基于向量蜡烛图的通道突破与自定义ChoCH策略

概述

该策略结合了向量蜡烛图(Vector Candles)的概念与传统的通道突破(Channel Breakout)和巧克力酱(Chocolate Sauce, ChoCH)模式识别,旨在捕捉市场的突破性行情。策略通过比较收盘价与前一根K线的高低点,并结合成交量放大的向量蜡烛图来确认信号,同时采用了一定数量的确认K线来过滤噪音。

策略原理

  1. 计算过去一定数量K线的平均成交量,并根据成交量放大倍数定义四种不同颜色(红、绿、蓝、紫)的向量蜡烛图。
  2. 当收盘价低于前一根K线低点,且为红色向量蜡烛图时,识别为红色ChoCH信号;当收盘价高于前一根K线高点,且为绿色向量蜡烛图时,识别为绿色BOS信号。
  3. 在一定数量的确认K线内,如果红色向量蜡烛图出现次数达到设定阈值,则确认红色ChoCH信号;如果绿色向量蜡烛图出现次数达到设定阈值,则确认绿色BOS信号。
  4. 当确认红色ChoCH信号时开仓做多,当确认绿色BOS信号时平仓。

策略优势

  1. 结合了向量蜡烛图与传统的通道突破和ChoCH模式,提高了信号的可靠性。
  2. 引入确认K线机制,有效过滤了噪音和假信号。
  3. 通过向量蜡烛图的颜色区分,使得信号更加直观和易于识别。
  4. 参数可调,灵活性较高,可根据不同市场环境和交易风格进行优化。

策略风险

  1. 在震荡市中,频繁的突破和回撤可能导致策略产生较多的假信号和亏损交易。
  2. 确认K线的数量设置不当可能导致信号滞后或过早入场。
  3. 单纯依赖于技术指标而忽视基本面因素,可能面临意外风险。
  4. 策略未设置止损,在行情急剧反转时可能承担较大损失。

策略优化方向

  1. 引入趋势确认指标,如移动平均线,在突破信号出现后确认趋势方向,提高信号质量。
  2. 对于震荡市,可以考虑引入范围交易策略,如在通道内部设置做多和做空的触发条件。
  3. 优化确认K线的数量,找到合适的平衡点,既能有效过滤噪音,又不会过于滞后。
  4. 设置合理的止损和止盈规则,控制单笔交易风险和总体回撤。
  5. 与其他技术指标或市场情绪指标相结合,提供更多的交易决策依据。

总结

该策略创新性地将向量蜡烛图与经典的通道突破和ChoCH模式相结合,通过颜色区分和确认K线机制,提高了信号的可靠性和识别度。策略优势在于规则明确、信号直观,同时具有一定的灵活性和可优化空间。然而,策略也存在一些局限性和风险,如在震荡市表现欠佳,对市场趋势把握不足,以及缺乏止损止盈管理等。未来可以从趋势确认、范围交易、参数优化、风险控制等方面对策略进行完善,以期获得更稳健的交易表现。

策略源码
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Custom ChoCH and BOS Strategy with Vector Candles", overlay=true)

// Input Parameters
length = input(10, title="Lookback Length for Volume")
volMultiplier = input(2.0, title="Volume Multiplier for Vector Candles")
confirmationCandles = input(3, title="Confirmation Candles")

// Calculate the average volume of the last 'length' candles
avgVol = sma(volume, length)

// Vector Candle Definitions
vectorCandleRed = (close < open) and (volume > avgVol * volMultiplier) ? 1.0 : 0.0
vectorCandleGreen = (close > open) and (volume > avgVol * volMultiplier) ? 1.0 : 0.0
vectorCandleBlue = (close < open) and (volume > avgVol * 1.5) ? 1.0 : 0.0 // 150% volume for blue
vectorCandlePurple = (close > open) and (volume > avgVol * 1.5) ? 1.0 : 0.0 // 150% volume for purple

// Detecting BOS and ChoCH
isRedChoCH = vectorCandleRed > 0 and (close < low[1]) // Red ChoCH
isGreenBOS = vectorCandleGreen > 0 and (close > high[1]) // Green BOS

// Confirmation Logic
redChoCHConfirmed = (sum(vectorCandleRed, confirmationCandles) >= 2) ? 1.0 : 0.0
greenBOSConfirmed = (sum(vectorCandleGreen, confirmationCandles) >= 2) ? 1.0 : 0.0

// Entry Conditions
buyCondition = redChoCHConfirmed > 0
sellCondition = greenBOSConfirmed > 0

// Strategy Execution
if (buyCondition)
    strategy.entry("Buy", strategy.long)
if (sellCondition)
    strategy.close("Buy")

// Plotting Vector Candles and Signals
plotshape(series=isRedChoCH, title="Red ChoCH Signal", location=location.belowbar, color=color.red, style=shape.circle, text="Red ChoCH")
plotshape(series=isGreenBOS, title="Green BOS Signal", location=location.abovebar, color=color.green, style=shape.circle, text="Green BOS")

// Plotting Vector Candles for Visualization
plotchar(vectorCandleRed > 0, title="Vector Candle Red", location=location.belowbar, color=color.red, char='R', text="Red")
plotchar(vectorCandleGreen > 0, title="Vector Candle Green", location=location.abovebar, color=color.green, char='G', text="Green")
plotchar(vectorCandleBlue > 0, title="Vector Candle Blue", location=location.belowbar, color=color.blue, char='B', text="Blue")
plotchar(vectorCandlePurple > 0, title="Vector Candle Purple", location=location.abovebar, color=color.purple, char='P', text="Purple")
更多内容