Блог им. 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] (цены) выводить как есть в сотых, да в настройках есть смещение, но это смещение для графика!

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.

116
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

Читайте на SMART-LAB:
Фото
Итоги первичных размещений ВДО и некоторых розничных выпусков на 7 мая 2026 г.
Следите за нашими новостями в удобном формате:  Telegram ,  Youtube ,  RuTube,   Smart-lab ,  ВКонтакте ,  Сайт
Переток между депозитами и рынком капитала – какой механизм его запускает?
Переток средств между банковскими депозитами и рынком капитала в российской экономике – это не просто следствие изменения ставок. Это отражение...
Фото
Идея от аналитиков БКС: облигации Полипласта с доходом до 23% за год
Полипласт в среду, 20 мая, будет собирать книгу заявок на биржевые рублевые облигации серии П02-БО-16 со сроком обращения три года (1080 дней)....
Фото
Сети. Кто сейчас самый дешевый? Сводный пост по сетевым компаниям по отчетам РСБУ за Q1 26г.
Введение Россети Центр Россети Ленэнерго Россети Московский регион Россети Волга Сводные таблицы Введение Все...

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

....все тэги



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