input turning_period = 9;
input standard_period = 26;
#Ichimoku for displayed period
plot Turning = (Highest(high, turning_period) + Lowest(low, turning_period)) / 2;
plot Standard = (Highest(high, standard_period) + Lowest(low, standard_period)) / 2;
def "Span A" = (Turning[standard_period] + Standard[standard_period]) / 2;
def "Span B" = (Highest(high[standard_period], 2 * standard_period) + Lowest(low[standard_period], 2 * standard_period)) / 2;
plot Lagging = close[-standard_period];
DefineGlobalColor("Turning", Color.GREEN);
DefineGlobalColor("Standard", Color.RED);
DefineGlobalColor("Lagging", CreateColor(102, 0, 102));
Turning.SetDefaultColor(GlobalColor("Turning"));
Standard.SetDefaultColor(GlobalColor("Standard"));
Lagging.SetLineWeight(2);
Lagging.SetDefaultColor(GlobalColor("Lagging"));
Lagging.SetLineWeight(3);
DefineGlobalColor("Bullish", Color.GREEN);
DefineGlobalColor("Bearish", Color.RED);
AddCloud("Span A", "Span B", globalColor("Bullish"), globalColor("Bearish"));
# WEEK LABELS
def IC_week_close;
def IC_week_Turning;
def IC_week_Standard;
def IC_week_Lagging;
def IC_week_SpanA;
def IC_week_SpanB;
def IC_week_AboveCloud;
def IC_week_InCloud;
def IC_week_BelowCloud;
def IC_week_AggregationPeriod;
if GetAggregationPeriod() <= AggregationPeriod.WEEK {
IC_week_AggregationPeriod = AggregationPeriod.WEEK;
IC_week_close = close(period = IC_week_AggregationPeriod);
IC_week_Turning = (Highest(high(period = IC_week_AggregationPeriod), turning_period) + Lowest(low(period = IC_week_AggregationPeriod), turning_period)) / 2;
IC_week_Standard = (Highest(high(period = IC_week_AggregationPeriod), standard_period) + Lowest(low(period = IC_week_AggregationPeriod), standard_period)) / 2;
IC_week_SpanA = (IC_week_Turning[standard_period] + IC_week_Standard[standard_period]) / 2;
IC_week_SpanB = (Highest(high[standard_period], 2 * standard_period) + Lowest(low[standard_period], 2 * standard_period)) / 2;
IC_week_Lagging = close[-standard_period];
IC_week_InCloud = if ((IC_week_SpanA > IC_week_close) and (IC_week_close > IC_week_SpanB)) or ((IC_week_SpanB > IC_week_close) and (IC_week_close > IC_week_SpanA)) then 1 else Double.NaN;
IC_week_AboveCloud = if IC_week_close > IC_week_SpanA and IC_week_close > IC_week_SpanB then 1 else Double.NaN;
IC_week_BelowCloud = if IC_week_close < IC_week_SpanA and IC_week_close < IC_week_SpanB then 1 else Double.NaN;
} else {
IC_week_close = 0;
IC_week_SpanA = 0;
IC_week_SpanB = 0;
IC_week_Turning = 0;
IC_week_Standard = 0;
IC_week_Lagging = 0;
IC_week_InCloud = Double.NaN;
IC_week_AboveCloud = Double.NaN;
IC_week_BelowCloud = Double.NaN;
IC_week_AggregationPeriod = Double.NaN;
}
AddLabel(IC_week_AboveCloud, "W", Color.DARK_GREEN);
AddLabel(IC_week_BelowCloud, "W", Color.DARK_RED);
AddLabel(IC_week_InCloud, "W", Color.YELLOW);
# DAY LABELS
def IC_day_close;
def IC_day_Turning;
def IC_day_Standard;
def IC_day_Lagging;
def IC_day_SpanA;
def IC_day_SpanB;
def IC_day_AboveCloud;
def IC_day_InCloud;
def IC_day_BelowCloud;
def IC_day_AggregationPeriod;
if GetAggregationPeriod() <= AggregationPeriod.DAY {
IC_day_AggregationPeriod = AggregationPeriod.DAY;
IC_day_close = close(period = IC_day_AggregationPeriod);
IC_day_Turning = (Highest(high(period = IC_day_AggregationPeriod), turning_period) + Lowest(low(period = IC_day_AggregationPeriod), turning_period)) / 2;
IC_day_Standard = (Highest(high(period = IC_day_AggregationPeriod), standard_period) + Lowest(low(period = IC_day_AggregationPeriod), standard_period)) / 2;
IC_day_SpanA = (IC_day_Turning[standard_period] + IC_day_Standard[standard_period]) / 2;
IC_day_SpanB = (Highest(high[standard_period], 2 * standard_period) + Lowest(low[standard_period], 2 * standard_period)) / 2;
IC_day_Lagging = close[-standard_period];
IC_day_InCloud = if ((IC_day_SpanA > IC_day_close) and (IC_day_close > IC_day_SpanB)) or ((IC_day_SpanB > IC_day_close) and (IC_day_close > IC_day_SpanA)) then 1 else Double.NaN;
IC_day_AboveCloud = if IC_day_close > IC_day_SpanA and IC_day_close > IC_day_SpanB then 1 else Double.NaN;
IC_day_BelowCloud = if IC_day_close < IC_day_SpanA and IC_day_close < IC_day_SpanB then 1 else Double.NaN;
} else {
IC_day_close = 0;
IC_day_SpanA = 0;
IC_day_SpanB = 0;
IC_day_Turning = 0;
IC_day_Standard = 0;
IC_day_Lagging = 0;
IC_day_InCloud = Double.NaN;
IC_day_AboveCloud = Double.NaN;
IC_day_BelowCloud = Double.NaN;
IC_day_AggregationPeriod = Double.NaN;
}
AddLabel(IC_day_AboveCloud, "D", Color.DARK_GREEN);
AddLabel(IC_day_BelowCloud, "D", Color.DARK_RED);
AddLabel(IC_day_InCloud, "D", Color.YELLOW);
# HOUR LABELS
def IC_hour_close;
def IC_hour_Turning;
def IC_hour_Standard;
def IC_hour_Lagging;
def IC_hour_SpanA;
def IC_hour_SpanB;
def IC_hour_AboveCloud;
def IC_hour_InCloud;
def IC_hour_BelowCloud;
def IC_hour_AggregationPeriod;
if GetAggregationPeriod() <= AggregationPeriod.HOUR {
IC_hour_AggregationPeriod = AggregationPeriod.HOUR;
IC_hour_close = close(period = IC_hour_AggregationPeriod);
IC_hour_Turning = (Highest(high(period = IC_hour_AggregationPeriod), turning_period) + Lowest(low(period = IC_hour_AggregationPeriod), turning_period)) / 2;
IC_hour_Standard = (Highest(high(period = IC_hour_AggregationPeriod), standard_period) + Lowest(low(period = IC_hour_AggregationPeriod), standard_period)) / 2;
IC_hour_SpanA = (IC_hour_Standard[standard_period] + IC_hour_Standard[standard_period]) / 2;
IC_hour_SpanB = (Highest(high[standard_period], 2 * standard_period) + Lowest(low[standard_period], 2 * standard_period)) / 2;
IC_hour_Lagging = close[-standard_period];
IC_hour_InCloud = if ((IC_hour_SpanA > IC_hour_close) and (IC_hour_close > IC_hour_SpanB)) or ((IC_hour_SpanB > IC_hour_close) and (IC_hour_close > IC_hour_SpanA)) then 1 else Double.NaN;
IC_hour_AboveCloud = if IC_hour_close > IC_hour_SpanA and IC_hour_close > IC_hour_SpanB then 1 else Double.NaN;
IC_hour_BelowCloud = if IC_hour_close < IC_hour_SpanA and IC_hour_close < IC_hour_SpanB then 1 else Double.NaN;
} else {
IC_hour_close = 0;
IC_hour_SpanA = 0;
IC_hour_SpanB = 0;
IC_hour_Turning = 0;
IC_hour_Standard = 0;
IC_hour_Lagging = 0;
IC_hour_InCloud = Double.NaN;
IC_hour_AboveCloud = Double.NaN;
IC_hour_BelowCloud = Double.NaN;
IC_hour_AggregationPeriod = Double.NaN;
}
AddLabel(IC_hour_AboveCloud, "H", Color.DARK_GREEN);
AddLabel(IC_hour_BelowCloud, "H", Color.DARK_RED);
AddLabel(IC_hour_InCloud, "H", Color.YELLOW);
# TEN_MIN LABELS
def IC_ten_min_close;
def IC_ten_min_Turning;
def IC_ten_min_Standard;
def IC_ten_min_Lagging;
def IC_ten_min_SpanA;
def IC_ten_min_SpanB;
def IC_ten_min_AboveCloud;
def IC_ten_min_InCloud;
def IC_ten_min_BelowCloud;
def IC_ten_min_AggregationPeriod;
if GetAggregationPeriod() <= AggregationPeriod.TEN_MIN {
IC_ten_min_AggregationPeriod = AggregationPeriod.TEN_MIN;
IC_ten_min_close = close(period = IC_ten_min_AggregationPeriod);
IC_ten_min_Turning = (Highest(high(period = IC_ten_min_AggregationPeriod), turning_period) + Lowest(low(period = IC_ten_min_AggregationPeriod), turning_period)) / 2;
IC_ten_min_Standard = (Highest(high(period = IC_ten_min_AggregationPeriod), standard_period) + Lowest(low(period = IC_ten_min_AggregationPeriod), standard_period)) / 2;
IC_ten_min_SpanA = (IC_ten_min_Turning[standard_period] + IC_ten_min_Standard[standard_period]) / 2;
IC_ten_min_SpanB = (Highest(high[standard_period], 2 * standard_period) + Lowest(low[standard_period], 2 * standard_period)) / 2;
IC_ten_min_Lagging = close[-standard_period];
IC_ten_min_InCloud = if ((IC_ten_min_SpanA > IC_ten_min_close) and (IC_ten_min_close > IC_ten_min_SpanB)) or ((IC_ten_min_SpanB > IC_ten_min_close) and (IC_ten_min_close > IC_ten_min_SpanA)) then 1 else Double.NaN;
IC_ten_min_AboveCloud = if IC_ten_min_close > IC_ten_min_SpanA and IC_ten_min_close > IC_ten_min_SpanB then 1 else Double.NaN;
IC_ten_min_BelowCloud = if IC_ten_min_close < IC_ten_min_SpanA and IC_ten_min_close < IC_ten_min_SpanB then 1 else Double.NaN;
} else {
IC_ten_min_close = 0;
IC_ten_min_SpanA = 0;
IC_ten_min_SpanB = 0;
IC_ten_min_Turning = 0;
IC_ten_min_Standard = 0;
IC_ten_min_Lagging = 0;
IC_ten_min_InCloud = Double.NaN;
IC_ten_min_AboveCloud = Double.NaN;
IC_ten_min_BelowCloud = Double.NaN;
IC_ten_min_AggregationPeriod = Double.NaN;
}
AddLabel(IC_ten_min_AboveCloud, "10m", Color.DARK_GREEN);
AddLabel(IC_ten_min_BelowCloud, "10m", Color.DARK_RED);
AddLabel(IC_ten_min_InCloud, "10m", Color.YELLOW);