Ichimoku Cloud
Created by Goichi Hosoda (細田悟一, Hosoda Goichi), Ichimoku Cloud, also known as Ichimoku Kinkō Hyō, is a collection of indicators that depict support and resistance, momentum, and trend direction. [Discuss] 💬
// C# usage syntax (batch)
IReadOnlyList<IchimokuResult> results =
bars.ToIchimoku(tenkanPeriods, kijunPeriods, senkouBPeriods);
// usage with custom offset
IReadOnlyList<IchimokuResult> results =
bars.ToIchimoku(tenkanPeriods, kijunPeriods, senkouBPeriods, offsetPeriods);
// usage with different custom offsets
IReadOnlyList<IchimokuResult> results =
bars.ToIchimoku(tenkanPeriods, kijunPeriods, senkouBPeriods, senkouOffset, chikouOffset);
// buffered usage (incremental)
IchimokuList buffer = bars.ToIchimokuList(tenkanPeriods, kijunPeriods, senkouBPeriods);
IReadOnlyList<IchimokuResult> results = buffer;
// streaming usage (real-time)
BarHub barHub = new();
IchimokuHub observer = barHub.ToIchimokuHub(tenkanPeriods, kijunPeriods, senkouBPeriods);
IReadOnlyList<IchimokuResult> results = observer.Results;Parameters
| param | type | description |
|---|---|---|
tenkanPeriods | int | Number of periods (T) in the Tenkan-sen midpoint evaluation. Must be greater than 0. Default is 9. |
kijunPeriods | int | Number of periods (K) in the shorter Kijun-sen midpoint evaluation. Must be greater than 0. Default is 26. |
senkouBPeriods | int | Number of periods (S) in the longer Senkou leading span B midpoint evaluation. Must be greater than K. Default is 52. |
offsetPeriods | int | Optional. Number of periods to offset both Senkou and Chikou spans. Must be non-negative. Default is kijunPeriods. |
senkouOffset | int | Optional. Number of periods to offset the Senkou span. Must be non-negative. Default is kijunPeriods. |
chikouOffset | int | Optional. Number of periods to offset the Chikou span. Must be non-negative. Default is kijunPeriods. |
See overloads usage above to determine which parameters are relevant for each. If you are customizing offsets, all parameter arguments must be specified.
Historical price bars requirements
You must have at least the greater of T,K, S, and offset periods for bars to cover the warmup periods; though, given the leading and lagging nature, we recommend notably more.
bars is a collection of generic TBar historical price bars. It should have a consistent frequency (day, hour, minute, etc). See the Guide for more information.
Response
IReadOnlyList<IchimokuResult>- This method returns a time series of all available indicator values for the
barsprovided. - It always returns the same number of elements as there are in the historical price bars.
- It does not return a single incremental indicator value.
- The first
T-1,K-1, andS-1periods will have variousnullvalues since there's not enough data to calculate. Custom offset periods may also increasenullresults for warmup periods.
IchimokuResult
| property | type | description |
|---|---|---|
Timestamp | DateTime | Date from evaluated TBar |
TenkanSen | double | Conversion / signal line |
KijunSen | double | Base line |
SenkouSpanA | double | Leading span A |
SenkouSpanB | double | Leading span B |
ChikouSpan | double | Lagging span |
Utilities
See Utilities and helpers for more information.
Chaining
Results can be used for chaining in subsequent indicators when streaming.
// example: chain to another indicator (streaming)
var emaHub = bars
.ToIchimokuHub()
.ToEmaHub(14);Note: TenkanSen is the primary reusable value for chaining purposes.
See Chaining indicators for more.
Streaming
Use the buffer-style List<T> when you need incremental calculations without a hub:
IchimokuList ichimokuList = new(tenkanPeriods, kijunPeriods, senkouBPeriods);
foreach (IBar bar in bars) // simulating stream
{
ichimokuList.Add(bar);
}
// based on `ICollection<IchimokuResult>`
IReadOnlyList<IchimokuResult> results = ichimokuList;Subscribe to a BarHub for advanced streaming scenarios:
BarHub barHub = new();
IchimokuHub observer = barHub.ToIchimokuHub(tenkanPeriods, kijunPeriods, senkouBPeriods);
foreach (IBar bar in bars) // simulating stream
{
barHub.Add(bar);
}
IReadOnlyList<IchimokuResult> results = observer.Results;See Buffer lists and Stream hubs for full usage guides.