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

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

Добавлено: 24 авг 2022, 09:45
RuDi
Добрый день.

Оптимизатор ругается на отрицательное значение параметра. Пытаюсь оптимизировать значение убытка при котором будут выполняться определенные действия. Как избежать ошибки? Даже тестирование не запускается, точнее запускается, но бесконечно висит на "формировании сигналов".

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

AddParameter("Stop", -10000, "Сумма убытка", 1);

if ((Input1.Close >= (AverPrice() + ClosePos)) || (CurrentPL() <= Stop))

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

Добавлено: 24 авг 2022, 23:13
evge
оно идёт от минимума к максимуму с шагом

Мин. надо задать меньше чем Макс. а шаг задать положительным и тогда всё должно заработать.

т.е. последние 3 параметра изменятся на такие:

Мин. = -10000
Макс. = -1000
Шаг = 1000

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

Добавлено: 25 авг 2022, 06:34
RuDi
Тогда надпись "идет оптимизация" висит бесконечно

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

Добавлено: 25 авг 2022, 06:42
evge
весь код не видно, поэтому только гадать, если представленную часть посмотреть

это условие на стоплосс?

тогда здесь, возможно, ошибка в условии (вижу поправили уже выше)

CurrentPL() >= Stop

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

CurrentPL() <= Stop

и вообще, ничего не мешает задавать параметры положительными, а в скрипте проверять со знаком минус, а так же не называл бы параметры с большой вероятностью близкими к ключевым словам (Stop, Close и т.д.).

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

AddParameter("SL", 10000, "Сумма убытка", 1);

if ((Input1.Close >= (AverPrice() + ClosePos)) || (CurrentPL() <= -SL))


из документации:

stop-01.png
stop-01.png (1.84 КБ) 22194 просмотра

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

Добавлено: 25 авг 2022, 06:52
RuDi
Если я вошел в лонг, но профит достиг своей цели или позиция дала придельный убыток, то переворачиваюсь в шорт.

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

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

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


без приписки (CurrentPL() <= Stop)) все прекрасно работает

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

Добавлено: 25 авг 2022, 06:56
RuDi
Написал как указали Вы,

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

AddParameter("SL", 10000, "Сумма убытка", 1);

if ((Input1.Close >= (AverPrice() + ClosePos)) || (CurrentPL() <= -SL))


Тестирование стратегии умирает. Бесконечно висит "формирование сигналов"

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

Добавлено: 25 авг 2022, 06:57
evge
параметры изменили при этом? т.к. теперь они должны быть не отрицательными, т.к. оно запоминает их с предыдущих тестов и потимизаций.

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

Добавлено: 25 авг 2022, 06:59
RuDi
Да, конечно.

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

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

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

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

Добавлено: 25 авг 2022, 07:00
evge
отлично, уверен что мой тоже рабочий, но по понятным причинам проверить это не могу, главное что вы разобрались и ваш вариант работает.

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

Добавлено: 25 авг 2022, 07:02
RuDi
Не знаю с чем связано, но перезапустил терминал, заработало. Спасибо.