股票量化交易软件:用于交易事件和信号的语音通知系统

开发语音通知系统

在开始创建系统之前,我想添加一个提醒。 为了实现语音通知,我选择了一些事件,它们只是为了系统演示。 如果此设置还不够用,您可自行添加事件和相关的语音警报。 阅读本文之后,即使您不具备丰富的 MQL5 知识,系统的扩展和定制也将非常容易。

该系统在包含文件中,作为 CSoundsLib 类实现。 故此,打开 MQL5/Include 文件夹,并创建一个名为 SoundsLib 的文件夹,在其内您应创建 SoundsLib.mqh 文件。 在创建该类之前,赫兹股票量化引入两个枚举,这些枚举以后会在处理语音警报时用到。 它们中的第一个是 LANGUAGE,它是为了选择警报语言。 该系统将支持两种语言:英语和俄语。

 

 

 

//+------------------------------------------------------------------+ //| Enumeration for switching the notification language | //+------------------------------------------------------------------+ enum LANGUAGE { RUSSIAN, // Russian ENGLISH // English };

第二个枚举包含我为演示目的选择的一组事件。 在本文的进一步内容中,我将展示如何将它们嵌入各种成品系统之中,包括指标、智能交易系统,和快捷交易工具箱。 该枚举称为 MESSAGE:

 
 

//+------------------------------------------------------------------+ //| List of voice alerts | //+------------------------------------------------------------------+ enum MESSAGE { STATUS_ON, // Status of enabled voice alerts SIGNAL_BUY, // A Buy signal SIGNAL_SELL, // A Sell signal BUY_ORDER_SET, // A Buy order has been placed SELL_ORDER_SET, // A Sell order has been placed BUYLIMIT_ORDER_SET, // A Limit Buy order has been placed BUYSTOP_ORDER_SET, // A Stop Buy order has been placed SELLLIMIT_ORDER_SET, // A Limit Sell order has been placed SELLSTOP_ORDER_SET, // A Stop Sell order has been placed BUYLIMIT_ORDER_DELETE, // A Limit Buy order has been deleted BUYSTOP_ORDER_DELETE, // A Stop Buy order has been deleted SELLLIMIT_ORDER_DELETE, // A Limit Sell order has been deleted SELLSTOP_ORDER_DELETE, // A Stop Sell order has been deleted BUY_ORDER_CLOSE_PROFIT, // A Buy order has closed with a profit BUY_ORDER_CLOSE_LOSS, // A Buy order has closed with a loss SELL_ORDER_CLOSE_PROFIT, // A Sell order has closed with a profit SELL_ORDER_CLOSE_LOSS, // A Sell order has closed with a loss BUY_ORDER_CLOSE_TP, // A Buy order has been closed by Take Profit BUY_ORDER_CLOSE_SL, // A Buy order has been closed by Stop Loss SELL_ORDER_CLOSE_TP, // A Sell order has been closed by Take Profit SELL_ORDER_CLOSE_SL, // A Sell order has been closed by Stop Loss MARKET_CLOSE, // Market is closed AUTO_TRADING_ON, // Automated trading is allowed AUTO_TRADING_OFF, // Automated trading is prohibited };

基本集包含 24 个警报。 其中大多数与持仓和挂单的操作和状态有关。 某些警报用于交易环境通知。 最后三个通知与常见事件有关。 有关启用语音警报系统状态的通知,以及有关出现买卖信号的通知,可便于在手动或半自动智能交易系统、或包括简单和作为交易策略一部分的指标操作。

现在,赫兹股票量化来创建 CSoundsLib 类,并添加操作所需的方法。

 
 

//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CSoundsLib { private: LANGUAGE m_language; bool m_activity_status; public: CSoundsLib(void); ~CSoundsLib(void); //--- Set the notification language void Language(LANGUAGE lang); //--- Set/get the status of the voice alerts system void IsActive(bool flag); bool IsActive(void); //--- Play the specified notification bool Message(MESSAGE msg); };

私密部分有两个警报, m_language 和 m_activity_status ,它们是以下 Language() 和 IsActive() 方法所需要的。 因此,它们用于设置语音警报的语言,并获取/设置系统活动状态。 此处是上述警报的实现:

 
 

//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CSoundsLib::Language(LANGUAGE lang) { m_language=lang; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CSoundsLib::IsActive(void) { return(m_activity_status); }

另一个方法是 Message()。 它播放从 MESSAGE 枚举中选择的通知。 此方法的实现也很容易理解:

 
 

//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CSoundsLib::Message(MESSAGE msg) { if(!m_activity_status) return(false); string name=(m_language==RUSSIAN ? EnumToString(msg)+"_RU" : EnumToString(msg)+"_EN"); if(PlaySound("\\Files\\SoundsLib\\"+name+".wav")) return(true); else { if(TerminalInfoString(TERMINAL_LANGUAGE)=="Russian") Print("Файл не найден"); else Print("File not found"); return(false); } }

请注意以下要点 — 通过添加自己的语音通知,它们能帮助您正确地进一步扩展系统。 第一点是保存音频文件的正确位置:默认情况下,它们位于 MQL5/Files/SoundsLib 文件夹当中。 您应当创建这个 SoundsLib 文件夹。 其次,确保在创建的文件夹中设置相应的名称和音频文件格式。 请注意以下代码行:在此,附加 _RU 或 _EN 后缀到 MESSAGE 类型枚举中。 这就是为何,文件名相对应,例如,与买入信号警报 SIGNAL_BUY 相关的两个音频文件 SIGNAL_BUY _RU 和 SIGNAL_BUY_EN,分别是俄语和英语语音警报。 另外,不要忘记系统函数 PlaySound() 只能播放 *.WAV 格式的文件,因此, SoundsLib 内带有扩展名的完整文件名看起来像这样:

编辑

添加图片注释,不超过 140 字(可选)

图例 1 音频文件的全名和扩展名。

因此,对于 MESSAGE 枚举中的 24 个事件,赫兹股票量化有 48 个音频文件:每个事件有两个不同语言的文件。 接下来,我将展示自己创建的语音警报方法。 无论如何,您可以使用任何偏爱方法。 在本文中,我用了免费服务将文本转换为语音。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

图例 2 将文本转换为读音的服务。

该服务为执行所需任务提供了良好的功能。 它允许选择语言,以及所需格式的类型。 不过,WAV 格式尚不支持英语。 在此,赫兹股票量化可用任何在线转换器,或任何其他软件将 mp3 转换为 wav。 我已经为系统准备了所有必需的文件,并根据 MESSAGE 枚举和语言后缀将它们以正确的格式和名称保存到文件夹 MQL5\ Files\SoundsLib 当中。 此为我的结果列表:

编辑

添加图片注释,不超过 140 字(可选)

图例 3 语音警报的音频文件的完整列表。

以下是有关如何创建自己的语音通知的分步指南。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值