Micheal
New member
Ruby:
# ATR Ichimoku
# v1.0 - barbaros
# v1.1 - barbaros - candle colors
input tenkan_period = 9;
input tenkan_mult = 2.0;
input kijun_period = 26;
input kijun_mult = 4.0;
input spanB_period = 52;
input spanB_mult = 6.0;
input showCloud = yes;
input colorBars = yes;
DefineGlobalColor("Bullish", Color.GREEN);
DefineGlobalColor("Bearish", Color.RED);
script _avg {
input src = close;
input length = 9;
input mult = 2;
def _atr = ATR(length) * mult;
def up = hl2 + _atr;
def dn = hl2 - _atr;
def upper = if src[1] < upper[1] then Min(up, upper[1]) else up;
def lower = if src[1] > lower[1] then Max(dn, lower[1]) else dn;
def os = if src > upper then 1 else if src < lower then 0 else os[1];
def spt = if os == 1 then lower else upper;
def _max = if src crosses spt then Max(src, _max[1]) else if os == 1 then Max(src, _max[1]) else spt;
def _min = if src crosses spt then Min(src, _min[1]) else if os == 0 then Min(src, _min[1]) else spt;
plot return = (_max + _min) / 2;
}
plot Tenkan = _avg(close, tenkan_period, tenkan_mult);
plot Kijun = _avg(close, kijun_period, kijun_mult);
plot TKCrossUp = Tenkan crosses above Kijun;
plot TKCrossDown = Tenkan crosses below Kijun;
def Direction = if TKCrossUp then 1 else if TKCrossDown then -1 else Direction[1];
def senkouA = (kijun + tenkan) / 2;
def senkouB = _avg(close,spanB_period,spanB_mult);
Tenkan.SetDefaultColor(Color.CYAN);
Tenkan.SetLineWeight(2);
Tenkan.HideBubble();
Tenkan.HideTitle();
Kijun.SetDefaultColor(Color.MAGENTA);
Kijun.SetLineWeight(2);
Kijun.HideBubble();
Kijun.HideTitle();
TKCrossUp.SetDefaultColor(Color.CYAN);
TKCrossUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
TKCrossUp.SetLineWeight(3);
TKCrossUp.HideBubble();
TKCrossUp.HideTitle();
TKCrossDown.SetDefaultColor(Color.MAGENTA);
TKCrossDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
TKCrossDown.SetLineWeight(3);
TKCrossDown.HideBubble();
TKCrossDown.HideTitle();
AddCloud(if showCloud then senkouA[spanB_period] else Double.NaN, if showCloud then senkouB[spanB_period] else Double.NaN, GlobalColor("Bullish"), GlobalColor("Bearish"));
AssignPriceColor(if !colorBars then Color.CURRENT
else if Direction == 1 then GlobalColor("Bullish")
else if Direction == -1 then GlobalColor("Bearish")
else Color.GRAY);
Last edited by a moderator: