Купить опционы выгодно

Страницы: 1
RSS
Купить опционы выгодно
 
Добрый день. Подскажите нюансы покупки опциона роботом.
Если я правильно понимаю, чтобы покупать выгодно, нужно покупать по цене ниже теоретической. Насколько знаю, эта цена меняется не часто и при резком изменении фьючерса может запаздывать.

Написал код в функции OnQuote

Код
function OnQuote(class_code, sec_code)
   if class_code == CLASS_CODE_OPT and sec_code == SEC_CODE_OPT and MayOpt then
      ql2 = getQuoteLevel2(class_code, sec_code)
      if tonumber(ql2.offer[1].price+0) ~= nil and tonumber(ql2.offer[1].price+0) <= tonumber(getParamEx(class_code, sec_code, "theorprice").param_value+0) then
         PRICE_OPT = ql2.offer[1].price+0
         MayOpt = false
      end
   end
end

и в OnParam.
Код
function OnParam(class, sec)
   -- если изменилась цена опциона, включить флаг, чтобы посмотреть стакан
   if class == CLASS_CODE_OPT and sec == SEC_CODE_OPT and not MayOpt then
      MayOpt = true 
   end
end
Т.е., как думал, если меняется параметр опциона, иду в стакан и сравниваю офер с теоретической ценой. Но OnParam вызывается при любом изменении параметра опциона? Как отследить изменение именно теории и тогда только смотреть стакан?

Или я мудрю и можно более лаконично набрать опционы по выгодной цене?
 
Я так понимаю, отследить изменение именно теоретической цены опциона нельзя или просто никто не знает? Что маловероятно)) Конечно, если она меняется явно, то это можно выловить, а если цена обновилась, но осталась прежней?
 
Цитата
Женя написал:
Как отследить изменение именно теории и тогда только смотреть стакан?
Например проверять только нужный параметр через getItem.

Цитата
Женя написал:
Я так понимаю, отследить изменение именно теоретической цены опциона нельзя или просто никто не знает?
Можно.

Цитата
Женя написал:
Конечно, если она меняется явно, то это можно выловить, а если цена обновилась, но осталась прежней?
Смотрите в событии CreateDataSource по нужному параметру
 
Спасибо за направление
 
Цитата
Sergey Gorokhov написал:
Например проверять только нужный параметр через getItem.
Если подскажите еще какую имеете в виду таблицу))

Цитата
Sergey Gorokhov написал:
Смотрите в событии CreateDataSource по нужному параметру
Для этого нужно построить график теоретической цены опциона? А каким образом? Я не смог найти в терминале.
 
Цитата
Женя написал:
ЦитатаSergey Gorokhov написал:
Например проверять только нужный параметр через getItem.Если подскажите еще какую имеете в виду таблицу))

тут имеет место ошибка. имелась ввиду функция getParamEx

Цитата
Женя написал:
Sergey Gorokhov написал:
Смотрите в событии CreateDataSource по нужному параметру
Для этого нужно построить график теоретической цены опциона? А каким образом?

для CreateDataSource не нужно строить график. функция сама закачает нужные данные.

Цитата
Женя написал:
Я не смог найти в терминале.

правой кнопкой мыши по значению в таблице текущих торгов и там выбрать график
 
Цитата
Sergey Gorokhov написал:
тут имеет место ошибка. имелась ввиду функция getParamEx
Да, с ее помощью я получаю теоретическую цену. Но если цена обновилась и осталась прежней, то, простите, не могу сообразить, как с помощью getParamEx понять, что она обновилась?

Цитата
Sergey Gorokhov написал:
правой кнопкой мыши по значению в таблице текущих торгов и там выбрать график
Опять же простите, но не вижу
 
Цитата
Женя написал:
Опять же простите, но не вижу
правой кнопкой мыши по значению в таблице текущих торгов и там выбрать график

