0bps

Strategy vault / Breakout

Ichimoku Cloud and Bollinger Bands Combination Trading Strategy

This strategy combines the Japanese Ichimoku Cloud indicator with the Bollinger Bands indicator to generate trading signals for long and short positions. The strategy can effectively determine market trends and make…

Author
ChaoZhang
Complexity
Intermediate · 90 lines
Parameters
12
Backtest bar
10m · intraday
Tested on
BTC/USDT · futures

IMG

Overview

This strategy combines the Japanese Ichimoku Cloud indicator with the Bollinger Bands indicator to generate trading signals for long and short positions. The strategy can effectively determine market trends and make judgments when the Bollinger Bands indicator issues long and short signals to avoid erroneous trades.

Strategy Principle

  1. The Ichimoku Cloud consists of the conversion line, base line, lagging line, and leading lines. The conversion line is a 9-day moving average and the base line is a 26-day moving average. When the conversion line is above the base line, it is a bullish signal, and vice versa for a bearish signal.

  2. The lagging line is the lagging movement of prices. When the lagging line is above, it indicates a bullish trend. Below indicates a bearish trend.

  3. The cloud bands consist of two leading lines, which are the 52-day moving average and the mean of the 26-day moving average. Prices above the cloud bands are considered bullish, while below is bearish.

  4. The Bollinger Bands consist of n-day moving averages and standard deviations, representing volatility bands for prices. A break above the upper band indicates bulls in control while a break below the lower band suggests bears are in control.

  5. This strategy forms trading rules based on the signals generated from the Ichimoku Cloud and the breakouts of the Bollinger Bands. For example, when the conversion line has an upward crossover over the base line, the lagging line is above, price breaks through the cloud bands, and also breaks through the upper band of the Bollinger Bands, it triggers a long entry signal.

Advantages of the Strategy

  1. The Ichimoku Cloud clearly judges the trend direction, with the conversion and lagging lines indicating short-term trends and the cloud bands indicating medium to long term trend direction.

  2. The Bollinger Bands determine whether prices are overextended, which can effectively filter out some unnecessary trades.

  3. The combination of indicators makes trading signals clearer and more reliable, avoiding trading risks.

Risks and Optimization

  1. Improper parameter settings for Bollinger Bands may lead to inaccurate trading signals. Parameters should be carefully set according to different underlying assets.

  2. The position size should be appropriately adjusted to control risks. Excessively large positions can lead to greater losses.

  3. Consider incorporating a stop loss strategy to stop losses when prices move beyond a certain range in an unfavorable direction.

  4. Consider testing more indicators combined with the Ichimoku Cloud to form more reliable trading strategies.

Conclusion

This strategy effectively takes advantage of the Ichimoku Cloud to determine trend direction and the Bollinger Bands indicator to filter signals. The strategy signals are relatively clear and reliable. Through parameter adjustment and optimization of stop loss, trading risks can be reduced and good returns can be obtained.

Parameters

NameDefaultWhat it controls
v_input_1trueShow Date Range
v_input_int_19Tenkan-Sen Bars
v_input_int_226Kijun-Sen Bars
v_input_int_352Senkou-Span B Bars
v_input_int_426Chikou-Span Offset
v_input_int_526Senkou-Span Offset
v_input_2trueLong Entry
v_input_3trueShort Entry
v_input_int_620length
v_input_4_close0Source: close | high | low | open | hl2 | hlc3 | hlcc4 | ohlc4
v_input_float_12StdDev
v_input_int_7falseOffset

Source Pine Script

/*backtest
start: 2023-12-19 00:00:00
end: 2023-12-26 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Coinrule

//@version=5
strategy("Ichimoku Cloud and Bollinger Bands",
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=30,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = true
notInTrade = strategy.position_size <= 0


//Ichimoku Cloud
//Inputs
ts_bars = input.int(9, minval=1, title="Tenkan-Sen Bars")
ks_bars = input.int(26, minval=1, title="Kijun-Sen Bars")
ssb_bars = input.int(52, minval=1, title="Senkou-Span B Bars")
cs_offset = input.int(26, minval=1, title="Chikou-Span Offset")
ss_offset = input.int(26, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

middle(len) => math.avg(ta.lowest(len), ta.highest(len))

// Components of Ichimoku Cloud
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = math.avg(tenkan, kijun)
senkouB = middle(ssb_bars)

// Plot Ichimoku Cloud
plot(tenkan, color=#0496ff, title="Tenkan-Sen")
plot(kijun, color=#991515, title="Kijun-Sen")
plot(close, offset=-cs_offset+1, color=#459915, title="Chikou-Span")
sa=plot(senkouA, offset=ss_offset-1, color=color.green, title="Senkou-Span A")
sb=plot(senkouB, offset=ss_offset-1, color=color.red, title="Senkou-Span B")
fill(sa, sb, color = senkouA > senkouB ? color.green : color.red, title="Cloud color")

ss_high = math.max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = math.min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Conditions
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = ta.mom(close, cs_offset-1) > 0
cs_cross_bear = ta.mom(close, cs_offset-1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low


//Bollinger Bands Indicator
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and ta.crossover(lower, close)
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and ta.crossover(close, lower)

strategy.entry('Long', strategy.long, when=bullish and long_entry and timePeriod)
strategy.close('Long', when=bearish and not short_entry)

strategy.entry('Short', strategy.short, when=bearish and short_entry and timePeriod)
strategy.close('Short', when=bullish and not long_entry)


//Works well on BTC 30m/1h (11.29%), ETH 2h (29.05%), MATIC 2h/30m (37.12%), AVAX 1h/2h (49.2%), SOL 45m (45.43%)

Published by ChaoZhang on the FMZ strategy square · last modified 2023-12-27. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.

Build this with AgenKit

A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Ichimoku-Cloud-and-Bollinger-Bands-Combination-Trading-Strategy.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. Get tests, backtest, risk controls and a paper-trading switch

Understand it first

Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.

Related specs

esc

Try , , or .

↑↓ move↵ open