0bps

Strategy vault / Breakout

Ichimoku Kinko Hyo Breakout Strategy

The strategy is named "Ichimoku Kinko Hyo Indicator Based Breakout Strategy". It utilizes the Tenkan-Sen, Kijun-Sen lines, Senkou Span lines and Kumo cloud from the Ichimoku Kinko Hyo indicator to determine the trend…

Author
ChaoZhang
Complexity
Intermediate · 58 lines
Parameters
7
Backtest bar
1d · swing
Tested on
BTC/USDT · futures

IMG

I. Strategy Overview

The strategy is named "Ichimoku Kinko Hyo Indicator Based Breakout Strategy". It utilizes the Tenkan-Sen, Kijun-Sen lines, Senkou Span lines and Kumo cloud from the Ichimoku Kinko Hyo indicator to determine the trend direction and implement breakout entry and exit signals.

II. Strategy Details

  1. Calculate the components of the Ichimoku Kinko Hyo indicator:

    • Tenkan-Sen: middle of highest and lowest prices
    • Kijun-Sen: middle of highest and lowest prices
    • Senkou Span A: middle of Tenkan-Sen and Kijun-Sen
    • Senkou Span B: middle of highest and lowest prices
    • Chikou Span: lagging span
  2. Determine long signal:

    • When Tenkan-Sen cross above Kijun-Sen;
    • And close price break above the Kumo cloud;
    • And Chikou Span break above the Kumo cloud.
  3. Determine short signal:

    • When Tenkan-Sen cross below Kijun-Sen;
    • And close price break below the Kumo cloud;
    • And Chikou Span break below the Kumo cloud.

III. Advantage Analysis

  1. Ichimoku Kinko Hyo is accurate in determining trends.
  2. Chikou Span avoids false breakouts.
  3. Allow long and short trading in both uptrend and downtrend.
  4. Customizable parameters for different periods.

IV. Risk Analysis

  1. Frequent losing trades during market consolidation.
  2. Missing best entry points due to multiple criteria.
  3. High turnover rate increases transaction costs.

Solutions

  1. Adjust parameters to avoid overtrading.
  2. Combine with other indicators to confirm signals.
  3. Extend holding period to decrease turnover.

V. Optimization Directions

  1. Add moving averages to confirm trading signals.
  2. Implement stop loss to limit downside risk.
  3. Optimize parameters to improve robustness.

VI. Strategy Summary

The strategy determines trend direction accurately using Ichimoku Kinko Hyo indicators and takes breakout signals as entry and exit points, allowing long and short trading. Compared with single indicator strategies, it has higher accuracy and avoids many false signals. There is also some lagging in capturing best entry price. In conclusion, the strategy is quite effective in determining trends and the risks are manageable. Further optimizations and walk-forward testing are recommended.

Parameters

NameDefaultWhat it controls
v_input_int_17Tenkan-Sen Bars
v_input_int_214Kijun-Sen Bars
v_input_int_328Senkou-Span B Bars
v_input_int_414Chikou-Span Offset
v_input_int_514Senkou-Span Offset
v_input_1trueLong Entry
v_input_2falseShort Entry

Source Pine Script

/*backtest
start: 2023-01-09 00:00:00
end: 2024-01-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Ichimoku Kinko Hyo: Basic Strategy', overlay=true)

//Inputs
ts_bars = input.int(7, minval=1, title='Tenkan-Sen Bars')
ks_bars = input.int(14, minval=1, title='Kijun-Sen Bars')
ssb_bars = input.int(28, minval=1, title='Senkou-Span B Bars')
cs_offset = input.int(14, minval=1, title='Chikou-Span Offset')
ss_offset = input.int(14, minval=1, title='Senkou-Span Offset')
long_entry = input(true, title='Long Entry')
short_entry = input(false, title='Short Entry')

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

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

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

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 Signals
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

bullish = tk_cross_bull and cs_cross_bull and price_above_kumo
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo

strategy.entry('Long', strategy.long, when=bullish and long_entry)
strategy.entry('Short', strategy.short, when=bearish and short_entry)

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

Published by ChaoZhang on the FMZ strategy square · last modified 2024-01-16. 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-Kinko-Hyo-Breakout-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