Страница 2 из 2

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

Добавлено: 14 авг 2022, 07:23
evge
Пример с стопом по состоянию НПУ % < 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]);     
   }
   
}

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

Добавлено: 14 авг 2022, 11:36
Максим
В лонг стоп работает, а для шорта сделал так:

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

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

robot3.jpg
robot3.jpg (146 КБ) 17768 просмотров

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

Добавлено: 15 авг 2022, 18:50
evge
это уже не стоп, а фиксация прибыли :)

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

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

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

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

Добавлено: 15 авг 2022, 21:16
Максим
Спасибо, теперь все работает ))

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

Добавлено: 17 мар 2023, 00:00
Евгений
evge писал(а):по закрытию со слежением аналогично, CloseLongLimit(Price)
с проверкой конечно же, что цена на текущий момент ниже чем PSAR

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

function Initialize()
{
   StrategyName = "FollowEMA";
   AddParameter("Period", 20, "EMA Period", 1);
   AddParameter("Step", 0.02, "PSAR Step", 1);
   AddParameter("Maximum", 0.2, "PSAR Maximum", 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 (C[0] < P[0] && CP > 0)
   {
      CancelActiveOrders(true);
      CloseLongLimit(P[0]);
   }

}



Здравствуйте. Не запускается робот. Что не так делаю?
Копирую код, вставляю в текстовый редактор.
сохраняю как sar.qpl
Пытаюсь загрузить в Квик через: Сервисы - QPILE скрипты.
Выдает ошибку: Неверный формат файла описания скриптов - Ошибка синтаксиса.

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

Добавлено: 20 мар 2023, 22:13
Indigo-On
Евгений писал(а):Здравствуйте. Не запускается робот. Что не так делаю?
Копирую код, вставляю в текстовый редактор.
сохраняю как sar.qpl
Пытаюсь загрузить в Квик через: Сервисы - QPILE скрипты.
Выдает ошибку: Неверный формат файла описания скриптов - Ошибка синтаксиса.


Добрый день.
Код только для терминала AlfaDirect 4 и не будет работать в Quik. Совсем и никогда.
В Quik свой язык программирования.