Динамическое моделирование - страница 2

 
Dmitriy Skub:
Да нормально - просто обмен мнениями. По крайней мере, с моей стороны. Мне просто интересно к чему именно Вы придете, учитывая теоретическую подготовку существенно выше средне-форексной)

Самому интересно.

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

Поэтому - не скрываю и не занимаюсь продажами своих разработок. Стараюсь подробно и доходчиво объяснять - что к чему.

 
Dmitriy Skub:
Посмотрел на торренте - там есть 6я версия с аддоном. Какая у Вас?

Именно она. Не забудьте установить расширение VisSim\Comm

 
Alexander_K:

Именно она. Не забудьте установить расширение VisSim\Comm

Насколько я понял - там есть возможность генерации С-кода. Она есть в базовой версии или только в аддоне?

Если можно скомпилировать и получить в виде ДЛЛ, то необходимость связи с ВИССИМом отпадает тогда (как и сам виссим). Можете в виде си-текста что-нибудь показать?

 

Нет, Дмитрий - не могу и аддона C-Code нет... Идея понятна - сгенерировать С-код и перенести все в MQL. Но, вот есть препятствия, хоть плачь... Есть у меня маленькая надежда, что есть на форуме или среди знакомых форумчан люди, которые имеют необходимые аддоны к VisSim...

Поэтому, исхожу из того, что надо использовать все возможности, которые можно извлечь из текущего положения дел. И если проблему расчета медиан и т.п. можно решить установкой MathCAD, то вот прием данных... DDE ну никак не годится - а я с Нового Года собираюсь все перевести на реальный счет (сейчас работаю на демо-счете). Вот к Новому Году мне надо обязательно решить эту проблему - иначе, боюсь, вот именно из-за этих технических трудностей, мне действительно станет неинтересно.

 

Чтобы работали обе платформы для решения задачи - МТ4 и VisSim, скорее всего придётся делать связку наподобие той, что придумали для R. 

Как по мне, гораздо проще всё перенести в МТ4. Ну это неудобно для Александра, насколько понимаю. 

 
Alexander_K:
 

На С# надо будет только научиться вычислять медианы, средние арифметические, дисперсии.

Думаю, среднее и несмещенную оценку дисперсии вычислить проблем нет, формулы простые. Для медианы тоже просто, но только после сортировки. Ее можно найти и без сортировки, которая для десятков тысяч элементов отнимает много времени. Таких алгоритмов, без сортировки, много. Как я понял, нужен универсальный, не учитывающий никаких особенностей задачи. Вики, "Алгоритм выбора":

Линейный в среднем алгоритм для нахождения k-й порядковой статистики[править | править вики-текст]

Существует алгоритм для нахождения k-й порядковой статистики, основанный на алгоритме быстрой сортировки и работающий за O(n) в среднем.

Идея алгоритма заключается в том, что массив разбивается на две части относительно случайно (равновероятно) выбранного элемента — в одну часть попадают элементы, меньшие, чем выбранный, в другую — остальные (эта операция выполняется за O ( n ) {\displaystyle O(n)} , по её окончанию выбранный элемент находится в позиции j {\displaystyle j} ). Если в первой части оказалось ровно k − 1 {\displaystyle k-1} элементов (j = k {\displaystyle j=k} ), то выбранный элемент является искомым, если j > k {\displaystyle j>k} k}" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f1f23a7d5078710e54d5f8919c026421a72490c8">, то алгоритм выполняется рекурсивно для первой части массива, иначе — для второй (в последнем случае для следующей итерации от k {\displaystyle k} отнимается j {\displaystyle j} ). Рекурсивные вызовы приводят к экспоненциально уменьшающемуся с каждой итерацией размеру обрабатываемого массива, и по этой причине время выполнения алгоритма составляет O ( n ) {\displaystyle O(n)} .


А что, скорость сходимости почти предельная, быстрее O ( n ) {\displaystyle O(n)}  время исполнения вообще не бывает, ведь проверить по одному разу каждый из элементов в любом случае надо. На C# примеров не нашел (но и искал недолго), для C++ есть, например http://www.cyberforum.ru/cpp-beginners/thread2010739.html. Но дата сообщения 27.06.2017 говорит не в пользу проверенности программы.

