枢轴反转K线策略


创建日期: 2023-12-15 10:17:49 最后修改: 2023-12-15 10:17:49
复制: 0 点击次数: 597
avatar of ChaoZhang ChaoZhang
1
关注
1621
关注者

枢轴反转K线策略

概述

枢轴反转K线策略是一种根据枢轴点进行交易信号生成的量化交易策略。该策略通过计算左侧一定数量的K线的最高价和最低价,来确定枢轴区域。当价格突破枢轴区域时,进行相应的做多或做空操作。

策略原理

该策略的核心逻辑是计算左侧4根K线的最高价作为做多枢轴,计算左侧4根K线的最低价作为做空枢轴。右侧2根K线用于确定价格已经突破枢轴区域。当价格超过做多枢轴时,做多;当价格低于做空枢轴时,做空。

具体来说,策略首先计算左侧4根K线的最高价swh,作为做多枢轴。同时计算左侧4根K线的最低价swl,作为做空枢轴。在枢轴确定后,通过右侧2根K线来判断价格是否突破枢轴。如果价格超过swh,则做多;如果价格低于swl,则做空。

做多和做空信号发出后,会下单做多或做空,并设置止损位于枢轴区域外,以控制风险。

优势分析

枢轴反转策略最大的优势在于能够抓住价格反转的时机。当价格长时间处于横盘整理阶段时,常常会在枢轴区域附近震荡。这时使用枢轴突破策略,能够抓住价格反转的最佳时机,从而获利。

相比其他反转策略,枢轴反转策略具有操作简单、风险可控等优点。左右K线数量的设置可以自由调整,从而适应不同品种和市场环境。此外,止损设置在枢轴区域之外,可以有效控制风险。

风险分析

枢轴反转策略的主要风险在于枢轴区域判断错误。如果左侧K线无法确定清晰的枢轴区域,右侧K线的突破可能是错误信号。这时就很可能造成亏损。

此外,行情突变也会带来风险。尽管设置了止损,但如果行情发生断层、跳过等异常情况,止损可能无法起到很好的保护作用。

要降低风险,可以考虑采用同时做多做空的策略,即价格上涨时做多,下跌时做空,从而对冲部分风险。另外也可以结合其他指标判断行情,避免在可能的反转点错过交易机会。

优化方向

该策略可以从以下几个方面进行优化:

  1. 优化左右K线数量设置。可以测试更多的左右K线组合,找到最佳的参数。

  2. 增加指标过滤。可以在入场时增加像MA、MACD等指标的过滤,避免在不确定的情况下入场。

  3. 优化止损位设置。可以根据不同品种特点,选择更优的止损位置。

  4. 增加追踪止损。入场后可以采用追踪止损来锁定利润,而不是简单的止损退出。

总结

枢轴反转策略通过抓住价格在枢轴区域的反转时机进行交易。它有操作简单、风险可控等优点。主要风险在于识别枢轴区域错误和行情突变。通过参数优化、增加过滤器、改进止损策略等方法可以降低风险并提高策略稳定性。总体来说,枢轴反转策略非常适合捕捉盘整行情中的短线交易机会。

策略源码
/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Pivot Reversal Strategy", overlay=true)

leftBars = input(4)
rightBars = input(2)

swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)

swh_cond = not na(swh)

hprice = 0.0
hprice := swh_cond ? swh : hprice[1]

le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if (le)
    strategy.entry("Long", strategy.long, comment="Long", stop=hprice + syminfo.mintick)

swl_cond = not na(swl)

lprice = 0.0
lprice := swl_cond ? swl : lprice[1]


se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if (se)
    strategy.entry("Short", strategy.short, comment="Short", stop=lprice - syminfo.mintick)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)