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

Закрытие позиции при достижении ПУ на фьючерсе

Добавлено: 21 сен 2018, 20:23
Balalayka
Всем доброго дня!
Прошу помочь с проблемой,

Вот пример части простенького кода на долларовом фьючерсе

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

if ( (CurrentPL() >= P1) )
   {
      CloseLong()


где P1 - это целое число.
При исполнении кода не происходит закрытие позиции, даже если заменить целое число на ПУ в %, если указать P1 как число с десятыми или сотыми вообще выдает ошибку.
Догадываюсь что проблема в понимании роботом значения ПУ по долларовым фьючам, но не знаю как понять идет ли оно в рублях или пунктах или еще в чем-либо?
Смотрел в сторону функций PriceStep, PriceStepCost, но кажется не туда копаю.

Большая просьба помочь сориентироваться!

Re: Закрытие позиции при достижении ПУ на фьючерсе

Добавлено: 21 сен 2018, 21:19
evge
Здравствуйте!

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

CurrentPL() – возвращает текущий доход по открытой позиции в валюте инструмента (рубли или пункты).

ещё в последнем обновлении есть:

GetFinInfo() – функция возврата информации по инструменту, используемому в стратегии
• Lot– Размер торгового лота, штук (аналог LotSize()). Тип int
• PriceStep – Текущая стоимость шага цены шаг цены (аналог GetPriceStep()). Тип double
PriceStepCost – Текущая стоимость шага цены. Тип double
• UpPrice – Верхний предельный уровень цены заявки. Тип double
• DownPrice – Нижний предельный уровень цены заявки. Тип double
• GtBuy – Гарантийные требования биржи для открытия длинной позиции, руб/шт. Тип double
• GtSell – Гарантийные требования биржи для открытия «короткой» позиции, руб/шт. Тип double

Re: Закрытие позиции при достижении ПУ на фьючерсе

Добавлено: 24 сен 2018, 10:49
Balalayka
Спасибо!
Все получилось, как обычно ошибка была в мелочах.
Я так понимаю, что тестирование стратегий на долларовых парах работает не корректно? У меня в ПУ по итогам тестирования отображаются убытки в виде комиссий, у всех так?

Еще можно вопрос, функция GetFinInfo() в каком разделе должна использоваться: OnUpdate() или Initialize?

Re: Закрытие позиции при достижении ПУ на фьючерсе

Добавлено: 24 сен 2018, 17:05
evge
Balalayka писал(а):функция GetFinInfo() в каком разделе должна использоваться: OnUpdate() или Initialize?


в OnUpdate()

Re: Закрытие позиции при достижении ПУ на фьючерсе

Добавлено: 25 сен 2018, 10:11
vdm
Balalayka писал(а):Спасибо!
Все получилось, как обычно ошибка была в мелочах.
Я так понимаю, что тестирование стратегий на долларовых парах работает не корректно? У меня в ПУ по итогам тестирования отображаются убытки в виде комиссий, у всех так?
Initialize?

Нужно комисию указывать не в рублях , а в пунктах цены. Например для BRV8 - шаг цены 0,01 , стоимость шага 6.58551 в $ . Комисссия в пунктах = 0,01 / (66(курс $)*6.58551) *Комиссию (руб)

Re: Закрытие позиции при достижении ПУ на фьючерсе

Добавлено: 28 сен 2018, 15:45
Balalayka
Спасибо всем!
Если кто-то из новичков наткнется на тему, то формула расчета комиссии также есть на оф.сайте Moex
Также удобно смотреть шаг цены, стоимость шага и соответственно комиссию в рублях в профиле инструмента там же на Moex