Стратегии и роботы > Вход по лимитной заявке и индикатору.

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

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение evge » 14 авг 2022, 07:23

Пример с стопом по состоянию НПУ % < SL (параметр) срабатывает CloseLong, т.е. это не реальный стоп, а эмуляция. Т.к. StopLoss() после EnterLongLimit() не срабатывает, даже в отдельном условии по CP != 0, возможно терминальные баги или иная причина.
Поэтому стоп в таком виде.

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

function Initialize()
{
   StrategyName = "FollowEMA";
   AddParameter("Period", 20, "EMA Period", 1);
   AddParameter("Step", 0.02, "PSAR Step", 1);
   AddParameter("Maximum", 0.2, "PSAR Maximum", 1);
   AddParameter("SL", 2, "Stop Loss", 1);
   AddInput("Input1", Inputs.Candle, 1, true, "");
   LongLimit = 1000;
   ShortLimit = -1000;
   AddChartIndicator("EMA", new Dictionary <string, string>{{"Period", "Period"}});
   AddChartIndicator("ParabolicSAR", new Dictionary <string, string>{{"Step","Step"},{"Maximum","Maximum"}});   
}

function OnUpdate()
{
   var I = Input1;
   var C = Input1.Close;
   var E = EMA(I, Period);
   var P = PSAR(I, Step, Maximum);
   var CP = CurrentPosition();
           
   if (C[0] > E[0] && CP == 0)
   {
      CancelActiveOrders(true);
      EnterLongLimit(E[0]);
   }

   if (CurrentPLper() <= -SL)
   {
        CancelActiveOrders(true);
        CloseLong();
   }
   
   else
     
   if (C[0] < P[0] && CP > 0)
   {
      CancelActiveOrders(true);
      CloseLongLimit(P[0]);     
   }
   
}
никогда такого не было и вот опять

Максим
Сообщения: 16
Зарегистрирован: 07 апр 2019, 11:01
Благодарил (а): 14 раз

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение Максим » 14 авг 2022, 11:36

В лонг стоп работает, а для шорта сделал так:

if (CurrentPLper() >= SL)
{
CancelActiveOrders(true);
CloseShort();
}

В результате стоп закрывает ниже, а не выше точки входа. Что делаю не так?

robot3.jpg
robot3.jpg (146 КБ) 1773 просмотра

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

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение evge » 15 авг 2022, 18:50

это уже не стоп, а фиксация прибыли :)

делать ничего не надо было для шорта, условие должно быть абсолютно тем же

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

if (CurrentPLper() <= -SL)
{
CancelActiveOrders(true);
CloseShort();
}
никогда такого не было и вот опять

Максим
Сообщения: 16
Зарегистрирован: 07 апр 2019, 11:01
Благодарил (а): 14 раз

Re: Вход по лимитной заявке и индикатору.

Непрочитанное сообщение Максим » 15 авг 2022, 21:16

Спасибо, теперь все работает ))


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

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

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