Стратегии и роботы > Пересечение EMA и SMA с трейлинг стопом (TRS)

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

Re: Пересечение EMA и SMA с трейлинг стопом (TRS)

Непрочитанное сообщение evge » 24 мар 2016, 18:23

evge писал(а):если ЕМА выше SMA


Всё нормально, код на основе предустановленной стратегии, но сработает оно только на пересечении 1 раз. Если взять функцию пересечения будет тоже самое. Но тут мы ещё можем доработать код в дальнейшем, например, для переоткрытия позиции и тогда <> будет уместнее чем "пересекает".
никогда такого не было и вот опять

Геннадий
Сообщения: 29
Зарегистрирован: 06 мар 2016, 02:11
Поблагодарили: 2 раза

Re: Пересечение EMA и SMA с трейлинг стопом (TRS)

Непрочитанное сообщение Геннадий » 25 мар 2016, 05:32

Понятно. Спасибо за разъяснение. Один минус - если я захочу добавить возможность закрыть сделку в конце сессии, без функции пересечения не получится. А на SIM6 опасно переносить сделку через ночь. Как впрочем и на фьюче РТС.

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

Re: Пересечение EMA и SMA с трейлинг стопом (TRS)

Непрочитанное сообщение evge » 25 мар 2016, 06:56

Геннадий писал(а):закрыть сделку в конце сессии, без функции пересечения не получится


Не понятно. Почему не получится? Как пересечение и конец сессии связаны? Тут специально заведена переменная NP, которая проверяется в условии этого же правила для того чтобы сделка не открылась повторно.
никогда такого не было и вот опять

Геннадий
Сообщения: 29
Зарегистрирован: 06 мар 2016, 02:11
Поблагодарили: 2 раза

Re: Пересечение EMA и SMA с трейлинг стопом (TRS)

Непрочитанное сообщение Геннадий » 27 мар 2016, 13:30

evge писал(а):
Геннадий писал(а):закрыть сделку в конце сессии, без функции пересечения не получится


Не понятно. Почему не получится? Как пересечение и конец сессии связаны? Тут специально заведена переменная NP, которая проверяется в условии этого же правила для того чтобы сделка не открылась повторно.


Была же тема: "Робот не закрывает позицию по времени". Вот там как раз и видна связь функции пересечения с закрытием сделки по времени ("закрыть сделку в конце сессии").

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

Re: Пересечение EMA и SMA с трейлинг стопом (TRS)

Непрочитанное сообщение evge » 27 мар 2016, 13:36

Геннадий писал(а):Робот не закрывает позицию по времени
но здесь этой проблемы не будет из-за добавленной переменной NP.
никогда такого не было и вот опять

GrantNew
Сообщения: 28
Зарегистрирован: 12 июл 2019, 12:03
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: Пересечение EMA и SMA с трейлинг стопом (TRS)

Непрочитанное сообщение GrantNew » 20 июл 2019, 18:38

evge писал(а):
Геннадий писал(а):Робот не закрывает позицию по времени
но здесь этой проблемы не будет из-за добавленной переменной NP.

Евгений! Добрый день! что здесь в этой стратегии шаг цены? И как применить ее на другие акции? И тестировть ее не получится, я так понимаю т.к. трейлинг стоп, поправьте если не прав

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

Re: Пересечение EMA и SMA с трейлинг стопом (TRS)

Непрочитанное сообщение evge » 21 июл 2019, 07:13

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

GrantNew писал(а):что здесь в этой стратегии шаг цены?


Шаг цены - это минимальное изменение цены инструмента, в стратегии его можно узнать функцией GetPriceStep().

GrantNew писал(а):И как применить ее на другие акции?


Просто укажите нужное изменение в цене для стопа в этом параметре.
Можно было код написать для трейлинг-стопа в %, но реализовал тогда в виде изменения цены.

GrantNew писал(а):И тестировть ее не получится, я так понимаю т.к. трейлинг-стоп, поправьте если не прав


