Блог им. RomanSSS

Аномалия WLD

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

К примеру: есть часовая свеча индекса РТС:

Open: 740,94 
High: 742,33 
Low: 740,59 
Close: 732,67 

Подключаю эти данные через файл MS к WLD4.
 
И в WLD она отражается, уже следующим образом:

Open: 740,940002441406
High: 742,330017089844
Low: 740,590026855469
Close: 732,679992675781

Проверяю исходняк, не каких изменений,  все данные только в пределах сотых.
 
Вопрос:
1. каким образом WLD округляет до триллионных (откуда он эти цифры берёт, точней что прибавляет)?
2. Как его заставить @#High[Bar] (цены) выводить как есть в сотых, да в настройках есть смещение, но это смещение для графика!
32 комментария
А как математически это повторить. Просто мне нужно перенести стратегию из WLD в C#, и не получается из-за этой разницы. На C# нужно симулировать точную копию этой ошибки.
avatar
WildTraider, в C# должно быть точно так же, посмотри в режиме отладки.
avatar
Kaiman, я о том же, алгоритм не могу нагуглить.
avatar
Может в опциях настроек Вэлса ограничить число знаков после запятой  !?
avatar
alt, это ограничение для графика.
avatar
Ок. Откуда качаем данные чем какие- попробую глянуть у себя. Вроде не сталкивался с подобным…
avatar
alt, данные обычные с Финама. Я в топике написал, что проверил MS файл не раз, там всё правильно:

Open: 740,94 
High: 742,33 
Low: 740,59 
Close: 732,67

не каких триллионных нет, это в самом WLD меняеться, а вот как — вот это вопрос!

Используйте дебарг: print('High: '+ FloatToStr( @#High[Bar]));
avatar
Kaiman, 732,67 -> 732,679992675781 настораживает только )
Чему вы удивляетесь. В WLD  серия баров (Open, High, Low, Close) имеет тип double. Если нужен другой — преобразуйте.
avatar
Karim, и причём здесь double?
avatar
Косяк при загрузке данных. У меня такого не возникало, ни при закачке данных, ни при переносе стратегий на C#.
avatar
Karim, не уверен вот WLD4 — загружаю c MS, загружаю с TXT — одним боком!
avatar
WildTraider, Про WLD4 ничего не могу сказать. Загружаю *.csv файлы в WLD 6.4. И  если в файле число 41.150000, то оно преобразуется в 41.15
avatar
Karim, на графике может оно и преобразуеться, вы через дебарг проверяли?
avatar
WildTraider, Дебарг это что? 
Считается все корректно, переносится в С# и там все норм. Все сделки (вход/выход) робота на С# и WLD совпадают.
Если же пытаться вывести Open через print, то надо понимать, что это тип double и нужно указывать формат вывода.
avatar
Kaiman, а как вы округляете?
avatar
Пока не понятно. На графике всё ок… А по print('High: '+ FloatToStr( @#High[Bar]));

High: 1152.31005859375
High: 1154.80004882813
High: 1156.48999023438


avatar
alt, на графике он режет, а в реале нет, но отрезать не проблема (лишний цикл правда писать), а вот как преобразовать 732,67 -> 732,679992675781 — вот загадка! Или хотя бы свести всё под один стандарт.
avatar
не могу пока ничего посоветовать на сей счёт. Мож на Пауке
полистай ветку по Вэлсу..
При случае попробую спросит у ребят которые более продвинуты в нём

avatar
alt, она в обще ко всем исчислениям хвост цепляет:

 High := StrToFloat(FormatFloat('#,##0.00',@#High[Bar])) — StrToFloat(FormatFloat('#,##0.00',@#High[Bar-1]))
 
High  =  0,0600128173828125
avatar
WildTraider, лишние цифры возникают т.к. в double нельзя точно отразить некоторые числа. У Float точность еще ниже, так что не стоит его использовать!!! В метатрейдере для точного отображения цены есть функция NormalizeDouble, в ВЛД должно быть что-то аналогичное.  про float вообще забудь!
avatar
Чёрный кот, я на Дельфи не особо специализируюсь, но там кроме float double не предусмотрен. И как в самом WLD решить эту проблему я не нашёл. Так что 2-а вопроса в силе!
avatar
WildTraider, вроде как float в WLD 4 и есть double. В общем все упирается в точность double. Но как решить хз, я никогда не писал под WLD 4, да и не вижу смысла использовать древнюю систему, с таким корявым языком программирования.
avatar
WildTraider, вроде при работе системы в вэлсе берутся реальные Хай, Лоу....-  как на графике !?
avatar
alt, нет, график это вообще конечные цифры с отрезанными хвостами. Используйте print
avatar
alt, надо ещё понять как это в WLD вырубить, а то что за бред, тестить систему которую без ошибки нельзя реализовать на друх платформах.
avatar

теги блога mr.Potter

....все тэги



UPDONW
Новый дизайн