#12 / Индикатор: SuperTrend

Автор: 777

#12 / Индикатор: SuperTrend - Thu Jul 22 2010 02:53 PM

SuperTrend
CCI(50)>0?(LOW-TR):(HIGH+TR)
TR - truerange
Подцепляем к сжатию(можно и к источнику).
Период CCI вынес отдельно, так, что его то же можно крутить(по книге должен быть ровно 50)
TR - наделил EMA, и он стал ATR так, что то ж можно крутить.
Если период EMA=1, то ATR=TR
Автор: usas

Re: [b]ИНДИКАТОРЫ ОТ ПОЛЬЗОВАТЕЛЕЙ[/b] - Thu Jul 22 2010 03:03 PM

Originally Posted By: 777
SuperTrend
CCI(50)>0?(LOW-TR):(HIGH+TR)
TR - truerange
Подцепляем к сжатию(можно и к источнику).
Период CCI вынес отдельно, так, что его то же можно крутить(по книге должен быть ровно 50)
TR - наделил EMA, и он стал ATR так, что то ж можно крутить.
Если период EMA=1, то ATR=TR

Сваяные Лабером NRTR и NRMA тут
http://www.tslab.ru/ubb/ubbthreads.php?ubb=postlist&Board=25&page=1
Там и описание и стратегии на API.
Ждем dll.

Куда-то твой пост с просьбой задевался..
Автор: 777

Re: [b]ИНДИКАТОРЫ ОТ ПОЛЬЗОВАТЕЛЕЙ[/b] - Thu Jul 22 2010 03:05 PM

Не, это я знаю, про стратегию. Ты мне четкое математическое описание дай.
Автор: usas

Re: [b]ИНДИКАТОРЫ ОТ ПОЛЬЗОВАТЕЛЕЙ[/b] - Thu Jul 22 2010 03:13 PM

Так там в описании есть ссылка
http://konkop.narod.ru/nrma.htm
Описание по-моему ичерпывающее..
Автор: 777

Re: [b]ИНДИКАТОРЫ ОТ ПОЛЬЗОВАТЕЛЕЙ[/b] - Thu Jul 22 2010 03:28 PM

Его не сделаю пока. В главной формуле есть предыдущее значение этой формулы. Я тут уже с похожей формулой встречался.
Автор: usas

Re: [b]ИНДИКАТОРЫ ОТ ПОЛЬЗОВАТЕЛЕЙ[/b] - Thu Jul 22 2010 03:32 PM

Originally Posted By: 777
Его не сделаю пока. В главной формуле есть предыдущее значение этой формулы. Я тут уже с похожей формулой встречался.

Его - это который?
Автор: 777

Re: [b]ИНДИКАТОРЫ ОТ ПОЛЬЗОВАТЕЛЕЙ[/b] - Thu Jul 22 2010 03:39 PM

NRMA

А в NRTR из описания не понятно как определять восходящий низходящий тренд, написано, что можно почитать там-то, но там-то английский язык. Я и английский, мы друг друга никогда не понимали... grin
Ждем разработчиков, мож сжаляться и сделают...
Автор: usas

Re: [b]ИНДИКАТОРЫ ОТ ПОЛЬЗОВАТЕЛЕЙ[/b] - Thu Jul 22 2010 03:46 PM

Originally Posted By: 777
NRMA

А в NRTR из описания не понятно как определять восходящий низходящий тренд, написано, что можно почитать там-то, но там-то английский язык. Я и английский, мы друг друга никогда не понимали... grin

Увы, мы тоже..:-))
Ну что ж , подождем, пока кто-нибудь сподобится..
Автор: TrendCatcher

Re: #12 / Индикатор: SuperTrend - Sun Jul 25 2010 10:45 AM

Originally Posted By: 777
SuperTrend
CCI(50)>0?(LOW-TR):(HIGH+TR)
TR - truerange
Подцепляем к сжатию(можно и к источнику).
Период CCI вынес отдельно, так, что его то же можно крутить(по книге должен быть ровно 50)
TR - наделил EMA, и он стал ATR так, что то ж можно крутить.
Если период EMA=1, то ATR=TR


Как этим пользоваться? К цене закрытия привязать нельзя. Привязывается только к источнику. frown
Автор: 777

Re: #12 / Индикатор: SuperTrend - Sun Jul 25 2010 10:50 AM

Originally Posted By: TrendCatcher
Originally Posted By: 777
SuperTrend
CCI(50)>0?(LOW-TR):(HIGH+TR)
TR - truerange
Подцепляем к сжатию(можно и к источнику).
Период CCI вынес отдельно, так, что его то же можно крутить(по книге должен быть ровно 50)
TR - наделил EMA, и он стал ATR так, что то ж можно крутить.
Если период EMA=1, то ATR=TR


Как этим пользоваться? К цене закрытия привязать нельзя. Привязывается только к источнику. frown


Я же написал - к сжатию, именно так его и пользуют. Можно и к разжатию.
Автор: TrendCatcher

Re: #12 / Индикатор: SuperTrend - Sun Jul 25 2010 12:04 PM

Originally Posted By: 777
Originally Posted By: TrendCatcher
Как этим пользоваться? К цене закрытия привязать нельзя. Привязывается только к источнику. frown

Я же написал - к сжатию, именно так его и пользуют. Можно и к разжатию.


Т.е. если мне не нужно сжатие, индикатор не пригоден?
Автор: 777

Re: #12 / Индикатор: SuperTrend - Sun Jul 25 2010 05:52 PM

Originally Posted By: TrendCatcher

Т.е. если мне не нужно сжатие, индикатор не пригоден?

Почему не пригоден? Можно и к источнику прикрепить.
Автор: profit

Re: #12 / Индикатор: SuperTrend - Fri Aug 06 2010 05:34 PM

Ни к источнику ни к сжатию он не цепляется,то есть цепляется но толку нет с этого.Не задан обработчик. Зачем мусорить форум.Если корректно не получается то и не надо тратить время других.
Автор: 777

Re: #12 / Индикатор: SuperTrend - Fri Aug 06 2010 05:46 PM

Originally Posted By: profit
Не задан обработчик. Зачем мусорить форум.Если корректно не получается то и не надо тратить время других.

Кто бы говорил про мусор на форуме...
У меня этот индикатор работает, можете взять cs и скомпилировать dll сами.
Автор: profit

Re: #12 / Индикатор: SuperTrend - Fri Aug 06 2010 06:03 PM

В данном разделе это мусор.И это моё мнение как и большинства участников форума.
Автор: 777

Re: #12 / Индикатор: SuperTrend - Fri Aug 06 2010 08:51 PM

ANDY,NEKTODRON.
Пожалуйста посмотрите файл dll, он действительно не работает? Или это выдумки?
Должен подключаться либо к сжатию, либо к источнику, либо к разжатию.


P.S.
У меня на компьютере работает
Автор: uprav

Re: #12 / Индикатор: SuperTrend - Thu Aug 12 2010 10:57 AM

Originally Posted By: 777
ANDY,NEKTODRON.
Пожалуйста посмотрите файл dll, он действительно не работает? Или это выдумки?
Должен подключаться либо к сжатию, либо к источнику, либо к разжатию.
P.S.
У меня на компьютере работает


У меня вот что показывает:
Зелёная линия - это подключение к источнику (5-и минутки)
Красная линия - это подключение к сжатию (60 мин)
Если показывает, то что задумано - значит .dll у меня тоже работает.
Автор: 777

Re: #12 / Индикатор: SuperTrend - Thu Aug 12 2010 11:09 AM

Originally Posted By: uprav
Originally Posted By: 777
ANDY,NEKTODRON.
Пожалуйста посмотрите файл dll, он действительно не работает? Или это выдумки?
Должен подключаться либо к сжатию, либо к источнику, либо к разжатию.
P.S.
У меня на компьютере работает


У меня вот что показывает:
Зелёная линия - это подключение к источнику (5-и минутки)
Красная линия - это подключение к сжатию (60 мин)
Если показывает, то что задумано - значит .dll у меня тоже работает.


Все верно, только в индикатор я не добавлял усреднение. Кому-то нравиться ema кому-то sma, кто-то использует просто мат.ожидание... Вот картинка с EMA:

Автор: backdoor_64

Re: #12 / Индикатор: SuperTrend - Fri Nov 26 2010 05:12 PM

c:\Documents and Settings\Admin\Local Settings\Application Data\TSLab\TSLab\temp\code15.cs(22,22) : error CS0234: The type or namespace name 'ScriptEngine' does not exist in the namespace 'TSLab' (are you missing an assembly reference?)

такая ошибка, что значит?...и что делать?
Автор: Nektodron

Re: #12 / Индикатор: SuperTrend - Fri Nov 26 2010 06:21 PM

ну подробней нужно, внешний скрипт подключали, или еще чтото, какой блок?
Автор: RomanK

Re: #12 / Индикатор: SuperTrend - Tue Apr 26 2011 12:15 PM

Добрый день. У меня подобная ошибка возникает. Я подключал внешний скрипт стратегии, которая у вас на форуме находится (Donchian_breakout). При сохранении стратегии я получаю ошибку 12:14:14.14 100 Скрипт: TestScript. c:\Documents and Settings\enote\Local Settings\Application Data\TSLab\TSLab\temp\code32.cs(26,22) : error CS0234: The type or namespace name 'ScriptEngine' does not exist in the namespace 'TSLab' (are you missing an assembly reference?)
Как от нее избавиться - подскажите?
Автор: Nektodron

Re: #12 / Индикатор: SuperTrend - Tue Apr 26 2011 01:41 PM

Вероятно не изменили путь к файлу в блоке внешний скрипт на свой.
Автор: RomanK

Re: #12 / Индикатор: SuperTrend - Tue Apr 26 2011 07:08 PM

Я уже разобрался. Там соединения не было между источником и внешним скриптом.
Кстати можете ссылку дать на материал, что означают эти соединения. Какие блоки должны присутствовать в режиме редактирования в случае работы с внешним скриптом?
Автор: vito333

Re: #12 / Индикатор: SuperTrend - Sat Feb 11 2012 04:25 PM

на самом деле на принципах, которые в этой ветке заложены в SuperTrend базируется TrendMagic, а SuperTrend базируется только на ATR

но и то, что есть реализовано как-то не так - сужу по линиям SuperTrend-а - в нете везде они ровные

Автор: 777

Re: #12 / Индикатор: SuperTrend - Sat Feb 11 2012 04:41 PM

В ветке этот вопрос уже встречался.
Ответ: Я не делал усреднения. Вы можете добавить любое из имеющихся. Просто к индикатору добавьте к примеру SMA и получите то, что везде в нете.
Автор: vito333

Re: #12 / Индикатор: SuperTrend - Sat Feb 11 2012 05:34 PM

вот тут логика кривовата

for (int i = 0; i < c.Count; i++)
{
var cm = h[i] + atr[i];
var cb = l[i] - atr[i];

var st = cci[i] > 0 ? cb : cm;
list.Add(st);
}
нужно сверяться с предыдущим значением list на меньше\больше, тогда не будет лишней пляски
Автор: 777

Re: #12 / Индикатор: SuperTrend - Sat Feb 11 2012 05:48 PM

Ну у меня только одно оправдание. Код этого индюка сделан в 2010 году, я тогда только начинал изучать c# smile Поправьте, как считаете нужным и выкладывайте сюда, будут все только Вам благодарны!
Автор: vito333

Re: #12 / Индикатор: SuperTrend - Sat Feb 11 2012 06:29 PM

Code:
    [HandlerCategory("vvTSLtools")]
    public class TrendMagic : IBar2DoubleHandler, IContextUses
    {
        [HandlerParameter(true, "50", Min = "5", Max = "100", Step = "1")]
        public int PeriodCCI { get; set; }

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

        public IList<double> Execute(ISecurity source)
        {

            var h = source.HighPrices;
            var l = source.LowPrices;
            var c = source.ClosePrices;
            double CurrTMVal;

            var atr = Series.AverageTrueRange (source.Bars, PeriodATR);
            var cci = Series.CCI(source.Bars, PeriodCCI);
            IList<double> tm = new List<double>(c.Count);

            for (int i = 0; i < c.Count; i++)
            {
                if (i == 0)
                {
                    tm.Add((h[i] - l[i])/2);
                    continue;
                };

                if (cci[i] > 0)
                {
                    // тренд растущий
                    CurrTMVal = l[i] - atr[i];
                    CurrTMVal = CurrTMVal < tm[i - 1] ? tm[i - 1] : CurrTMVal;
                }
                else
                {
                    // тренд снижающийся
                    CurrTMVal = h[i] + atr[i];
                    CurrTMVal = CurrTMVal > tm[i - 1] ? tm[i - 1] : CurrTMVal;
                }
                tm.Add(CurrTMVal);
            }

            return tm;
        }
        public IContext Context { get; set; }
    }
Автор: usas

Re: #12 / Индикатор: SuperTrend - Sat Feb 11 2012 07:47 PM

А кубик иде?
Автор: vito333

Re: #12 / Индикатор: SuperTrend - Sun Feb 12 2012 04:26 AM

http://www.tslab.ru/ubb/ubbthreads.php?ubb=download&Number=4992&filename=vvTSLtools.zip
Автор: vito333

Re: #12 / Индикатор: SuperTrend - Sat Jul 14 2012 04:05 PM

ссылка на то, что настоящий SuperTrend построен только на ATR (код от автора)

пруфлинк
Автор: Steven Smith

Re: #12 / Индикатор: SuperTrend - Tue Jan 29 2013 02:47 PM

I did not do averaging.
You can add any of the existing ones.
Just to add an indicator for example SMA and get that
everywhere on the net.
Автор: VladMih

Re: #12 / Индикатор: SuperTrend - Tue Aug 05 2014 12:09 AM

Originally Posted By: 777
SuperTrend
CCI(50)>0?(LOW-TR):(HIGH+TR)
TR - truerange
Подцепляем к сжатию(можно и к источнику).
Период CCI вынес отдельно, так, что его то же можно крутить(по книге должен быть ровно 50)
TR - наделил EMA, и он стал ATR так, что то ж можно крутить.
Если период EMA=1, то ATR=TR
На картинке ТСЛаба супертренд с мультипликатором 3. Меньше намного хуже, больше - вообще не вижу смысла, т.к. слишком далеко убегает от цены.

На второй картинке Супертренд слегка усовершенствованный с теми же значениями ATR и CCI. Тренд держит намного лучше, держится плотно к цене и даже идет прямо по цене, при этом не меняя цвет зачастую даже на неслабых откатах (тренд характеризует не только направление, но и цвет).

Я начал его делать для ТСЛ, но для меня он оказался посложней, чем робот. Если есть интерес, дам подробности как по коду, так и по некоторым вариантам использования.
Автор: VladMih

Re: #12 / Индикатор: SuperTrend - Tue Aug 05 2014 12:46 AM

Да, и еще. Нижайшая просьба показать как это можно сделать не кодом, а кубиками. Очень уж меня заинтриговало почему я за 4 дня, несколько раз начиная с нуля, смог сделать только нечто похожее на 1-й рисунок, хотя алгоритм полностью понятен.

Правда, есть нюанс: почему-то компилятор отказался принимать у меня вариант с использованием связки логформулы с блоком "Not", который по идее должен был дать искомое. А без этого два тренда-направления с двумя цветами логикой в формуле описать невозможно.
Автор: vito333

Re: #12 / Индикатор: SuperTrend - Tue Aug 05 2014 10:19 AM

похож на magictrend из моего сборника
Автор: VladMih

Re: #12 / Индикатор: SuperTrend - Tue Aug 05 2014 10:53 AM

Я почему-то не вижу его в сборнике, хотя скачивал последнюю версию, выложенную в вашей ветке 31 июля.
Более менее похожий VTrend (если настройки повыше), но это тоже совсем не то.
___________
Индикатор правильно называется не magictrend, а TrendMagic.
Щас буду смотреть - поторопился сообщить, не успев глянуть.
Автор: VladMih

Re: #12 / Индикатор: SuperTrend - Tue Aug 05 2014 11:28 AM

Originally Posted By: VladMih
Индикатор [в наборе] правильно называется не magictrend, а TrendMagic.
Чуть более нервный и без раскрашивания (оно тоже имеет значение), но в основном очень похож. Если не сделаю или не найду то, что искал, буду пользоваться этим.

vito333, спасибо!
А нельзя ли посмотреть как TrendMagic выглядит в кубиках?
Автор: vito333

Re: #12 / Индикатор: SuperTrend - Tue Aug 05 2014 03:29 PM

