Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Самый простой способ решения вопроса - не играть несколько звуков. Играть один звук и писать сообщение в журнал. Проиграл звук, смотрим в журнал, что это было.
Еще простой способ. Использовать Sleep() после PlaySound(). Но нужно знать длительность звуковых файлов. В индикаторах не будет работать. Но нечто подобное можно сделать через таймер. Хоть таймер, хоть Sleep() нужно знать длительность файлов.
Еще способ. Использовать API sndPlaySound(), но подойдет только для экспертов, в индикаторах работать будет, но не стоит такого делать.
Еще способ. Немного акробатический. Тоже используется API. Формировать один звуковой файл из нескольких других звуковых файлов.
docs.mql4 говорит "Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются в интерфейсном потоке и не должны его тормозить. " : (((
А почему в МКском DailyPivotPoints.mq4 используется Sleep() и ничего?! : )))
А почему в МКском DailyPivotPoints.mq4 используется Sleep() и ничего?! : )))
Это реально проблема.
Например алерт и звук в индикаторе. Звук не играет.
Есть идея для разработчиков, но тут простых сметрных не слушают.
Сделать функции Alert. PlaySound и т.д. не типа void, а bool с проверкой окончания функции(тру когда уже звук доиграл)
Тогда можно было бы писать так
if(PlaySound("1.wav"))
PlaySound("2.wav") ;
Если повесить на отдельное окно обработчика в качестве эксперта
который будет считывать с глобальных переменных что нужно произнести и обнулять их после произношения.
Вообще конечно это явный косяк разработчиков. Неважно в каком режиме проигрываются файлы (синхронном или асинхронном), но должно воспроизводится всё, что отправлено. Т.е. звуки должны идти либо друг за другом, либо параллельно, а не тупо пропускаться. Напишите им в сервис-деск по этой проблеме.
Когда два PlaySound подряд, будет играть последний, это правильно.
С алертом странность. То, что играет звук алерта, а не следующий файл через PlaySound(), раньше играл PlaySound.
Alert("1");
PlaySound("timeout");
Ну напишите, в сервис деск и что? В лучшем случае не ответят, или же "объяснят" что вы ничего не понимаете.
Когда два PlaySound подряд, будет играть последний, это правильно.
Почему это правильно? Почему не первый?