该策略是基于一文云指标(Ichimoku Cloud)结合黄金分割率(Fibonacci Ratio)设计的一种趋势识别和交易策略。策略使用一文云指标中的转换线(Conversion Line)、基线(Base Line)、云(Kumo Cloud)以及延迟线(Lagging Span)来判断当前市场趋势,并结合1.618和0.618两个黄金分割率来设置止损位和识别震荡市场。此外,策略还引入了两条额外的中线来过滤假信号。
一文云指标由转换线、基线、云以及延迟线四个部分组成。其中,转换线和基线分别由不同周期的最高价和最低价的平均值计算得出,云由基线向前推移26个周期形成,延迟线则是收盘价向后推移26个周期。
该策略的多头开仓条件如下:
空头开仓条件则与多头相反。
止损位置的设置使用了1.618和0.618两个黄金分割率。多头止损位为云的上沿减去上下沿距离的1.618倍,空头止损位则相反。0.618线用于识别震荡市场,当云为绿色且0.618线低于1.618止损位时,认为市场处于震荡状态。
除了一文云指标外,该策略还引入了两条中线来过滤假信号。中线由不同周期的最高最低价平均值计算得出。
该策略创新性地将一文云指标和黄金分割率结合,形成了一套完整的趋势识别和交易系统。同时引入额外的中线过滤,可以在一定程度上提高信号质量。策略的优势在于能够较好地适应趋势和震荡两种市场状态,并通过动态止损控制风险。但策略也存在一些不足之处,如缺乏理论支撑,参数优化可能过拟合等。未来可以从引入更多指标、优化止损和仓位管理、机器学习参数优化等方面对策略进行完善。总的来说,该策略思路新颖,具有一定的参考价值,但在实际应用中还需要进一步的测试和优化。
/*backtest
start: 2023-03-13 00:00:00
end: 2024-03-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © manoharbauskar
//@version=5
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © manoharbauskar
//@version=5
strategy("Advanced_Ichimoku_Cloud_Strategy", overlay=true, margin_long=100, margin_short=100)
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpanPeriods = input.int(52, minval=1, title="Leading Span B Length")
pivotPeriods1 = input.int(17,minval = 1,title = "PPL1")
pivotPeriods2 = input.int(39,minval = 1,title = "PPL2")
displacement = input.int(26, minval=1, title="Lagging Span")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
midLine1 = donchian(pivotPeriods1)
midLine2 = donchian(pivotPeriods2)
midLine3 = donchian(laggingSpanPeriods)
leadLine1 = math.avg(conversionLine, baseLine, midLine1)
leadLine2 = math.avg(midLine2 , midLine3)
plot(conversionLine, color=#2962FF, title="Conversion Line")
plot(baseLine, color=#B71C1C, title="Base Line")
plot(close, offset = -displacement + 1, color=color.yellow, title="Lagging Span")
p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,
title="Leading Span A")
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
title="Leading Span B")
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Upper Line", display = display.none)
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Lower Line", display = display.none)
fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))
//stoploss calculating
mult1 = input.float(1.618, "Mult1")
mult2 = input.float(0.618, "Mult2")
stoploss1 = leadLine1 - (leadLine1 - leadLine2)*mult1
stoploss2 = leadLine1 - (leadLine1 - leadLine2)*mult2
plot(stoploss1,"Sl", color = color.fuchsia, linewidth = 2, style = plot.style_line, offset = displacement - 1)
plot(stoploss2,"S2", color = color.lime, linewidth = 2, style = plot.style_line, offset = displacement - 1)
longCondition = leadLine1 > leadLine2
if (longCondition)
strategy.entry("Buy", strategy.long)
shortCondition = leadLine1 < leadLine2
if (shortCondition)
strategy.entry("Sell", strategy.short)