Тестировать можно. Это не заявка реального следящего стопа, здесь он виртуальный (программный).
Слежение за ценой и необходимостью закрытия позиции по стопу производится каждое обновление данных.
В данном случае, это обновление и проверка производится каждый новый бар и если условие выхода ценой close за пределы виртуального трейлинг-стопа выполнено, то производится закрытие позиции.
никогда такого не было и вот опять

GrantNew
Сообщения: 28
Зарегистрирован: 12 июл 2019, 12:03
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: Пересечение EMA и SMA с трейлинг стопом (TRS)

Непрочитанное сообщение GrantNew » 21 июл 2019, 08:44

Думается, расчеты по процентным стопам были бы гораздо удобнее, возможно так переписать?

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

Re: Пересечение EMA и SMA с трейлинг стопом (TRS)

Непрочитанное сообщение evge » 21 июл 2019, 08:56

Да, ничего сложного, вот код:

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

/**Стратегия основана на определении моментов пересечения быстрой экспоненциальной скользящей средней и медленной экспоненциальной скользящей средней (система "ES"). Особенности:
- сигнал на покупку выдается, если быстрая EMA пересекает медленную SMA снизу вверх;
- сигнал на продажу выдается, если быстрая EMA  пересекает медленную SMA  сверху вниз;
- при тестировании цена сделки фиксируется как цена закрытия бара, на котором появился сигнал.
- в роботе заявка выставляется после закрытия бара, на котором появился сигнал.
- стоплосс задается в %
- после срабатывания стоплосса позиция в том же направлении не переоткрывается и ожидается сигнал в другую сторону
Developed by evge;
Algorithm = ТРЕНД;**/

function Initialize()
{
   StrategyName = "evge_ES_TRS";
   AddParameter("Pfast", 3, "", 1);
   AddParameter("Pslow", 75, "", 0);
   AddParameter("TRS", 0.5, "Стоп-лосс в %", 0);  //трейлинг стоп в %
   AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
   LongLimit = 0;
   ShortLimit = 0;
   AddGlobalVariable("StopLoss", Types.Double, 0.0); //StopLoss цена
   AddGlobalVariable("P", Types.Int, 0); //позиция 0 - нет, 1 - long, 2 - short
   AddGlobalVariable("NP", Types.Int, 0); //запрет открытия позиции 0 - нет запрета, 1 - long, 2 - short
}

function OnUpdate()
{

   // Определяем стоп
   if (CurrentPosition() > 0 && P != 1) { P = 1; StopLoss = 0; }
   if (CurrentPosition() < 0 && P != 2) { P = 2; StopLoss = 0; }
   if (CurrentPosition() == 0) P = 0;

   if (P == 1 && ((Input1.Close[0] - Input1.Close[0] * 0.01 * TRS) > StopLoss || StopLoss == 0)) StopLoss = Input1.Close[0] - Input1.Close[0] * 0.01 * TRS;
   if (P == 2 && ((Input1.Close[0] + Input1.Close[0] * 0.01 * TRS) < StopLoss || StopLoss == 0)) StopLoss = Input1.Close[0] + Input1.Close[0] * 0.01 * TRS;
   //

   /// ПРАВИЛО 1
   if ( NP != 1 && (EMA(Input1.Close, Pfast) > SMA(Input1.Close, Pslow)) )
   {
      NP = 1;
      EnterLong();
   }

   else

   /// ПРАВИЛО 2
   if ( NP != 2 && (EMA(Input1.Close, Pfast) < SMA(Input1.Close, Pslow)) )
   {
      NP = 2;
      EnterShort();
   }

   else

   // закрываем Long по StopLoss
   if ( (P == 1) && (Input1.Close[0] < StopLoss)) {
      CloseLong();
   }

   else

   // закрываем Short по StopLoss
   if ( (P == 2) && (Input1.Close[0] > StopLoss)) {
      CloseShort();
   }

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

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

Re: Пересечение EMA и SMA с трейлинг стопом (TRS)

Непрочитанное сообщение evge » 21 июл 2019, 13:58

Выше поправил немного код с %, была ошибка
никогда такого не было и вот опять


Вернуться в «Стратегии и роботы»

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

Сейчас этот форум просматривают: Bing [Bot] и 12 гостей