Скачать MetaTrader 5

MQL4 - как организовать асинхронные вычисления?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Murad Ismayilov
1810
Murad Ismayilov  
Пишу автооптимизирующийся советник. Столкнулся с проблемой долгого вычисления (порядка минуты и более) оптимальных параметров. В обычной программе (C++,C#) я бы выделил вычисления в отдельный поток. А как это сделать на MQL4? Искал, не нашел. Кто-нибудь подскажет?
Vadim Zhunko
5229
Vadim Zhunko  
wmlab:
Пишу автооптимизирующийся советник. Столкнулся с проблемой долгого вычисления (порядка минуты и более) оптимальных параметров. В обычной программе (C++,C#) я бы выделил вычисления в отдельный поток. А как это сделать на MQL4? Искал, не нашел. Кто-нибудь подскажет?
Можно использовать несколько советников или скриптов. Пользовал скрипты, как дополнительные потоки. Запускал их из советника. Потом надоело это баловство и перешёл на С++.
Murad Ismayilov
1810
Murad Ismayilov  
Zhunko:
Можно использовать несколько советников или скриптов. Пользовал скрипты, как дополнительные потоки. Запускал их из советника. Потом надоело это баловство и перешёл на С++.

Да, скрипт, как "грязное" решение, подойдет. Передача оптимальных значений от скрипта советнику возможна через файл. Просто хотелось бы это сделать более красиво.
Василий
75
Василий  

А вы вычисляйте оптимум не на всем пространстве параметров, а только в некоторой окрестности предыдущего оптимума.

По теме: вроде можно зациклить советник, а котировки обновлять "вручную", было на форуме. Получите один поток, но управляемый, с которым можно делать что угодно.

Yury Reshetov
13489
Yury Reshetov  
wmlab:
Пишу автооптимизирующийся советник. Столкнулся с проблемой долгого вычисления (порядка минуты и более) оптимальных параметров. В обычной программе (C++,C#) я бы выделил вычисления в отдельный поток. А как это сделать на MQL4? Искал, не нашел. Кто-нибудь подскажет?

А толку? MQL4 все вычисления выполняет на одном ядре. Т.е. если даже кто-то и замутит кооперативную или вытесняющую многозадачность, то производительность от этого только упадет, т.к. понадобятся некоторые вычислительные ресурсы на обслуживание нитей.

Так что, мечтать не вредно.

Alexey Navoykov
4885
Alexey Navoykov  
wmlab:

Да, скрипт, как "грязное" решение, подойдет. Передача оптимальных значений от скрипта советнику возможна через файл. Просто хотелось бы это сделать более красиво.

Так а чем не устраивает перенос основных расчётов в DLL? Решение в виде скрипта - это ведь всё-равно очень медленно, а главное - ненадёжно. Если уж так хочется обойтись без DLL, то тогда лучше два параллельно работающих советника.
Yury Reshetov
13489
Yury Reshetov  
Meat:

Если уж так хочется обойтись без DLL, то тогда лучше два параллельно работающих советника.
Хоть один, хоть два. Ускорения от распараллеливания процессов в МТ4 не будет. Ведь топикстатеру нужно повысить производительность, а не мутить многозадачность ради многозадачности.
Dmitry Fedoseev
47016
Dmitry Fedoseev  
wmlab:
Пишу автооптимизирующийся советник. Столкнулся с проблемой долгого вычисления (порядка минуты и более) оптимальных параметров. В обычной программе (C++,C#) я бы выделил вычисления в отдельный поток. А как это сделать на MQL4? Искал, не нашел. Кто-нибудь подскажет?


То что было в start у обычного советника - в отдельную функцию (будет торгующая функция). Из цила оптимизации периодически вызывать эту торгующую функцию.

Или два советника, один постоянно в режиме самооптимизаци, по окончанию цикла оптимизации каким-нибуь образом передает параметры торгующему советнику. 

Dmitry Fedoseev
47016
Dmitry Fedoseev  
Или еще посложнее, но зато с полной идентичностью работы в тестере и в реале. За один вызов start прогонять не всю оптимизацию, а только несколько ее циклов.
Vadim Zhunko
5229
Vadim Zhunko  
wmlab:

Да, скрипт, как "грязное" решение, подойдет. Передача оптимальных значений от скрипта советнику возможна через файл. Просто хотелось бы это сделать более красиво.
Данные через маппинг передавал. DLL значительно быстрее работает. Раз в 20. Видел, как DLL оба ядра напрягает.
Рустам
3597
Рустам  

Начиная с 432 билда наблюдаю такую картинку :

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий