AGAIG: ICHIMOKU SIMPLIFIED TRADING INDICATOR
Ichimoku look with Clouds/Lined Toggled off:
This is Ichimoku simplified. The Chart Lines and Cloud can be toggled on/off. The Time Frames can be adjusted from Custom thru Weekly. Ichimoku is characteristically used for Swing Trading. If you use shorter time frames you might want to shorten the tankan, kijun, and senkou b to something like 5, 13,26 or 5, 12, 24.
For daily and weekly charts this indicator is at its strongest. The classic 9/26/52 settings are doing exactly what Hosoda designed them to do — the cloud is wide enough to act as meaningful support/resistance, the TK cross carries real weight, and the Chikou confirmation filters out a lot of noise. When all three pillars align for the Ichi L or Ichi S bubble, you're getting a high-conviction signal on a timeframe where Ichimoku genuinely shines.
On 4H down to 15m with 7/22/44, you're still in reasonable territory but the signals will fire more frequently. Treat those as directional bias confirmations rather than standalone entries — meaning if the daily cloud is bullish and your 4H throws an Ichi L, that confluence is meaningful. A 4H signal against the daily trend is a fade candidate, not a trade.
The bar count label is underrated. Ichimoku trades tend to run — that's the whole point of the Kijun as a trailing anchor. If you're seeing LONG BARS: 3 you're early and still in the meat of the move. If you're at LONG BARS: 40+ on a daily chart, you should be thinking about where your exit is, not where your entry is. Remember Candles historically change direction on any time frame 6-10 candles?
The In Cloud / yellow label is a caution flag. Price inside the Kumo means the market is in compression or transition — signals fired inside the cloud are low quality and the indicator won't trigger a bubble there by design since price needs to be above or below cloud for a valid signal.
Biggest practical tip: use the white preset label to stay honest with yourself. It's easy to switch to a faster timeframe chasing action and forget what settings you're running. The label keeps you accountable.
AGAIG: Ichimoku Simplified Trading Indicator Link: http://tos.mx/!j6jWcypT
Code:
# ============================================================
# AGAIG: Ichimoku Simplified Trading Indicator by C.artType.AREA Ricks 6/28/26 with Claude AI #coding assist
# Version: 2.0
# Description: Simplified Ichimoku with Long/Short bubbles,
# bar count label, toggleable lines/cloud,
# and time frame preset selector.
# ============================================================
#--- TIME FRAME SELECTOR --------------------------------------
# Presets auto-set Tenkan/Kijun/SenkouB periods.
# Choose "Custom" to use your own manual values below.
input time_frame_preset = {default "Daily_9_26_52",
"Weekly_9_26_52",
"4H_7_22_44",
"1H_7_22_44",
"30m_7_22_44",
"15m_7_22_44",
"Crypto_10_30_60",
"Custom"};
#--- CUSTOM PERIOD OVERRIDES (active only when preset = Custom)
input custom_tenkan = 9;
input custom_kijun = 26;
input custom_senkou_b = 52;
#--- RESOLVE PERIODS FROM PRESET ------------------------------
def t_period =
if time_frame_preset == time_frame_preset."Daily_9_26_52" then 9
else if time_frame_preset == time_frame_preset."Weekly_9_26_52" then 9
else if time_frame_preset == time_frame_preset."4H_7_22_44" then 7
else if time_frame_preset == time_frame_preset."1H_7_22_44" then 7
else if time_frame_preset == time_frame_preset."30m_7_22_44" then 7
else if time_frame_preset == time_frame_preset."15m_7_22_44" then 7
else if time_frame_preset == time_frame_preset."Crypto_10_30_60" then 10
else custom_tenkan;
def k_period =
if time_frame_preset == time_frame_preset."Daily_9_26_52" then 26
else if time_frame_preset == time_frame_preset."Weekly_9_26_52" then 26
else if time_frame_preset == time_frame_preset."4H_7_22_44" then 22
else if time_frame_preset == time_frame_preset."1H_7_22_44" then 22
else if time_frame_preset == time_frame_preset."30m_7_22_44" then 22
else if time_frame_preset == time_frame_preset."15m_7_22_44" then 22
else if time_frame_preset == time_frame_preset."Crypto_10_30_60" then 30
else custom_kijun;
def sb_period =
if time_frame_preset == time_frame_preset."Daily_9_26_52" then 52
else if time_frame_preset == time_frame_preset."Weekly_9_26_52" then 52
else if time_frame_preset == time_frame_preset."4H_7_22_44" then 44
else if time_frame_preset == time_frame_preset."1H_7_22_44" then 44
else if time_frame_preset == time_frame_preset."30m_7_22_44" then 44
else if time_frame_preset == time_frame_preset."15m_7_22_44" then 44
else if time_frame_preset == time_frame_preset."Crypto_10_30_60" then 60
else custom_senkou_b;
# Cloud/Chikou displacement always matches Kijun period
def cloud_offset = k_period;
def chikou_offset = k_period;
#--- DISPLAY TOGGLES ------------------------------------------
input show_tenkan = yes;
input show_kijun = yes;
input show_chikou = yes;
input show_cloud = yes;
input show_signals = yes;
input show_bar_label = yes;
#--- ICHIMOKU CALCULATIONS ------------------------------------
# Tenkan-Sen (Conversion Line)
def tenkan_high = Highest(high, t_period);
def tenkan_low = Lowest(low, t_period);
plot Tenkan = (tenkan_high + tenkan_low) / 2;
Tenkan.SetDefaultColor(Color.CYAN);
Tenkan.SetLineWeight(1);
Tenkan.SetHiding(!show_tenkan);
# Kijun-Sen (Base Line)
def kijun_high = Highest(high, k_period);
def kijun_low = Lowest(low, k_period);
plot Kijun = (kijun_high + kijun_low) / 2;
Kijun.SetDefaultColor(Color.MAGENTA);
Kijun.SetLineWeight(2);
Kijun.SetHiding(!show_kijun);
# Senkou Span A (Leading Span A)
def span_a_raw = (Tenkan + Kijun) / 2;
plot SenkouA = span_a_raw[cloud_offset - 1];
SenkouA.SetDefaultColor(Color.GREEN);
SenkouA.SetLineWeight(1);
SenkouA.SetHiding(!show_cloud);
# Senkou Span B (Leading Span B)
def span_b_high = Highest(high, sb_period);
def span_b_low = Lowest(low, sb_period);
def span_b_raw = (span_b_high + span_b_low) / 2;
plot SenkouB = span_b_raw[cloud_offset - 1];
SenkouB.SetDefaultColor(Color.RED);
SenkouB.SetLineWeight(1);
SenkouB.SetHiding(!show_cloud);
# Ichimoku Cloud fill
AddCloud(if show_cloud then SenkouA else Double.NaN,
if show_cloud then SenkouB else Double.NaN,
Color.DARK_GREEN, Color.DARK_RED);
# Chikou Span (Lagging Span)
plot Chikou = close[chikou_offset];
Chikou.SetDefaultColor(Color.YELLOW);
Chikou.SetLineWeight(1);
Chikou.SetHiding(!show_chikou);
#--- SIGNAL LOGIC ---------------------------------------------
def cloud_top = Max(span_a_raw, span_b_raw);
def cloud_bottom = Min(span_a_raw, span_b_raw);
def cloud_bull = span_a_raw >= span_b_raw;
def tk_bull_cross = Tenkan crosses above Kijun;
def tk_bear_cross = Tenkan crosses below Kijun;
def price_above_cloud = close > cloud_top;
def price_below_cloud = close < cloud_bottom;
def chikou_above = close > close[chikou_offset];
def chikou_below = close < close[chikou_offset];
def long_signal = show_signals
and tk_bull_cross
and price_above_cloud
and chikou_above
and cloud_bull;
def short_signal = show_signals
and tk_bear_cross
and price_below_cloud
and chikou_below
and !cloud_bull;
#--- TRADE STATE (bar counter) --------------------------------
def in_long;
def in_short;
def long_entry_bar;
def short_entry_bar;
if long_signal {
in_long = 1;
in_short = 0;
long_entry_bar = BarNumber();
short_entry_bar = 0;
} else if short_signal {
in_long = 0;
in_short = 1;
long_entry_bar = 0;
short_entry_bar = BarNumber();
} else if in_long[1] and !short_signal {
in_long = 1;
in_short = 0;
long_entry_bar = long_entry_bar[1];
short_entry_bar = 0;
} else if in_short[1] and !long_signal {
in_long = 0;
in_short = 1;
long_entry_bar = 0;
short_entry_bar = short_entry_bar[1];
} else {
in_long = 0;
in_short = 0;
long_entry_bar = 0;
short_entry_bar = 0;
}
def bars_in_trade;
if in_long {
bars_in_trade = BarNumber() - long_entry_bar + 1;
} else if in_short {
bars_in_trade = BarNumber() - short_entry_bar + 1;
} else {
bars_in_trade = 0;
}
#--- BUBBLES --------------------------------------------------
AddChartBubble(
show_signals and long_signal,
low,
"Ichi_L",
Color.GREEN,
no
);
AddChartBubble(
show_signals and short_signal,
high,
"Ichi_S",
Color.RED,
yes
);
#--- LABELS ---------------------------------------------------
# Time frame preset label (always visible so you know active setting)
def tf_label_num =
if time_frame_preset == time_frame_preset."Daily_9_26_52" then 1
else if time_frame_preset == time_frame_preset."Weekly_9_26_52" then 2
else if time_frame_preset == time_frame_preset."4H_7_22_44" then 3
else if time_frame_preset == time_frame_preset."1H_7_22_44" then 4
else if time_frame_preset == time_frame_preset."30m_7_22_44" then 5
else if time_frame_preset == time_frame_preset."15m_7_22_44" then 6
else if time_frame_preset == time_frame_preset."Crypto_10_30_60" then 7
else 8;
AddLabel(yes,
if tf_label_num == 1 then "Ichi: Daily 9/26/52"
else if tf_label_num == 2 then "Ichi: Weekly 9/26/52"
else if tf_label_num == 3 then "Ichi: 4H 7/22/44"
else if tf_label_num == 4 then "Ichi: 1H 7/22/44"
else if tf_label_num == 5 then "Ichi: 30m 7/22/44"
else if tf_label_num == 6 then "Ichi: 15m 7/22/44"
else if tf_label_num == 7 then "Ichi: Crypto 10/30/60"
else "Ichi: Custom " + custom_tenkan + "/" + custom_kijun + "/" + custom_senkou_b,
Color.WHITE);
# Price position vs Ichimoku Cloud labels
def price_pos_above = close > cloud_top;
def price_pos_below = close < cloud_bottom;
def price_pos_in = close >= cloud_bottom and close <= cloud_top;
AddLabel(
show_bar_label and price_pos_above,
"Ichimoku Above Cloud" + (if in_long and bars_in_trade > 0 then " | LONG Bars: " + bars_in_trade else ""),
Color.GREEN
);
AddLabel(
show_bar_label and price_pos_in,
"Ichimoku In Cloud" + (if bars_in_trade > 0 then " | Bars: " + bars_in_trade else ""),
Color.YELLOW
);
AddLabel(
show_bar_label and price_pos_below,
"Ichimoku Below Cloud" + (if in_short and bars_in_trade > 0 then " | SHORT Bars: " + bars_in_trade else ""),
Color.RED
);
#--- BACKGROUND SHADING ---------------------------------------
AssignBackgroundColor(
if in_long then CreateColor(0, 30, 0)
else if in_short then CreateColor(30, 0, 0)
else Color.CURRENT
);
# ============================================================
# END OF SCRIPT
# ============================================================
Last edited by a moderator: