Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Советник должен сигнализировать об изменении котировок более чем на 3 пункта, правильно? У меня же подготовлено 100 файлов от 00 до 99. Я думал, что при изменении котировок будет воспроизводиться файл с соответсвующей новой котировке цифрой. Можно так?
Тогда должен работать первый вариант (13:05). Я почему-то решил, что речь идет об изменениях цены вверх и вниз.
http://forum.alpari-idc.ru/thread29450-22.html
Т.е., что именно записано в ваших файлах? Какой текст?
Тогда должен работать первый вариант (13:05). Я почему-то решил, что речь идет об изменениях цены вверх и вниз.
Замените в первом варианте (13:05) строку с оператором if на такую:
if ( NormalizeDouble( ( ( MathAbs( Bid - pre_bid ) / Point ) - Luft ), 0 ) >= 0 )
Замените в первом варианте (13:05) строку с оператором if на такую:
if ( NormalizeDouble( ( ( MathAbs( Bid - pre_bid ) / Point ) - Luft ), 0 ) >= 0 )
Замените в первом варианте (13:05) строку с оператором if на такую:
if ( NormalizeDouble( ( ( MathAbs( Bid - pre_bid ) / Point ) - Luft ), 0 ) >= 0 )
По идее, должен озвучивать любые пары, поскольку у него нет привязки к определенному символу. Можно, например, сделать фильтр по символам, добавив в имя wav-файла соответствующий символ (например, EURUSD<NN>.wav), и изменив сам файл:
string name = Symbol() + StringSubstr(DoubleToStr(Bid, Digits ), 4, 2) + ". wav";
Можно такое же сделать и по тайм-фреймам, но при этом объем аудиоинформации многократно возрастет, о чем говорил Рош. Вообще-то эта задача корректно решается с помощью программ речевого синтеза из текстовых файлов, чтобы не плодить лишние сущности, т.е. аудиофайлы, тем более, что wav-формат довольно расточителен в плане места на диске. К сожалению, разработчики почему-то совсем убрали из МТ функцию SpeechText(...) , оставив вместо нее заглушку, и теперь такие вещи приходится делать средствами С и WinAPI, а это уже совсем другая задача. Вот пример с англоязычного форума:
// REFERENCE: https://www.mql5.com/en/forum/45211
//---- SOURCE: SpeechText.cpp
#include <windows.h>
#include <sapi.h>
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "sapi.lib")
ISpVoice * gpVoice = NULL;
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
if (FAILED(CoInitialize(NULL))) {
return FALSE;
}
if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&gpVoice))) {
return FALSE;
}
if (!gpVoice) return FALSE;
break;
case DLL_PROCESS_DETACH:
/*
if (gpVoice) gpVoice->Release();
*/
gpVoice = NULL;
CoUninitialize();
break;
default:
break;
}
return TRUE;
}
BOOL WINAPI MT_SpeechText(char const * text, BOOL async)
{
WCHAR * msg;
BOOL ret;
int len;
DWORD dwFlags;
len = strlen(text) + 1;
msg = new WCHAR[len];
MultiByteToWideChar(CP_ACP, 0, text, len, msg, len);
if (async) {
dwFlags = SPF_ASYNC;
} else {
dwFlags = SPF_DEFAULT;
}
if (FAILED(gpVoice->Speak(msg, dwFlags, NULL))) {
ret = FALSE;
} else {
ret = TRUE;
}
delete msg;
return ret;
}
//---- DEF file
LIBRARY SpeechText
EXPORTS
MT_SpeechText
//---- MT4
#import "SpeechText.dll"
int MT_SpeechText(string text, int async);
#import
MT_SpeechText("Hello world", 1);
Этот код компилируется в dll - "говорилку" для МТ4. За недостатком времени я его не пробовал.
Насчет клавиш - наверное, можно, однако я этим сервисом (hot-keys) не пользуюсь, поэтому не очень в курсе.
По идее, должен озвучивать любые пары, поскольку у него нет привязки к определенному символу. Можно, например, сделать фильтр по символам, добавив в имя wav-файла соответствующий символ (например, EURUSD<NN>.wav), и изменив сам файл: