- Platform
-
- Thinkorswim
- TradingView
Ichimoku on smaller timeframes often gives less reliable signals due to spikes in the market. In order to increase the ratio of winning signals on lower timeframes as well as on larger timeframes, one needs to filter only the zones of the volatile market. There are a number of indicators for this, but the Average True Range is considered to be one of the simplest and most effective.
ATR shows the change in asset volatility without taking into account the direction of price movement. If the market is in a flat state, the indicator shows low values, and the indicator begins to grow sharply at the beginning of a trend. Oftentimes, the ATR is at its maximum values at the end of the trend, which is associated with panic on the exchange.
To combat lower timeframe ichimoku inefficiency we have combined it with ATR to help filter out false signals by utilizing volatility.
Combining ATR with Ichimoku allows us to harness areas of volatility and obtain trend direction in a very effective manner.
In short, combining ATR and the Ichimoku begets high efficiency.
Enjoy!
ATR shows the change in asset volatility without taking into account the direction of price movement. If the market is in a flat state, the indicator shows low values, and the indicator begins to grow sharply at the beginning of a trend. Oftentimes, the ATR is at its maximum values at the end of the trend, which is associated with panic on the exchange.
To combat lower timeframe ichimoku inefficiency we have combined it with ATR to help filter out false signals by utilizing volatility.
Combining ATR with Ichimoku allows us to harness areas of volatility and obtain trend direction in a very effective manner.
In short, combining ATR and the Ichimoku begets high efficiency.
Enjoy!
Code:
# B4 ATR Ichimoku
#
# Join us at: https://discord.gg/TveydqPWDF
# v1.0 - barbaros
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;
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 = if Tenkan crosses above Kijun then Kijun else Double.NaN;
#plot TKCrossDown = if Tenkan crosses below Kijun then Kijun else Double.NaN;
plot TKCrossUp = Tenkan crosses above Kijun;
plot TKCrossDown = Tenkan crosses below Kijun;
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, color.GREEN, color.RED);

Last edited: