Пользовательские индикаторы > SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
m4Dmitry
Сообщения: 65
Зарегистрирован: 21 май 2018, 22:04
Благодарил (а): 52 раза
Поблагодарили: 3 раза

Re: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Непрочитанное сообщение m4Dmitry » 30 июл 2018, 11:10

Simonov писал(а):Кто-то уже хвастается данным "граалем" на Смарт-Лабе. Здесь. :D


Да да да))) смешная ветка была))) скрин зашел в тему))))

там еще вот такой скрин был)) https://smart-lab.ru/blog/484379.php#comment8704540

Orange2000
Сообщения: 43
Зарегистрирован: 13 мар 2019, 00:45
Благодарил (а): 32 раза
Поблагодарили: 1 раз

Re: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Непрочитанное сообщение Orange2000 » 29 апр 2019, 18:14

Привет всем. Я так понимаю,надо вот так? что бы робот не дурил нас

Код: Выделить всё

function OnUpdate()
{
   /// ПРАВИЛО 1
   if ( (MY.SuperTrend(Input1, PeriodATR, PeriodCCI, K).GetValue("U", 1) > 0) )
   {
      EnterLong();
   }

   /// ПРАВИЛО 2
   if ( (MY.SuperTrend(Input1, PeriodATR, PeriodCCI, K).GetValue("D", 1) > 0) )
   {
      EnterShort();
   }

}


BugsDigger
Сообщения: 333
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 41 раз

Re: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Непрочитанное сообщение BugsDigger » 30 апр 2019, 07:08

Orange2000 писал:

> чтобы робот не дурил нас

Всё дело в том, что в серии исправляются прошлые точки (довольно и одной) по текущей точке.

Это не будет "дурить нас" в реале, но будет дурить в тестировании/оптимизации. Дело в том, что при тестировании значения индикаторов вычисляются на весь период тестирования, а затем уже по этим данным делается имитация торговли. Т.о., если в индикаторе проверить, как изменилась цена в текущей точке и исправить предыдущую точку, то симулятор торговли по этому индикатору будет как бы видеть на 1 точку в будущее, и этого уже оказывается вполне достаточно для "грааля" (зная прикуп, живу даже не в Сочи, а в на Лазурном берегу).

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

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

State
Сообщения: 35
Зарегистрирован: 08 окт 2018, 12:43
Поблагодарили: 1 раз

Re: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Непрочитанное сообщение State » 07 окт 2019, 14:56

Доброго дня.

Не силен я в програмировании и создании роботов. Возможно ли к данному роботу из этой ветки добавить два параметра: тейк профит и стоп лосс (чтобы просто закрывал позицию при достижении, без разворота) и добавить отключение разворота как такового (т.е. оставить например только лонг).
Поясню немного: робот зашел в лонг, достиг профита предположим в 0,15-1 п (задается ручками) и просто закрыл позицию. Повторно не входит в лонг при продолжении тренда лонгового. Ждет спокойно сигнала на шорт и заходит в шорт. После чего достигает ТП и закрывает шорт. Ждет сигнала на лонг. Без разворотов.

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Непрочитанное сообщение evge » 08 окт 2019, 07:42

Приветствую!

Здесь изменения небольшие:

параметры SL и TP - стоп и тейк в % для отправки BRS заявки после открытия позиции
глоб. перем. N разрешенное направление торговли, если N >= 0 - можно в long, если N <= 0 можно в шорт.

Код: Выделить всё

/**

Hash code 82E7948763EE510C8DF0B3C48F17727D
**/

function Initialize()
{
   StrategyName = "SuperTrend";
   AddParameter("PeriodATR", 5, "", 1);
   AddParameter("PeriodCCI", 50, "", 1);
   AddParameter("K", 1, "", 1);
   AddParameter("SL", 1.1, "StopLoss", 1);
   AddParameter("TP", 1.6, "TakeProfit", 1);
   AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
   LongLimit = 4750;
   ShortLimit = -4750;
   AddChartIndicator("MY.SuperTrend", new Dictionary <string, string>{{"PeriodATR", "PeriodATR"},{"PeriodCCI", "PeriodCCI"},{"K", "K"}});
   AddGlobalVariable("N", Types.Int, 0);
}

function OnUpdate()
{
   // evge 08.10.2019 https://alfadirect4.ru

   var I = Input1;
   var ST = MY.SuperTrend(Input1, PeriodATR, PeriodCCI, K);
   
   /// ПРАВИЛО 1
   if ( ST["U"][1] > 0 && N >= 0)
   {
      EnterLong();
      BreakingStop(SL, TP, SignalPriceType.DeltaInPercentFromAveragePrice);
      N = -1;
   }

   /// ПРАВИЛО 2
   if ( ST["D"][1] > 0 && N <= 0)
   {
      EnterShort();
      BreakingStop(SL, TP, SignalPriceType.DeltaInPercentFromAveragePrice);
      N = 1;
   }

}
никогда такого не было и вот опять

nikkrav
Сообщения: 35
Зарегистрирован: 19 май 2016, 15:20
Благодарил (а): 48 раз

Re: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Непрочитанное сообщение nikkrav » 08 окт 2019, 08:06

Евгений, привет! Добавь сюда частичное закрытие если возможно.

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Непрочитанное сообщение evge » 08 окт 2019, 08:59

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

