
该策略是一种适用于5分钟时间框架的基于Ichimoku一目均衡表的快速突破scalping策略。策略充分利用Ichimoku的转换线、基准线以及前沿线A/B等元素来捕捉市场的短期动量。与传统Ichimoku策略不同,该策略进行了参数优化,使其更适合高频交易。
策略的主要思想是在转换线上穿或下穿基准线时进行做多或做空,并且价格要突破云图的两条前沿线,这样可以更准确地判断趋势方向。同时,策略定义了止损位和止盈位来控制风险。
该策略主要基于Ichimoku的转换线和基准线构建做多做空信号。转换线反应价格的短期动量变化,基准线反应中期趋势。
具体来说,当转换线上穿基准线时产生做多信号,此时要求价格高于云图的两条前沿线A和B,这样可以确保突破上行。相反,转换线下穿基准线时产生做空信号,要求价格低于云图的两条前沿线,确保突破下行。
另外,策略定义了两个参数percentStop和percentTP,分别表示止损比例和止盈比例。这两个数值可以根据交易者的风险偏好进行设置。止损和止盈价格会基于开仓平均价格计算得出。
当做多或做空信号被触发后,相应的止损单和止盈单也会下发。如果价格触及止盈或止损水平,则对应的头寸会平仓。
相比传统的Ichimoku策略,该策略进行了如下优化:
这些参数调整使得策略更适合5分钟这种高频交易时段,可以快速判断局部极值点附近的反转机会。同时结合云图判断长短期趋势增加了效率。
另外该策略直接内置了止损止盈逻辑,不需要交易者自己追加,可以方便管理风险,适合初学者。
该策略主要面临如下风险:
为控制风险可以考虑如下方法:
该策略还有如下的优化空间:
这些优化可以使策略在更多的市场环境下保持稳定的表现。
该Ichimoku scalping策略通过调整传统参数使之更适合高频操作。结合转换线,基准线以及云图的判断可以快速抓住短期趋势。内置的止盈止损机制也便于风险控制。
虽然该策略有一定的优势,但也存在反转策略的典型风险。后续可以从波动率,机器学习,事件驱动等多角度进行优化,使策略更加稳健适应复杂环境。
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Scalping Ichimoku Strategy", shorttitle="Scalp Ichimoku", overlay=true)
showBB = input(true, "Show Ichimoku Cloud")
showTrade = input(true, 'Show TP/SL')
conversionPeriods = input(9, "Conversion Line Periods")
basePeriods = input(26, "Base Line Periods")
spanBPeriods = input(52, "Span B Periods")
displacement = input(26, "Displacement")
conversionLine = (ta.highest(high, conversionPeriods) + ta.lowest(low, conversionPeriods)) / 2
baseLine = (ta.highest(high, basePeriods) + ta.lowest(low, basePeriods)) / 2
leadLine1 = (conversionLine + baseLine) / 2
leadLine2 = (ta.highest(high, spanBPeriods) + ta.lowest(low, spanBPeriods)) / 2
plot(showBB ? conversionLine : na, "Conversion Line", color=#2962FF)
plot(showBB ? baseLine : na, "Base Line", color=#B71C1C)
plot(showBB ? ta.lowest(low, 52) : na, "Lagging Span", color=#43A047, offset=-displacement)
p1 = plot(showBB ? leadLine1 : na, "Leading Span A", color=#A5D6A7, offset=displacement)
p2 = plot(showBB ? leadLine2 : na, "Leading Span B", color=#EF9A9A, offset=displacement)
fill(p1, p2, color=leadLine1 > leadLine2 ? color.new(color.green, 90) : color.new(color.red, 90))
// Define the shorter Stop Loss and Take Profit percentages for scalping
percentStop = input(0.5, "Stop Loss (%)")
percentTP = input(1.0, "Take Profit (%)")
// Define the entry conditions
longCondition = ta.crossover(conversionLine, baseLine) and close > leadLine1 and close > leadLine2
shortCondition = ta.crossunder(conversionLine, baseLine) and close < leadLine1 and close < leadLine2
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit or Stop Loss for Long", "Long", stop=strategy.position_avg_price * (1 - percentStop / 100), limit=strategy.position_avg_price * (1 + percentTP / 100))
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit or Stop Loss for Short", "Short", stop=strategy.position_avg_price * (1 + percentStop / 100), limit=strategy.position_avg_price * (1 - percentTP / 100))