Скачать MetaTrader 5

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

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

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

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

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

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

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

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

Alexey Navoykov
3988
Alexey Navoykov 2012.10.07 10:41  
wmlab:

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

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

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


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

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

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

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

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

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