У вас не стоит Flash Player
Page 1 of 3 1 2 3 >
Настройки
#8882 - Sat Jul 24 2010 01:43 PM #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll
yaad Offline
stranger

Registered: Wed Apr 21 2010
Записи: 9
Привет всем,

Готов еще один интересный индикатор для 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 (7336 downloads)
Ichimoku Editor.png (7136 downloads)
Ichimoku Chart.gif (8217 downloads)
ichimoku-demo.xml (589 downloads)
TSLab.Community.Ichimoku.dll.zip (639 downloads)
TSLab.Community.src.zip (529 downloads)



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

Наверх
#10223 - Tue Aug 17 2010 04:06 PM Re: Индикатор Ишимоку / Ичимоку / Ichimoku – код+dll [Re: yaad]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
Классная вещь.Вообще люблю японские технологии,машины,электроника всё это проверенно временем.Качество как правило выше крыши.Надо скрипт слепить попробовать японский.
Спасибо вам за труд!
_________________________
Делаю простые вещи.

Наверх
#10238 - Tue Aug 17 2010 08:22 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: yaad]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
yaad, а линия Шимоку должна опережать на 25 минут? smile Я просто не в курсе...


Если компильнуть в таком коде:
Click to reveal..
Code:
using System.Collections.Generic;
using System.Linq;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Helpers;


namespace TSLab.Community.Ichimoku
{ 
	[HandlerCategory("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; }
    }

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

    }
    	[HandlerCategory("Ichimoku")]

    public class KijunSen : BaseSen, IBar2DoubleHandler, IContextUses
    {
        [HandlerParameter(true, "26", Min = "5", Max = "52", Step = "1")]
        public override int Period { get; set; }
    }
	[HandlerCategory("Ichimoku")]
    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; }
    }
    	[HandlerCategory("Ichimoku")]

    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; }
    }
    	[HandlerCategory("Ichimoku")]

    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; }
    }
} 


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


Attachments
шимоку.jpg (7199 downloads)