Цитата
Женя написал:
Да, с ее помощью я получаю теоретическую цену. Но если цена обновилась и осталась прежней, то, простите, не могу сообразить, как с помощью getParamEx понять, что она обновилась?

Цитата
Sergey Gorokhov написал:
Смотрите в событии CreateDataSource по нужному параметру
 
Цитата
Sergey Gorokhov написал:
правой кнопкой мыши по значению в   таблице текущих торгов   и там выбрать график
Не туда щелкнул, спасибо за терпение, нашел)) Только у меня график стоит и показывает до закрытия вчерашнего дня. У меня демо, это из-за него?
Цитата
Sergey Gorokhov написал:
Смотрите в событии CreateDataSource по нужному параметру
Да, спасибо, написал:
Код
ds = CreateDataSource("SPBOPT", "RI95000BI6", INTERVAL_M1, "theorprice")
LastOpen = ds:O(ds:Size())
Выдает закрытие вчерашнего дня. Теперь, проверяя параметр Size() на изменение, можно уверенно сказать, что прошло обновление теоретической цены?
Из-за того, что график стоит, не могу проверить сам.
 
Цитата
Женя написал:
Не туда щелкнул, спасибо за терпение, нашел)) Только у меня график стоит и показывает до закрытия вчерашнего дня. У меня демо, это из-за него?

Проверьте настройки терминала меню Система - Настройки - Основные настройки
в "Получение данных" установить галку "Исходя из настроек открытых пользователем таблиц"
в "Сохранение данных" установить галку "Данные, отражающие текущее состояние и всю историю изменений" и "Получать пропущенные данные"

Цитата
Женя написал:
Выдает закрытие вчерашнего дня. Теперь, проверяя параметр Size() на изменение, можно уверенно сказать, что прошло обновление теоретической цены?

Все проще, достаточно установить колбек через SetUpdateCallback
 
Про SetUpdateCallback следует отметить что в него будут поступать вообще все данные по нужному параметру, а не только текущие.
Поэтому проверяйте индекс чтобы была последняя свеча.
 
Цитата
Sergey Gorokhov написал:
Проверьте настройки терминала меню Система - Настройки - Основные настройки
в "Получение данных" установить галку "Исходя из настроек открытых пользователем таблиц"
в "Сохранение данных" установить галку "Данные, отражающие текущее состояние и всю историю изменений" и "Получать пропущенные данные"
Спасибо, все появилось.

Цитата
Sergey Gorokhov написал:
Все проще, достаточно установить колбек через SetUpdateCallback
Ок, я сделал так:
Код
ds = CreateDataSource("SPBOPT", "RI95000BI6", INTERVAL_M1, "theorprice")
lastCandleIndex = ds:Size()
ds:SetUpdateCallback(ddd)

function ddd(idx)
   if idx > lastCandleIndex then
      message('Свеча закрылась. Ее цена закрытия Close = '..ds:C(idx))
      lastCandleIndex = idx
   end
end

Но чем предыдущий код отличается от этого:
Код
new = getParamEx("SPBOPT", "RI95000BI6", "theorprice").param_value+0
if new ~= last then
   message("новое значение "..new)
end
last = new
Выдают они в одно и то же время одно и то же значение. Или я опять в коде с CreateDataSource намудрил?
Если посмотреть на график теоретической цены, то на нем нет горизонтальных линий. Лишь экстремумы, правда не с интервалом в 1 минуту.



Т.е. обновление теории на то же самое значение не бывает и я зря вас мучаю? Достаточно просто ждать актуального изменения и работать?
 
Цитата
Женя написал:
Выдают они в одно и то же время одно и то же значение.
А что должны выдавать разные?
Изменился способ получения данных но не сами данные.

Цитата
Женя написал:
Т.е. обновление теории на то же самое значение не бывает и я зря вас мучаю? Достаточно просто ждать актуального изменения и работать?
Спорный вопрос, тем более если говорить о демо сервере.
 
Цитата
Sergey Gorokhov написал:
А что должны выдавать разные?
Изменился способ получения данных но не сами данные.
Ну да, просто второй код проще.

Цитата
Sergey Gorokhov написал:
Спорный вопрос, тем более если говорить о демо сервере.
Ясно, спасибо. Буду проверять и на реале.
 
Цитата
Женя написал:
Цитата
Sergey Gorokhov   написал:
Проверьте настройки терминала меню Система - Настройки - Основные настройки
в "Получение данных" установить галку "Исходя из настроек открытых пользователем таблиц"
в "Сохранение данных" установить галку "Данные, отражающие текущее состояние и всю историю изменений" и "Получать пропущенные данные"
Спасибо, все появилось.
Цитата
Sergey Gorokhov   написал:
Все проще, достаточно установить колбек через SetUpdateCallback
Ок, я сделал так:
Код
  ds  =   CreateDataSource ( "SPBOPT" ,  "RI95000BI6" , INTERVAL_M1,  "theorprice" )
lastCandleIndex  =  ds: Size ()
ds: SetUpdateCallback (ddd)

 function   ddd (idx)
    if  idx  >  lastCandleIndex  then 
       message ( 'Свеча закрылась. Ее цена закрытия Close = '  .. ds:C(idx))
      lastCandleIndex  =  idx
    end 
 end 
  

Но чем предыдущий код отличается от этого:
Код
  new  =   getParamEx ( "SPBOPT" ,  "RI95000BI6" ,  "theorprice" ).param_value +  0 
 if  new ~ =  last  then 
    message ( "новое значение "  .. new)
 end 
last  =  new
  
Выдают они в одно и то же время одно и то же значение. Или я опять в коде с CreateDataSource намудрил?
Если посмотреть на график теоретической цены, то на нем нет горизонтальных линий. Лишь экстремумы, правда не с интервалом в 1 минуту.

   

Т.е. обновление теории на то же самое значение не бывает и я зря вас мучаю? Достаточно просто ждать актуального изменения и работать?
В первом случае Вы получаете все значения.
Во втором лишь значения из срезов пришедших в ТТП. Т е во втором случае возможны пропуски.
 
Цитата
Николай Камынин написал:
В первом случае Вы получаете все значения.
Во втором лишь значения из срезов пришедших в ТТП. Т е во втором случае возможны пропуски.
А можете подробней расписать, что могу пропустить? Значение теоретической цены? В каком случае?
Запускал на проверку на полчаса и получал одинаковые данные от обоих вариантов в одно и то же время.
 
Цитата
Женя написал:
Цитата
Николай  Камынин   написал:
В первом случае Вы получаете все значения.
Во втором лишь значения из срезов пришедших в ТТП. Т е во втором случае возможны пропуски.
А можете подробней расписать, что могу пропустить? Значение теоретической цены? В каком случае?
Запускал на проверку на полчаса и получал одинаковые данные от обоих вариантов в одно и то же время.

Николай говорит о том что в SetUpdateCallback вы получаете поток данных, а getParamEx возвращает данные по запросу.
а раз по запросу, значит есть шанс пропустить изменение значений. Другой вопрос защищена ли логика скрипта от пропусков. Если правильно вызывать getParamEx в OnParam то конечно риск сводится к минимуму или вообще отсутствует. Но возникает проблема когда предыдущее значение равно новому.
И именно по этому Вам была дана рекомендация использовать SetUpdateCallback где если сработало значит изменение было.
Конечно гуру форума могут поправить, что SetUpdateCallback или getParamEx на самом деле ловят не все изменения которые были на бирже.
так как сами по себе данные по параметрам инструментов попадают на сервер также по запросу (раз в период)
 
Sergey Gorokhov, все понял, спасибо. Мне в принципе не важен каждый тик, я просто не хотел упускать момент обновления теории по той же цене, что была до этого... Хотя в принципе и это уже не важно, поправил код.
Страницы: 1
Читают тему
Наверх