У меня есть проверенная функция отыскания медианы без сортировки, но, к сожалению, не на C и не на MQL.

P.S. Извините, после вставки Вики-цитаты формулы в ней испортились. Придется сходить на страницу, найти которую можно при поиске "Вики "Алгоритм выбора" - в гугл у меня вышла первой на первой странице.

 
Alexander_K:

Нет, Дмитрий - не могу и аддона C-Code нет... Идея понятна - сгенерировать С-код и перенести все в MQL. Но, вот есть препятствия, хоть плачь... Есть у меня маленькая надежда, что есть на форуме или среди знакомых форумчан люди, которые имеют необходимые аддоны к VisSim...

Поэтому, исхожу из того, что надо использовать все возможности, которые можно извлечь из текущего положения дел. И если проблему расчета медиан и т.п. можно решить установкой MathCAD, то вот прием данных... DDE ну никак не годится - а я с Нового Года собираюсь все перевести на реальный счет (сейчас работаю на демо-счете). Вот к Новому Году мне надо обязательно решить эту проблему - иначе, боюсь, вот именно из-за этих технических трудностей, мне действительно станет неинтересно.

Ну, я поставил 6ю версию. На выходных посмотрю Ваш проект. Не, я не сторонник того, чтобы делать многослойного монстра - виссим-маткад-R-мт и потом долго и упорно искать почему сбоит при работе. Тем более с реальными средствами.

К НГ, думаю, осилим) Как посмотреть какие аддоны установлены?

 
Dmitriy Skub:

Ну, я поставил 6ю версию. На выходных посмотрю Ваш проект. Не, я не сторонник того, чтобы делать многослойного монстра - виссим-маткад-R-мт и потом долго и упорно искать почему сбоит при работе. Тем более с реальными средствами.

К НГ, думаю, осилим) Как посмотреть какие аддоны установлены?


Приветствую, Дмитрий!

Согласен с таким подходом к делу. Но, все-таки я больше теоретик, алгоритмист - мне удобнее работать в VisSim. Я могу достаточно быстро проверить хорошие идеи - свои и чужие. Беда в том, что на форуме и идей-то никаких нет. Читаю - просто ужас какой-то. Просто поражаюсь сумбуру в головах людей. Ну, да, ладно.

А аддоны - те, которые установишь. Я пользуюсь связкой VisSim+VisSim/Comm c лицензией Motion

 

Написал два алгоритма медианы. Первый влоб, на сортировке, а второй с хитростями.

Покрутил алгоритм на предмет оптимизации, ничего особо выжать нельзя, Быстрая сортировка реализованная в стандартном ArraySort настолько быстра, и копирование данных настолько оптимизировано на уровне компилятора, что обогнать её ни какой оптимизацией не выходит.

Обогнал чутка, но не существенно, оптимизированный алгоритм на скользящем окне 1000 бар и 100000 баров на чарте, проходит за 17 381 436 микросекунд, это 17с.

А не оптимизированный за 17 545 714, те же 17с

Индюк в прикрепе.

ЗЫ А забыл сказать что всё это считалось на офисном Core2Duo 32бита с 2Гб Ram.

расчёт с окном 20 000, на тех же 100 000 баров на чарте прошёл за 314 106 205, 314с, то есть 5 минут.

В общем не вижу смысла в оптимизации, MQL5 очень быстрый язык, и все расчёты нужно переносить на терминал. Определятся с моделью в Vissim и переносить всё в MQL5.



Файлы:
 
Nikolay Demko:

Написал два алгоритма медианы. Первый влоб, на сортировке, а второй с хитростями.

Покрутил алгоритм на предмет оптимизации, ничего особо выжать нельзя, Быстрая сортировка реализованная в стандартном ArraySort настолько быстра, и копирование данных настолько оптимизировано на уровне компилятора, что обогнать её ни какой оптимизацией не выходит.

Обогнал чутка, но не существенно, оптимизированный алгоритм на скользящем окне 1000 бар и 100000 баров на чарте, проходит за 17 381 436 микросекунд, это 17с.

А не оптимизированный за 17 545 714, те же 17с

Индюк в прикрепе.




Гениально, Николай! Вот это - дело!

Причина обращения: