Блог им. 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] (цены) выводить как есть в сотых, да в настройках есть смещение, но это смещение для графика!
115
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:
Фото
Список устойчивых ВДО от Иволги Капитал (по оценке самой Иволги)
В качестве эксперимента начинаю обновляемую публикацию «списка устойчивых ВДО» Иволги (возможно, найду более четкое определение). Это список...
Аренадата повысила прогнозы на 2026 год
Ценные бумаги Аренадата на открытии торгов 11 февраля, дорожают на 11,5%, до 108,15 руб. Группа сообщила, что по итогам 2025 года рост ее выручки...
Фото
Давайте вернемся к новостям по бизнесу
Друзья, привет! Вкратце, с начала года мы уже передали покупателям 1 800 ключей от новых квартир в Московском регионе, Санкт-Петербурге и...
Фото
Норникель: отчет за 2025 год вселяет оптимизм, хорошо поработали с расходами и отчитались лучше прогноза, впереди рост прибыли и высокие цены на металлы
Норникель сегодня выпустил отчет за 2025 год Компания заработала 10 рублей чистой прибыли на 1 акцию (за 1-е полугодие 2025 года было 4...

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

....все тэги



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