![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
И OnChartEvent - уже третий поток. Ура, мы кликнули и ждем. Что-то опять ушло на обработку. Как вы считаете, нужна ли здесь синхронизация, если вычисления события одного тика занимают хотя бы больше 50 миллисекунд?
а забыл, второй поток OnTimer куда можно скидывать всякий вычислительный продолжительный мусор
А вот "доп. расчетные потоки" - это реально кайф. Заводим свой какой-то контекст расчета, старт, стоп, результ - это очень похоже на таски с CL кстати.
Да, напомню, у эксперта один поток на все.
За мультипотоками - к индюкам.
Кстати, мы через некоторое время введем понятие сервисов.
В терминале можно будет запускать независимо множество сервисов, не привязанных к чартам/счетам и работающих постоянно вне зависимости от подключений/переключений к счетам.
Это будет являться основой для написания независимых датафидов, а также позволит использовать дополнительные расчетные потоки.
Вот бы требующих мультипотоков и прямых указателей схлестнуть с теми, для кого 'MT4 - наше все" и "MQL5 сложнее".
Это, конечно, было бы прорывным шагом! Я сразу представил, как это можно вкусно использовать )
А насчет "MQL5 сложнее" - у всех же разный уровень. Ведь почему-то новички не лезут программировать на Нинзе или cAlgo, идут на МТ4/5. Порог вхождения все же неизмеримо меньше. Но многие так на этом и останавливаются.
Алексей, GetCurrentThreadID тебе в руки с импортом из kernel32.dll. Не могу поверить, что ды еще до сих пор не проверил.
OnTimer не создает собственный. Он живет в потоке таймера. И есть очередь ивентов таймера точно такая же, как и в OnCalculate или в OnChartEvent.
Да, напомню, у эксперта один поток на все.
За мультипотоками - к индюкам.
Эта очередь пропадает в случае задержки в OnTimer. Или ты предлагаешь хранить эти ивенты и потом их всем скопом выдавать в программу? )))
ЗЫ: Вопрос, если ты не торгуешь, зачем тебе этот форум и MQL?
На вопрос зачем мне MQL и форум - я пишу софт, писал же.
Насчет GetCurrentThreadID
#import "kernel32.dll"
int GetCurrentThreadID()
#import
....
void OnTimer()
{
printf("OnTimer thread = %d", GetCurrentThreadID)
}
....
void OnCalculate()
{
printf("OnCalculate thread = %d", GetCurrentThreadID)
}
....
void OnChartEvent()
{
printf("OnChartEvent thread = %d", GetCurrentThreadID)
}
где-то так
OnTimer не очередь, тут я чуть прогнал. Там TryLock стоит. Если OnTimer занят то событие скипается.
На вопрос зачем мне MQL и форум - я пишу софт, писал же.
Насчет GetCurrentThreadID
#import "kernel32.dll"
int GetCurrentThreadID()
#import
....
void OnTimer()
{
printf("OnTimer thread = %d", GetCurrentThreadID)
}
....
void OnCalculate()
{
printf("OnCalculate thread = %d", GetCurrentThreadID)
}
....
void OnChartEvent()
{
printf("OnChartEvent thread = %d", GetCurrentThreadID)
}
где-то так
Это будет являться основой для написания независимых датафидов, а также позволит использовать дополнительные расчетные потоки.