Отредактировано 777 (Tue Aug 17 2010 08:26 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#10239 - Tue Aug 17 2010 08:31 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: 777]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Да!, все красивые индикаторы имеют под собой (high[i]+low[i])/ 2, но такая средняя больше подходит к Форексу, там гэп-ов мало(зато если бывают, ого-го)

Предложение, пойти дальше чем япошки: (open[i]+low[i-1]+high[i-1]+close[i-1])/4
Тогда главная средняя будет учитывать открытие, что для русского рынка определяющее ...


Отредактировано 777 (Tue Aug 17 2010 08:36 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#10240 - Tue Aug 17 2010 08:37 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: 777]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Хотя нет, так все загладим... можно просто (high[i]+low[i]+close[i]+open[i])/4

Кстати Вы взяли максим значения по периоду, наверно все же лучше брать все чистые значения по свече [i], потом сумма формулы по периоду
делить на период. Так и для компа быстрее и средняя красивее...


Отредактировано 777 (Tue Aug 17 2010 08:40 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#11430 - Wed Sep 01 2010 01:26 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: 777]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
SenkouA при включенном обновлении в реальном времени в лаборатории как то не понятно рисует вперёд.
_________________________
Делаю простые вещи.

Наверх
#11432 - Wed Sep 01 2010 01:32 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: profit]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Code:

    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; }
    }


Не очень понятно, что делает этот код. На мой взгляд он не верный, т.к. выходная серия получается короче исходной, чего нельзя допускать.

Наверх
#11433 - Wed Sep 01 2010 01:37 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: Nektodron]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
Что делать теперь?Редкий представитель страны восходящего солнца и не верный,басурманин.Надо его как то подправлять.Вдруг стрельнёт?
Хотя то что он рисует на реальную ситуацию не влияет.Просто вводит в заблуждение визуализация.

Кстати он и начинает отрисовывать тоже не совсем удобно с нуля несколько дней держит.


Отредактировано profit (Wed Sep 01 2010 01:45 PM)
_________________________
Делаю простые вещи.

Наверх
#11434 - Wed Sep 01 2010 01:39 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: profit]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
Ещё бы знать это недостаток или преимущество.
_________________________
Делаю простые вещи.

Наверх
#11435 - Wed Sep 01 2010 01:48 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: profit]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
Он у меня уже лонг стратегический открыл и такая неадекватная ситуация.Реально куплены контракты.Что закрывать теперь что ли?
_________________________
Делаю простые вещи.

Наверх
#16354 - Fri Nov 05 2010 01:19 AM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: profit]
serg Offline
Pooh-Bah

Registered: Fri May 14 2010
Записи: 1663
Loc: Россия
Доброго времени всем !
Спасибо за редкий индикатор !
Хочу обратиться с просьбой к автору:
1.Возможно ли провести штриховку облака ?
2.Учитывая слабые познания в области програмирования ( как мои лично, так и многих), обьединить данный индикатор в одну папку.
3. И что то там м-р Nektоkdron заметил......
Заранее спасибо.



Отредактировано serg (Fri Nov 05 2010 01:20 AM)

Наверх
#19079 - Mon Dec 27 2010 02:05 AM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: serg]
jhgjrht Offline
writer

Registered: Sun Nov 21 2010
Записи: 428
Новогодний подарок! Бездвоздмездно, т.е. задаром!

Исправленная версия индикатора, плюс модификация о которой 777 говорил, плюс торговая система на C#, плюс ссылка на книжку.

Книжка на русском

Система рабочая, в будущее НЕ заглядывает.


Attachments
Ichimoku.rar (676 downloads)



Отредактировано jhgjrht (Mon Dec 27 2010 02:49 PM)
_________________________
Не пишите мне! Никому ничего делать не буду.

Наверх
#19096 - Mon Dec 27 2010 11:06 AM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: jhgjrht]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
компилированна независимо?старую не снесёт?
_________________________
Делаю простые вещи.

Наверх
#19098 - Mon Dec 27 2010 11:09 AM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: profit]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
dll нет в папке.
_________________________
Делаю простые вещи.

Наверх
#19122 - Mon Dec 27 2010 02:52 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: profit]
jhgjrht Offline
writer

Registered: Sun Nov 21 2010
Записи: 428
добавил в архив (в предыдущем сообщении) скомпилированную ДЛЛ

Имена классов те же, поэтому: либо старая версия, либо новая.
Исходники прилагаются, так что можете сделать все, что пожелаете.


Отредактировано jhgjrht (Mon Dec 27 2010 02:53 PM)
_________________________
Не пишите мне! Никому ничего делать не буду.

Наверх
#19123 - Mon Dec 27 2010 03:00 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: jhgjrht]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
может цифру добавите к новой версии?старую сразу менять не хочется.
особенно рабочую.
_________________________
Делаю простые вещи.

Наверх
#19126 - Mon Dec 27 2010 03:31 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: profit]
jhgjrht Offline
writer

Registered: Sun Nov 21 2010
Записи: 428
Пожалуйста. Специально для Вас. smile

Еще добавил "IchimokuCloud" - это, типа, заливка облака, доступными средствами.
Как все это сделать красиво, и в рамках одного индикатора объединить несколько линий и заливку - вопрос к разработчикам TSLab.

С уважением и наилучшими пожеланиями в НГ!


Attachments
Ichimoku_v2.rar (777 downloads)

_________________________
Не пишите мне! Никому ничего делать не буду.

Наверх
#19127 - Mon Dec 27 2010 04:12 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: jhgjrht]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
Спасибо.
_________________________
Делаю простые вещи.

Наверх
#19130 - Mon Dec 27 2010 04:49 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: jhgjrht]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Молодца! smile Спасибо!

С наступающим!
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#19355 - Fri Jan 07 2011 03:10 PM Re: #26 Индикатор Ишимоку/Ичимоку/Ichimoku – код+dll [Re: 777]
Sukhov Offline
stranger

Registered: Mon Oct 25 2010
Записи: 5
Благодарю всех кто помогает smile А можно ли сделать сдвиг облака на N кол-во периодов, как это предусмотрено в квике? Ну оччч нужно :)))

Наверх
Page 1 of 3 1 2 3 >


Moderator:  ViL, sar