Но тогда убрать нужно будет BRS.

Стоп конечно можно выставлять отдельно и каждое частичное закрытие перевыставлять его на тоже место или иное условие.

Как нужно?
никогда такого не было и вот опять

nikkrav
Сообщения: 35
Зарегистрирован: 19 май 2016, 15:20
Благодарил (а): 48 раз

Re: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Непрочитанное сообщение nikkrav » 08 окт 2019, 09:09

Допустим половину закрыть +1%, а вторую уже в б/у или по перевороту.

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Непрочитанное сообщение evge » 08 окт 2019, 09:18

Вариант с закрытием частями:

в параметрах
TP = % для закрытия части
TPLot = частичное закрытие шт.

без стопа, переворот.

SuperTrendParts-01.png
SuperTrendParts-01.png (23.37 КБ) 4302 просмотра


Код: Выделить всё

function Initialize()
{
   StrategyName = "SuperTrendParts";
   AddParameter("PeriodATR", 4, "", 1);
   AddParameter("PeriodCCI", 39, "", 1);
   AddParameter("K", 1, "", 1);
   AddParameter("TP", 0.5, "TakeProfit %", 1);
   AddParameter("TPLot", 1000, "Lot TakeProfit", 1);
   AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
   LongLimit = 5000;
   ShortLimit = -5000;
   AddChartIndicator("MY.SuperTrend", new Dictionary <string, string>{{"PeriodATR", "PeriodATR"},{"PeriodCCI", "PeriodCCI"},{"K", "K"}});
   AddGlobalVariable("N", Types.Int, 0);
   AddGlobalVariable("Last", Types.Double, 0);
}

function OnUpdate()
{
   // evge 08.10.2019 https://alfadirect4.ru

   var I = Input1;
   var ST = MY.SuperTrend(Input1, PeriodATR, PeriodCCI, K);
   var CP = CurrentPosition();
   
   /// ПРАВИЛО 1
   if ( ST["U"][1] > 0 && N >= 0)
   {
      EnterLong();
      Last = I.Close[0];
      N = -1;
   }

   /// ПРАВИЛО 2
   if ( ST["D"][1] > 0 && N <= 0)
   {
      EnterShort();
      Last = I.Close[0];
      N = 1;
   }
   
   if (CP > 0 && I.Close[0] > Last * (1 + TP * 0.01)) { CloseLong(TPLot); Last = I.Close[0]; }
   if (CP < 0 && I.Close[0] < Last * (1 - TP * 0.01)) { CloseShort(TPLot); Last = I.Close[0]; }

}
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: SuperTrend - трендовый индикатор, созданный на основе индикаторов ATR и CCI

Непрочитанное сообщение evge » 08 окт 2019, 09:49

А вот ещё один интересный вариант:

Здесь позиция будет закрываться с шагом даже если цена ходит в обратную сторону от последнего шага, но при этом есть условие, что это частичное закрытие будет только при положительном CurrentPL()

SuperTrendParts-02.png
SuperTrendParts-02.png (25.8 КБ) 4294 просмотра


Код: Выделить всё

function Initialize()
{
   StrategyName = "SuperTrendParts2";
   AddParameter("PeriodATR", 4, "", 1);
   AddParameter("PeriodCCI", 39, "", 1);
   AddParameter("K", 1, "", 1);
   AddParameter("TP", 1, "TakeProfit %", 1);
   AddParameter("TPLot", 500, "Lot TakeProfit", 1);
   AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
   LongLimit = 5000;
   ShortLimit = -5000;
   AddChartIndicator("MY.SuperTrend", new Dictionary <string, string>{{"PeriodATR", "PeriodATR"},{"PeriodCCI", "PeriodCCI"},{"K", "K"}});
   AddGlobalVariable("N", Types.Int, 0);
   AddGlobalVariable("Last", Types.Double, 0);
}

function OnUpdate()
{
   // evge 08.10.2019 https://alfadirect4.ru

   var I = Input1;
   var ST = MY.SuperTrend(Input1, PeriodATR, PeriodCCI, K);
   var CP = CurrentPosition();
   
   /// ПРАВИЛО 1
   if ( ST["U"][1] > 0 && N >= 0)
   {
      EnterLong();
      Last = I.Close[0];
      N = -1;
   }

   /// ПРАВИЛО 2
   if ( ST["D"][1] > 0 && N <= 0)
   {
      EnterShort();
      Last = I.Close[0];
      N = 1;
   }
   
   if (CP > 0 && I.Close[0] > Last * (1 + TP * 0.01)) { CloseLong(TPLot); Last = I.Close[0]; }
   if (CP > 0 && I.Close[0] < Last * (1 - TP * 0.01) && CurrentPLper() > 0) { CloseLong(TPLot); Last = I.Close[0]; }
   if (CP < 0 && I.Close[0] < Last * (1 - TP * 0.01)) { CloseShort(TPLot); Last = I.Close[0]; }
   if (CP < 0 && I.Close[0] > Last * (1 + TP * 0.01) && CurrentPLper() > 0) { CloseShort(TPLot); Last = I.Close[0]; }

}
никогда такого не было и вот опять


Вернуться в «Пользовательские индикаторы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя