Автор |
Сообщение |
Torino
Зарегистрирован: 27.01.2009
Сообщения: 72
|
Олег объясните пожалуйста что вы вычисляете в следующем коде
(код взят из робота, вычисление значения отступа):
Код: |
Otstup = round(LastValue(C)*Otstup/100/TickSize)*TickSize;
form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize))))); |
|
_________________ Андрей
Your my your... |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Torino писал(а): |
Олег объясните пожалуйста что вы вычисляете в следующем коде
(код взят из робота, вычисление значения отступа):
Код: |
Otstup = round(LastValue(C)*Otstup/100/TickSize)*TickSize;
|
|
Тут определяется значение отступа от текущей цены с учетом размера тика. Дело в том, что если в заявке стоит цена не соответствующая реальным ценам инструмента (слишком много десятичных знаков, или шаг 5, а в заявке последняя цифра 2), то квик поругается и проигнорирует заявку.
Torino писал(а): |
Код: |
form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize)))));
|
|
Определяется формат цены (число десятичных знаков). Если их будет слишком много, то заявка не пройдет. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Torino
Зарегистрирован: 27.01.2009
Сообщения: 72
|
Не совсем понятно.
Почему нельзя просто округлить значение C+Otstup до количества знаков после запятой, такого же как в TickSize ? |
_________________ Андрей
Your my your... |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А если тик равен 5 (как например на фьюче на РТС), а в заявке будет цена 52721 ? Квик просто пошлет... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Torino
Зарегистрирован: 27.01.2009
Сообщения: 72
|
Затея понятна. Реализация нет ))
Буду разбираться.
Спасибо ) |
_________________ Андрей
Your my your... |
|
Посмотреть профиль Отправить личное сообщение |
|
Hardez
Зарегистрирован: 28.01.2009
Сообщения: 6
|
Torino писал(а): |
Затея понятна. Реализация нет ))
Буду разбираться.
Спасибо ) |
))) Тут особой магии нет, только здравый смысл. Алгоритм ращета примерно таков:
Округление( ПоследнееЗначение(ПосленяяЦена)*ОтступВдолях/100{преобразование долей в %}/ВеличинаШагаЦены)*ВШЦ
выражаясь еще проще если у вас значение при появлении сигнала*отступ(скажем в 0.1%)=59873.66 то эта формула перобразует его про принцыпу (Округление(59873.66/5))*5 ,а точнее округление(11974.732)*5~~11975*5=59875 вауля, теперь Фортс не будет присылать уведомления типа "Цена не кратна шагу цены" и зявки будут спокойно выполняца.
________
Успехов. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
pitero
Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург
|
Torino писал(а): |
Затея понятна. Реализация нет ))
Буду разбираться.
Спасибо ) |
у меня так вот для фьючерсов например
Код: |
Spred=IIf(StrMid(Name(),0,2)=="RI",5,1);
// до спрэда округляем
SellPrice=int(SellPrice/10)*10+IIf(frac(SellPrice/10)*10>=Spred,Spred,0);
CoverPrice=int(CoverPrice/10)*10+IIf(frac(CoverPrice/10)*10>=Spred,Spred,0);
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
|