Стратегии и роботы > Оптимизация стратегии (убыток НПУ)

Обсуждение, описание стратегий и роботов, идеи для стратегий
RuDi
Сообщения: 11
Зарегистрирован: 01 июл 2022, 08:11
Благодарил (а): 1 раз

Re: Оптимизация стратегии (убыток НПУ)

Непрочитанное сообщение RuDi » 03 сен 2022, 11:01

Добрый день.

Если LongLimit или ShortLimit достигает своего лимита, то условие (CurrentPL() <= -SL) не срабатывает. Если же лимит не достигнут, все прекрасно работает. В чем может быть дело?

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

function Initialize()
{
...
   AddParameter("SL", 10000, "Сумма убытка", 1);
...     
}

function OnUpdate()
{
...   
   if ((Input1.Close >= (AverPrice() + ClosePos)) || (CurrentPL() <= -SL))
      {
         EnterShort(1);
      }
...
}

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

Re: Оптимизация стратегии (убыток НПУ)

Непрочитанное сообщение evge » 03 сен 2022, 11:08

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

RuDi
Сообщения: 11
Зарегистрирован: 01 июл 2022, 08:11
Благодарил (а): 1 раз

Re: Оптимизация стратегии (убыток НПУ)

Непрочитанное сообщение RuDi » 03 сен 2022, 11:12

evge писал(а):думается что условие всё же срабатывает, просто заявка не отправляется из-за лимита, что логично.

Но заявка на противоположное действие. Если я был в лонге и достиг SL выставляется заявка на шорт. Почему робот учитывает лимит и как это можно обойти?

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

Re: Оптимизация стратегии (убыток НПУ)

Непрочитанное сообщение evge » 03 сен 2022, 11:17

чтобы точно быть уверенным что позиция противоположная, нужно ещё условие добавлять

CurrentPosition() > 0
никогда такого не было и вот опять

RuDi
Сообщения: 11
Зарегистрирован: 01 июл 2022, 08:11
Благодарил (а): 1 раз

Re: Оптимизация стратегии (убыток НПУ)

Непрочитанное сообщение RuDi » 03 сен 2022, 11:20

У меня это прописано так:

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

   if (CurrentPosition() > 0) // лонговая позиция
   {
      double Kol_Pos = CurrentPosition();
      double Step = Kol_Pos * K_Step;
      double ClosePos = SummaProfita / Kol_Pos;
      if (Input1.Close <= AverPrice() - Step)
         {
            EnterLong(Lot);
         }
      if ((Input1.Close >= (AverPrice() + ClosePos)) || (CurrentPL() <= -SL))
         {
            EnterShort(Lot);
         }
   }


Это не корректно?

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

Re: Оптимизация стратегии (убыток НПУ)

Непрочитанное сообщение evge » 03 сен 2022, 11:24

нет, если учесть что может выполнятся условие выше, раньше чем сработает -SL, т.е. стоп не выполнится т.к. перед ним будет постоянно выполнятся EnterLong(Lot) - ограниченное лимитом

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

      if (Input1.Close <= AverPrice() - Step)
         {
            EnterLong(Lot);
         }


поставить так

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

if (CurrentPosition() > 0) // лонговая позиция
   {
      double Kol_Pos = CurrentPosition();
      double Step = Kol_Pos * K_Step;
      double ClosePos = SummaProfita / Kol_Pos;
      if ((Input1.Close >= (AverPrice() + ClosePos)) || (CurrentPL() <= -SL))
         {
            EnterShort(Lot);
         }
else
      if (Input1.Close <= AverPrice() - Step)
         {
            EnterLong(Lot);
         }
   }
никогда такого не было и вот опять


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

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

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