что значит "в кубиках"?

а внутреннюю логику могу глянуть у вашей версии и сказать, одно и то же это или нет
Автор: VladMih

Re: #12 / Индикатор: SuperTrend - Tue Aug 05 2014 11:09 PM

Логика та. Небольшая разница скорей всего из-за котировок + нет раскрашивания.

А "в кубиках" - это значит сделанный блоками ТСЛаба. Учиться пытаюсь, вот и хочу посмотреть как реализовано. Чтобы понять почему сам не смог.
Code:
#property copyright "(С) 2014, Satori, 1.0"
#property link      "http://fx-vladmih.ru"
#property version   "1.0"
#property description "Однотаймовый супертренд. Используется в мультитаймовом. Поэтому не удалять!"

#property indicator_chart_window
#property indicator_buffers 2

#property indicator_type1 DRAW_LINE
#property indicator_type2 DRAW_LINE

#property indicator_color1 Lime
#property indicator_color2 Red

#property indicator_width1 2
#property indicator_width2 2

#property indicator_style1 STYLE_SOLID
#property indicator_style2 STYLE_SOLID

extern   int   ATR_Period  =  5;

double TrendUp[];
double TrendDown[];
int st = 0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function|
//+------------------------------------------------------------------+
int init()
 {
//---- indicators

  SetIndexBuffer(0, TrendUp);
  SetIndexBuffer(1, TrendDown);

//----
  return(0);
 }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function|
//+------------------------------------------------------------------+
int deinit() {

  return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function|
//+------------------------------------------------------------------+
int start()
 {

  int limit, i;
  double cciTrendNow, cciTrendPrevious;

  int counted_bars = IndicatorCounted();
//---- check for possible errors
  if(counted_bars < 0) return(-1);
//---- last counted bar will be recounted
  if(counted_bars > 0) counted_bars--;

  limit=Bars-counted_bars;

  for(i = limit; i >= 0; i--) {
     cciTrendNow = iCCI(NULL, 0, 50, PRICE_TYPICAL, i);
     cciTrendPrevious = iCCI(NULL, 0, 50, PRICE_TYPICAL, i+1);

     if (cciTrendNow >= st && cciTrendPrevious < st) {
        TrendUp[i+1] = TrendDown[i+1];
     }

     if (cciTrendNow <= st && cciTrendPrevious > st) {
        TrendDown[i+1] = TrendUp[i+1];
     }

     if (cciTrendNow >= st) {
        TrendUp[i] = Low[i] - iATR(NULL, 0, ATR_Period, i);
        if (TrendUp[i] < TrendUp[i+1]) {
           TrendUp[i] = TrendUp[i+1];
        }
     }
     else if (cciTrendNow <= st) {
        TrendDown[i] = High[i] + iATR(NULL, 0, ATR_Period, i);
        if (TrendDown[i] > TrendDown[i+1]) {
           TrendDown[i] = TrendDown[i+1];
        }
     }
  }

//----
  return(0);
 }
Автор: vito333

Re: #12 / Индикатор: SuperTrend - Wed Aug 06 2014 03:47 AM

В кубиках нету, апи
Автор: vito333

Re: #12 / Индикатор: SuperTrend - Wed Aug 06 2014 03:53 AM

Раскраску можно и самостоятельно организовать
Автор: VladMih

Re: #12 / Индикатор: SuperTrend - Wed Aug 06 2014 08:25 AM

Так и знал (
А разница всё же не только из-за котировок. Местами есть всплески с остриями, которых на "моём" нет - т.е. не бывает вообще никогда.
Ну и цвета...
Автор: vito333

Re: #12 / Индикатор: SuperTrend - Wed Aug 06 2014 09:46 AM

код - да, суть та же
Автор: VladMih

Re: #12 / Индикатор: SuperTrend - Wed Aug 06 2014 10:04 AM

Originally Posted By: vito333
Раскраску можно и самостоятельно организовать
Как? Он ведь отдаёт только одно значение, а раскраска нужна не только по принципу выше/ниже. Я выше писал, еще раз уточню - цвет может даже несколько раз меняться при одном значении индикатора.

PS: предыдущий пост я писал почему-то не увидев верхний на этой странице. Из-за этого связь смысла слегка не в порядке. Сорри.