Общие вопросы по разработке > Определение центра канала в написании робота.

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Alexandr-IV
Сообщения: 13
Зарегистрирован: 24 апр 2018, 20:58
Откуда: Ставрополье
Благодарил (а): 9 раз
Поблагодарили: 6 раз

Определение центра канала в написании робота.

Непрочитанное сообщение Alexandr-IV » 20 июл 2018, 12:22

Народ привет. Вот такая задача, определить канал по вершинам и впадинам – например определение по 6-10 свечам. И провести открытие в середине этого канала т.е 50% от пройдённого канала, в направлении тренда (ну например, направление тренда определяется по индикатору СуперТренд). Закрытие осуществляется по не доходу до границы канала, где-то 90% от пройдённого канала. Стоп за каналом.
Например так:
Вложения
Screenshot_2.png
Screenshot_1.png

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

Re: Определение центра канала в написании робота.

Непрочитанное сообщение evge » 22 июл 2018, 09:42

Входящие параметры какие у стратегии будут?
Количество баров в пределах которых ищем Min, Max, или это поиск вершин и впадин по фракталам?
И дополнительно параметры для построения SuperTrend?

По рисунку выставляться будет ордер на 7ом баре т.е. он будет ждать исполнения, т.е. это либо EnterLongStop() - вход по стоп ордеру в Long, либо ждем закрытия выше этой цены и входим обычным EnterLong() ордером.

Эти нюансы могут влиять на результат хорошо.

Ещё важно, как я понимаю, очередность Min и Max.

Для Long по SuperTrend:

Например, если Min раньше Max, то здесь нет сигнала и канал не запоминаем. Если Max раньше чем Min тогда работаем в Long.

Для Short всё противоположно.
никогда такого не было и вот опять

Alexandr-IV
Сообщения: 13
Зарегистрирован: 24 апр 2018, 20:58
Откуда: Ставрополье
Благодарил (а): 9 раз
Поблагодарили: 6 раз

Re: Определение центра канала в написании робота.

Непрочитанное сообщение Alexandr-IV » 23 июл 2018, 13:17

Спасибо что ответили. Вот, уточняю параметры:
Количество баров, где мы ищем Min, Max - это задаваемая, изменяемая величина - N.
Вот примерный алгоритмик накатал, посмотрите.
Вложения
ААТ Робот.png

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

Re: Определение центра канала в написании робота.

Непрочитанное сообщение evge » 23 июл 2018, 18:12

Пока не смотрел.
Изучу чуть позже описание (схему), как появится чуть больше времени.
И выложу готовый код или вопросы :).
никогда такого не было и вот опять

Alexandr-IV
Сообщения: 13
Зарегистрирован: 24 апр 2018, 20:58
Откуда: Ставрополье
Благодарил (а): 9 раз
Поблагодарили: 6 раз

Re: Определение центра канала в написании робота.

Непрочитанное сообщение Alexandr-IV » 23 июл 2018, 22:22

Спасибо большое буду ждать

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

Re: Определение центра канала в написании робота.

Непрочитанное сообщение evge » 24 июл 2018, 16:08

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

/**

**/

function Initialize()
{
   StrategyName = "SuperTrendChannel";
   AddParameter("C", 6, "Кол-во баров для поиска min, max", 1);
   AddParameter("PeriodATR", 5, "", 1);
   AddParameter("PeriodCCI", 50, "", 1);
   AddParameter("K", 1, "", 1);
   AddInput("I", Inputs.Candle, 60, true, "");
   LongLimit = 1000;
   ShortLimit = 1000;
   AddGlobalVariable("N", Types.Int, 0);
   
      AddChartIndicator("MY.SuperTrend", new Dictionary <string, string>{{"PeriodATR", "PeriodATR"},{"PeriodCCI", "PeriodCCI"},{"K", "K"}});

}

function OnUpdate()
{

   var S = MY.SuperTrend(I, PeriodATR, PeriodCCI, K);
   
   if (S["U"][0] > 0) N = 1;
   if (S["D"][0] > 0) N = -1;
   
   double Hi = 0, Li = 0;   
   for (int x = 1; x <= C; x++)
   {
      if (I.High[x] > I.High[Hi]) Hi = x;
      if (I.Low[x] < I.Low[Li]) Li = x;
   }
   
   var AV = (I.High[Hi] + I.Low[Li]) * 0.5;
   
   if (Li > Hi && N < 0)
   {
      if (I.High[0] < I.High[Hi])
      {
         CancelActiveOrders(true);
      }
      else
      {
         if (I.Low[0] > AV)
         {
            EnterShortStop(AV);
            BreakingStop(I.High[Hi], I.Low[Li], SignalPriceType.Price);            
         }
      }
   }

   if (Li < Hi && N > 0)
   {
   
      if (I.Low[0] > I.Low[Li])
      {
         CancelActiveOrders(true);
      }
      else
      {
         if (I.High[0] < AV)
         {
            EnterLongStop(AV);
            BreakingStop(I.Low[Li], I.High[Hi], SignalPriceType.Price);
         }
      }
      
   }
   
}


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

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

Re: Определение центра канала в написании робота.

Непрочитанное сообщение evge » 24 июл 2018, 16:16

На 5 минутном ТФ на сбербанке (без учета комиссий):

CCI = 10

SuperTrendChannel-01.png
SuperTrendChannel-01.png (37.33 КБ) 21337 просмотров
никогда такого не было и вот опять

Alexandr-IV
Сообщения: 13
Зарегистрирован: 24 апр 2018, 20:58
Откуда: Ставрополье
Благодарил (а): 9 раз
Поблагодарили: 6 раз

Re: Определение центра канала в написании робота.

Непрочитанное сообщение Alexandr-IV » 24 июл 2018, 16:25

Обалдеть! :shock: Будем тестить!

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

Re: Определение центра канала в написании робота.

Непрочитанное сообщение evge » 24 июл 2018, 16:46

Одну ошибку поправил в коде выше, так что результат надо перепроверять
никогда такого не было и вот опять

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

Re: Определение центра канала в написании робота.

Непрочитанное сообщение evge » 24 июл 2018, 18:14

ах да забыл ещё что тейк не 90% от границы канала тут, а 100% на границе. Хотя каналом это трудно назвать. В рамках N баров на краях.
никогда такого не было и вот опять


Вернуться в «Общие вопросы по разработке»

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

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