Привет всем,

Готов еще один интересный индикатор для TSLab – индикатор Ишимоку (Ichimoku).

Для версии программы 2.0 ЗДЕСЬ
Для версии программы 1.2 без ошибок Здесь
Стараниями jhgjrht




Ниже дано его описание, взятое с
http://www.forex-indicators.ru/description-indicator-ichimoku/

Индикатор Ишимоку определяет уровни поддержки и сопротивления, а также точный временной интервал входа в рынок при пробое уровней.

Также имеется толковая книга, описывающая работу с индикатором: «Индикатор Ишимоку как основа торговой системы», Терехов А.Ю. http://www.koob.ru/terehov_a_y/indikator_ishimoku_kak_osnova

Описание индикатора Ишимоку

Индикатор Ишимоку Кинко Хайо представляет из себя набор из пяти линий (Тенкан-сен, Кинджун-Спен, Сенкоу-Спен «B», Чикоу-Спен). Он довольно эффективно работает при начале начинающейся новой тенденции, т.е четко выялвяет начало, направление и точки входа в рынок.
Опишем кратко линии индикатора и какую функцию они выполняют.

1. Тенкан-Сен (разворотная линич) (красная линия) определяет краткосрочную линию тенденции, сигнализирующая начало «быстрой» тенденции. Показывает направление текущей краткосрочной тенденции и являясь средним значением за первый промежуток времени (high +low)/2 (high, low – максимум, минимум). Если линия Тенкан-Сен находится в восходящей направлении, то на рынке присутствует повышательная тенденция, если же линия направлена вниз- то на рынке присутствует нисходящий тренд. Если же линия параллельна оси времени – то на рынке затишься.

2. Киджун сен – (основная линия) (синяя линия) – долгосрочная линия тенденции. Показывает тренд более старшего временного промежутка, его направление. Т.е если линия киджун сен идет вверх- то рынок бычий, если же направлена вниз- то рынок медвежий.

3. Сенкоу-Спен «А» - (опережающая линия) определяется как середина торгового диапазона линий тенкан-сен и Кинжун-сен и сдвинутого вперед на величину второго временного промежутка. Линия сенкоу-спен является верхней границей «облака», а также сопротивлением и поддержкей.

Сенкоу-Спен «В» - (опережающая линия) – определяется как середина максимума и минимума за длинный (третий) временной интервал и сдвинутый вперед на величину второго временного промежутка Сенкоу Спен «В». Также является нижней границе облака Ишимоку.

4 . Чикоу-Спен – (запаздывающая линия) это график цен закрытия, сдвинутый на некоторый временной промежуток. Обычно составляет 5, 9, 26, 34

Облако ишимоку.

Облаком Ишимоку является промежуток между линиями Сенкоу-А и Сенкоу В и обычно штрихуется в другой цвет.

Параметры индикатора ишимоку

Параметрами по-умолчанию индикатора Ишимоку является:
Тенкан-Сен: 9
Киджун-Сен: 26
Сенкон-Спен В: 52

Важная особенность индикатора состоит в том, что если цена располагается выше, так называемого, «облака, то на рынке повышательная тенденция. Если же цена располагается ниже «облака», то рынок медвежий. А если цена располагается внутри самого «облака», то это боковая тенденция и стоит находиться вне рынка.

Исходный код

Код индикатора приведен ниже. Просьба спецов по .Net и по TSLab прокомментировать, где можно улучшить код-производительность и т.д. Планирую еще выкладывать индикаторы, хочется писать сразу хорошо.

using System.Collections.Generic;
using System.Linq;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Helpers;


namespace TSLab.Community.Ichimoku
{
public abstract class BaseSen
{
public virtual int Period { get; set; }

public IList<double> Execute(ISecurity source)
{
// for cacheing purpose using Context.GetData
var high = Context.GetData("Highest", new[] { Period.ToString() },
() => Series.Highest(source.HighPrices, Period));
var low = Context.GetData("Lowest", new[] { Period.ToString() },
() => Series.Lowest(source.LowPrices, Period));

IList<double> list = new List<double>(high.Count);
for (int i = 0; i < high.Count; i++)
{
var avg = (high[i] + low[i]) / 2;
list.Add(avg);
}
return list;
}

public IContext Context { get; set; }
}


public class TenkanSen : BaseSen, IBar2DoubleHandler, IContextUses
{
[HandlerParameter(true, "9", Min = "3", Max = "25", Step = "1")]
public override int Period { get; set; }

}

public class KijunSen : BaseSen, IBar2DoubleHandler, IContextUses
{
[HandlerParameter(true, "26", Min = "5", Max = "52", Step = "1")]
public override int Period { get; set; }
}

public class SenkouA : IBar2DoubleHandler, IContextUses
{
[HandlerParameter(true, "9", Min = "3", Max = "25", Step = "1")]
public int TenkanPeriod { get; set; }

[HandlerParameter(true, "26", Min = "5", Max = "52", Step = "1")]
public int KijunPeriod { get; set; }

public IList<double> Execute(ISecurity source)
{

var tenkan = new TenkanSen { Period = TenkanPeriod, Context = Context }.Execute(source);
var kijun = new KijunSen { Period = KijunPeriod, Context = Context }.Execute(source);

var count = source.HighPrices.Count + KijunPeriod;
var result = new double[count];
for (int i = 0; i < source.HighPrices.Count; i++)
{
var middle = kijun[i] + (tenkan[i] - kijun[i]) / 2;
result[i+KijunPeriod] = middle;
}
return result;
}

public IContext Context { get; set; }
}

public class SenkouB : IBar2DoubleHandler, IContextUses
{
[HandlerParameter(true, "52", Min = "25", Max = "255", Step = "1")]
public int Period { get; set; }

[HandlerParameter(true, "26", Min = "5", Max = "52", Step = "1")]
public int KijunPeriod { get; set; }

public IList<double> Execute(ISecurity source)
{
var avg = new TenkanSen { Period = Period, Context = Context }.Execute(source);

var count = source.HighPrices.Count + KijunPeriod;
var result = new double[count];
for (int i = 0; i < source.HighPrices.Count; i++)
{
result[i + KijunPeriod] = avg[i];
}
return result;
}

public IContext Context { get; set; }
}

public class Chinkou : IBar2DoubleHandler, IContextUses
{
[HandlerParameter(true, "26", Min = "5", Max = "52", Step = "1")]
public int KijunPeriod { get; set; }

public IList<double> Execute(ISecurity source)
{
var close = source.ClosePrices;

var result = new double[close.Count-KijunPeriod];
for (int i = 0; i < result.Count(); i++)
{
result[i] = close[i + KijunPeriod];
}
return result;
}

public IContext Context { get; set; }
}


Индикатор в редакторе



Где находится


Attachments
Ichimoku Place.png (7340 downloads)
Ichimoku Editor.png (7139 downloads)
Ichimoku Chart.gif (8221 downloads)
ichimoku-demo.xml (593 downloads)
TSLab.Community.Ichimoku.dll.zip (642 downloads)
TSLab.Community.src.zip (531 downloads)



Отредактировано ViL (Fri Mar 01 2019 03:05 PM)