AGAIG Ichimoku Simplified Trading Indicator For ThinkOrSwim

csricksdds

Trader Educator
VIP
AGAIG: ICHIMOKU SIMPLIFIED TRADING INDICATOR​

NceDCvF.png


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:

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
1045 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top