论坛全局菜单下方 - TICKMILL 285X70论坛全局菜单下方 - ThinkMarkets285X70论坛全局菜单下方 - 荔枝返现285X70论坛全局菜单下方 -  icmarkets285X70
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 10
前往
共 200 条
查看:42866回复:199
wfy05
注册时间2005-07-23
MetaTrader 4 自动中文语音报价脚本
楼主发表于:2005-11-10 12:47只看该作者倒序浏览
1楼 电梯直达
电梯直达
初来涛客,很喜欢这里的氛围, 各位dx的各种经验也给了我很多帮助, 自己初入汇市,没有多少经验, 还只能向各位dx多多请教. 以前学过点编程,写了个mt4的小脚本希望能对大家有点帮助, 共同来繁荣这个大家庭. btw: 感谢正版提供的资料ftp下载, 我就是从那里下mq4编程语言文档. 另感谢唐老师这两天发的汇评增加了我对欧系仍然有一定回调空间的 信心,有望减少目前被套的损失. 回到正题, 这个脚本是用来配合MT4平台再汇率变动时进行中文语音的 自动报价, 具体包含有如下功能: 1. 可以设置使用买入价或者卖出价. 2. 可以设置两次语音报价之间的最小时间间隔. 3. 可以设置是否报出交易货币名称 4. 可以设置是否报出两次报价之间的点数变动 5. 可以设置两组需要进行语音报价的点数范围 安装过程如下: 首先需要下载微软的TTS语音引擎, 以及简体中文的语音数据包. 下载页面为: http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&DisplayLang=en 或直接下载连接为: (包含引擎以及中文语音数据包, 约130M) http://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/speechsdk51msm.exe 下载完按提示安装即可, 安装完成后你可以在控制面板中找到"语音"设置项, 在其中的 "文字-语音转换"标签页里面能够对语音进行相关的测试以及语速设置. (中文语音在下拉表中名为Microsoft Simplified Chinese) 如果这里测试能正常进行 中文文字的语音朗读的话则可以进行下一步 另外这个微软的语音包以及引擎是系统标准引擎, 安装完后很多其他程序可以公用, 比如可以进行文章/网页朗读之类的,虽说效果不是很好,但也还算用得上. 然后可以进行脚本的安装, 只需要将附件"自动语音报价.mq4"复制到你MT4 安装目录下的experts目录即可, 比如你MT4安装在: C:\Program Files\MetaTrader 4\则复制到C:\Program Files\MetaTrader 4\experts 再重新启动MT4, 就应该可以在导航窗口里面的智能交易列表里面找到自动语音报价 这个项目, 安装到这里就算完成了. 使用方法: 首先你需要开启MT4的智能交易系统, 在工具栏上点下启动智能交易的按钮,让其 处于绿色的按下状态. 然后打开你所要进行自动报价的商品的数据图, 再双击智能交易列表里面的 自动语音报价, 然后确定就可以按照默认设置进行报价了. 如需更改设置, 可以 在确定前点数如参数页里面进行更改或者在随时点击数据图右上角自动语音报价 旁边的圆脸即可弹出设置窗口. 设置项目名因为MT4的限制只能为英文字母和数字,这里做一下解释:
名称 类型 说明 Enabled 布尔值 选true(是)则表示开启报价, false(否)则 临时禁止报价. UseBid 布尔值 是否选用买入价, true表示用买入价,false 表示使用卖出价. SpeakInterval 整数 设置同一个图标两次报价之间的最小时间价格. 以秒为单位,如果该数值设置为0, 则将在 语速允许的范围内对每次的数据变动报价. SpeakSymbol 布尔值 选true表示标价同时报出该商品名,如果同时在 对多种商品报价时候可以用这个帮助区分商品种类. false表示只报价格.可以缩短报价语句便于对 一两种货币集中监控. SpeakDelta 整数 用来控制是否报两次报价之间的变化点数以及变化的 范围. 设置为0表示不报差价,否则如果两次报价 间变化大于等于该设置数值则报价同时报上涨或者 下跌了多少点. 如果该数值设置为1则每次都报 变化点数. Range1Min 实数 用来设置第一个报价范围的最小点数. Range1Max 实数 用来设置第一个报价范围的最大点数. Range2Min 实数 用来设置第二个报价范围的最小点数. Range2Max 实数 用来设置第二个报价范围的最大点数. LogMessage 布尔值 是否将每次报价记录到只能交易系统的日志窗口.
只有当当前商品的价格处于[RangeMin1, RangeMax1] 或者[RangeMin2, RangeMax2] 的范围内才会报价,这样可以用来避免不必要的报价. 默认为所有价位范围 [0, 99999.9], 即对任何数据进行报价. 这个范围需要根据自己需求以及货币种类进行设置使用. 比如现在EURUSD在1.18下附近波动, 上升阻力位为1.1800, 则可以将Range1Min设置 为1.1800, Range1Max设置为一个足够大的数据比如99999.9, 则汇价升破1.18的阻力 位都将自动进行语音报价. 如果当前在支撑位1.1800附近震荡, 则可以将Range1Min 设置为0, Range1Max设置为1.1800, Range2Min以及Range2Max保持为0即可 当大幅度在支撑和阻力间震荡时如需同时设置支撑和阻力范围可以通过Range1以及Range2 配合进行设置. 以上是对单种商品的自动报价处理, 如需同时对多种商品进行报价, 则另开一个数据窗口, 重复以上步骤即可. 如需要临时禁止单窗口的自动报价, 可以将设置里面的Enable设置为false.需要恢复时候 重新改为true即可. 如需要删除单窗口的自动报价, 可在该窗口点击右键选择智能交易->删除即可,但该窗口的 自动报价设置将被删除. 如需临时禁止所有窗口的自动报价, 点击工具栏上的启动智能交易将其弹起为红色即可. 重新点击即可恢复. 如需完全删除自动语音报价, 在智能交易列表中的自动语音报价右键点击后选删除. 附件"自动语音报价.mq4"为mq4标准脚本源代码, 大家可以直接用记事本或者MetaTrader 系统的编辑器打开后察看内容验证安全性或者修改. 欢迎大家提出改进建议 :) 另: 附件好像只能上传图片, 我将"自动语音报价.mq4" 附录于后, 大家可以复制这部分 内容到记事本后保存为"自动语音报价.mq4"即可.
TK29帖子1楼右侧xm竖版广告90-240

评分

参与人数1
积分+301
金币
人气
时间
理由
+301
0
0
2005-11-25
个性签名

韬客社区www.talkfx.co

广告
TK30+TK31帖子一樓廣告
TK30+TK31帖子一樓廣告
wfy05
注册时间2005-07-23
楼主发表于:2005-11-10 12:48只看该作者
2楼
"自动语音报价.mq4" 源程序如下: 老正: 我传了个zip的在21楼 解压缩后把里面的文件复制到指定目录里也可 //+------------------------------------------------------------------+ //| 语音报价.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "[email protected]" #property link "www.talkfx.com" //---- input parameters extern bool Enabled=true; extern bool UseBid=true; extern int SpeakInterval=10; extern bool SpeakSymbol=true; extern int SpeakDelta=1; extern double Range1Min=0.0; extern double Range1Max=99999.9; extern double Range2Min=0.0; extern double Range2Max=0.0; extern bool InitSpeak=false; extern bool LogMessage=false; double LastPrice = 0; int LastSpeakTime = 0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ double GetCurrPrice() { double p; if (UseBid) { p = Bid; } else { p = Ask; } return (p); } string CurrencyGetName(string c) { if (c == "USD") { return ("美元"); } else if (c == "EUR") { return ("欧元"); } else if (c == "GBP") { return ("英镑"); } else if (c == "JPY") { return ("日元"); } else if (c == "CAD") { return ("加元"); } else if (c == "CHF") { return ("瑞郎"); } else if (c == "AUD") { return ("澳元"); } else if (c == "SGD") { return ("星元"); } else if (c == "NZD") { return ("纽元"); } else if (c == "HKD") { return ("港币"); } else if (c == "CNY") { return ("人民币"); } else { return (""); } } string GetSymbolName(string name) { string str; str = ""; if (StringLen(name) != 6) { if (name == "USDX" || name == "_DXY") { str = str+"美元指数"; } else if (name == "GOLD") { str = str+"黄金"; } } else { string left, right; left = CurrencyGetName(StringSubstr(name, 0, 3)); right = CurrencyGetName(StringSubstr(name, 3, 3)); if (left != "" && right != "") { str = str+(left + "兑" + right); } } return (str); } string GetSpeechText() { string str; str = ""; if (SpeakSymbol) { str = str + GetSymbolName(Symbol()); if (str != "") { if (UseBid) { str = str+"买入价为"; } else { str = str+"卖出价为"; } } } double p; p = GetCurrPrice(); str = str+DoubleToStr(p, Digits); if (SpeakDelta != 0 ) { int n = MathPow(10, Digits); double diff = MathAbs(p*n-LastPrice*n); if (diff >= SpeakDelta) { if (p > LastPrice) { str = str+"上涨"+DoubleToStr(diff,0)+"点"; } else { str = str+"下跌"+DoubleToStr(diff,0)+"点"; } } // Print(LastPrice + "->" + p + " : " + diff); } LastPrice = p; if (LogMessage) Print (str); return (str); } int init() { //---- //---- LastPrice = GetCurrPrice(); LastSpeakTime = 0; if (InitSpeak) { string str; str = "开始进行" + GetSymbolName(Symbol()) + "的自动报价,"; str = str + "当前价格为" + DoubleToStr(LastPrice, Digits); SpeechText(str, SPEECH_NATIVE); } return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- if (InitSpeak) { string str; str = "停止" + GetSymbolName(Symbol()) + "的自动报价"; SpeechText(str, SPEECH_NATIVE); } //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (!Enabled) return (0); double p = GetCurrPrice(); if (MathAbs(GetTickCount() - LastSpeakTime) < SpeakInterval * 1000) { return (0); } if ((p >= Range2Min && p <= Range1Max) || (p >= Range2Max && p <= Range2Min)) { SpeechText(GetSpeechText(), SPEECH_NATIVE); LastSpeakTime = GetTickCount(); } //---- return(0); } //+------------------------------------------------------------------+ [ 本帖最后由 老正 于 2005-11-16 10:58 编辑 ]
个性签名

韬客社区www.talkfx.co

迅疾如风
注册时间2003-07-12
发表于:2005-11-10 13:12只看该作者
3楼
非常感谢你的无私奉献!
eagle8eye
注册时间2005-08-15
wfy05
注册时间2005-07-23
楼主发表于:2005-11-11 03:26只看该作者
5楼
最开始给出的微软中文语音开发包文件是比较大,因为里面包含了开发库, 工具以及语音识别录入等很多朗读不需要的功能, 刚上网找了找,发现有独立的中文语音包, 只有2M不到, 下载后在自己的WinXP下试用了一下暂时也没发现问题. 想避免下载大文件麻烦的可以看看. 该网站链接如下: http://www.ccview.net/software/ccspeech.htm WinXP的一般下载上面的"简体中文语音库(男声)"即可, 其他低版本的Windows可能需要下载一些其他组件,具体可以看该网页上的说明. 声明一下本人与该网站无关, 也仅测试了一下该网站上的中文语音包, 不保证该网站上的软件下载的安全, 请大家下载后自行验证查对. 如果有非WinXP系统的成功使用也请发帖说明一下具体需要安装哪些组件方便后来的朋友. [ 本帖最后由 wfy05 于 2005-11-11 11:29 编辑 ]
wfy05
注册时间2005-07-23
楼主发表于:2005-11-11 03:46只看该作者
6楼
另外那个网站上还有一个中文女声的语音,有兴趣的也可以对比一下看哪个更合适.
步步
注册时间2005-10-09
发表于:2005-11-11 04:59只看该作者
7楼
已经用了,很不错,谢谢楼主
个性签名

韬客社区www.talkfx.co

广告
论坛谏言--外汇交易不应是你投资的全部,交易外汇也不应是你生活的全部
jxq168
注册时间2004-07-28
发表于:2005-11-11 05:54只看该作者
8楼
谢谢楼主! 试试看。
个性签名

广告
论坛谏言--外汇交易不应是你投资的全部,交易外汇也不应是你生活的全部
wfy05
注册时间2005-07-23
楼主发表于:2005-11-11 07:03只看该作者
9楼
再补充几点说明: 1. 刚才试用了一下那个中文女声, 感觉效果不如男声, 数字语音不清晰,连贯性也比较差. 而且这个女声不注册的话还有很多限制. 微软的那个男声数据可以免费使用无需注册. 音质的效果也比较好. 2. 如果安装了多种中文语音数据包的可以通过系统控制面中语音设置来调整默认使用的语音, 另外语速也可以在这里调节,男声的那个可以稍微把语速调快点加快报价,120%左右的语速感觉不错. 3. 可以通过直接修改mq4文件后再MT自带的MetaEditor编译后增加修改自己想要的功能或者变动默认设置之类的,mq4语言说明具体可以看正版ftp里面的文档, 语法和C语言基本一样,学过C语言的会很容易上手. 功能也很强大, 看来MT的确是名不虚传,以后我也打算长期用这个看盘了. 4. 第一篇帖子里面给的微软那个SDK 5.1大家就不要下了,130M太大而且还需要先在第一个连接中下载其他一些东西, 没有SDK的话不能直接使用. 用我后面帖子里面给的那个2M的中文男声就行了. 原帖没法修改了, 后来的注意看一下. [ 本帖最后由 wfy05 于 2005-11-11 15:23 编辑 ]
步步
注册时间2005-10-09
发表于:2005-11-11 07:37只看该作者
10楼
楼主,是否能把程序修改一下,使得在看碟的时候休息报价呢?现在只要看碟,就不会有报价的声音
蜕步
注册时间2005-06-06
发表于:2005-11-11 07:55只看该作者
11楼
这东西好,谢谢
wfy05
注册时间2005-07-23
楼主发表于:2005-11-11 08:15只看该作者
12楼
原帖由 步步 于 2005-11-11 15:37 发表 楼主,是否能把程序修改一下,使得在看碟的时候休息报价呢?现在只要看碟,就不会有报价的声音
你说的看碟是指看DVD之类的吗? 这个不太好办,看碟软件和MT4是互相独立的, 而且看碟软件有很多, 还有暂停继续之类的这些都是各自内部控制. 从MT4去监视系统其他程序也有违安全性方面的考虑. 你是想看碟的时候停止报价把? 只需要看碟前切换一下MT4的启动智能交易即可, 看完后再开启即可。或者也可以通过设置你所感兴趣的报价范围的方式, 这样只要在范围之外都不会报价, 如果真的有大的行情时候才会报价提醒, 避免因为看碟错过行情. ;P [ 本帖最后由 wfy05 于 2005-11-11 16:16 编辑 ]
蜕步
注册时间2005-06-06
发表于:2005-11-11 08:38只看该作者
13楼
用了很好,再次感谢楼主
个性签名

不识庐山真面貌,只缘身在此山中

广告
论坛谏言--外汇交易不应是你投资的全部,交易外汇也不应是你生活的全部
步步
注册时间2005-10-09
发表于:2005-11-11 15:07只看该作者
14楼
现在是看碟的时候,他实际是报价的,但是不会出声音,可能是由于播放软件使用了声卡的缘故,看来是没法解决了
wfy05
注册时间2005-07-23
楼主发表于:2005-11-12 14:31只看该作者
16楼
原帖由 步步 于 2005-11-11 23:07 发表 现在是看碟的时候,他实际是报价的,但是不会出声音,可能是由于播放软件使用了声卡的缘故,看来是没法解决了
我还以为你是想放碟的时候关了报价呢, 我这里都挺正常的,我放DVD, mp3, 报价一起都没问题, 除非你声卡本身不支持多音源混合输入(或者是声卡驱动缘故,一般不是太老的都应该支持这个的). 你可以先试试放碟的同时再开个mp3播放器之类的看能否同时工作,不行的话就是你系统的问题了.
步步
注册时间2005-10-09
发表于:2005-11-13 12:57只看该作者
17楼
原帖由 wfy05 于 2005-11-12 22:31 发表 我还以为你是想放碟的时候关了报价呢, 我这里都挺正常的,我放DVD, mp3, 报价一起都没问题, 除非你声卡本身不支持多音源混合输入(或者是声卡驱动缘故,一般不是太老的都应该支持这个的). 你可以先试试放碟的 ...
那我要找找我的声卡设置了,可能是那里出了问题,谢谢楼主
2苹果
注册时间2005-05-12
发表于:2005-11-13 17:23只看该作者
18楼
好了,设置完毕,等待开市,谢谢。
个性签名

要止损那,大哥。

广告
论坛谏言--外汇交易不应是你投资的全部,交易外汇也不应是你生活的全部
在水一方
注册时间2004-02-15
发表于:2005-11-14 05:49只看该作者
19楼
测试完能正常进行中文文字的语音朗读,然后把搂主自动语音报价.mq4复制到记事本,粘贴到experts目录下,关闭mt4,重新启动,但是未能在导航窗口里面的智能交易列表里面找到自动语音报价这个项目. 哎
个性签名

冷静观察、稳住阵脚、沉着应付、韬光养晦、有所作为、决不当头。

wfy05
注册时间2005-07-23
楼主发表于:2005-11-14 08:25只看该作者
20楼
原帖由 在水一方 于 2005-11-14 13:49 发表 测试完能正常进行中文文字的语音朗读,然后把搂主自动语音报价.mq4复制到记事本,粘贴到experts目录下,关闭mt4,重新启动,但是未能在导航窗口里面的智能交易列表里面找到自动语音报价这个项目. 哎
注意你用记事本保存的时候需要在保存的文件名输入全名"自动语音报价.mq4", 否则会以.txt后缀保存. 并确认保存的目录正确. 另外你可以观察MT4启动后是否该目录下自动生成了"自动语音报价.ex4" 文件, 这个是MT4启动后发现experts目录下有新的mq4文件后自动编译得到的运行代码. 无此文件将无法加载该脚本. 你也可以用MetaEditor打开mq4文件进行手动编译.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 10
前往
共 200 条

本站免责声明:

1、本站所有广告及宣传信息均与韬客无关,如需投资请依法自行决定是否投资、斟酌资金安全及交易亏损风险;

2、韬客是独立的、仅为投资者提供交流的平台,网友发布信息不代表韬客的观点与意思表示,所有因网友发布的信息而造成的任何法律后果、风险与责任,均与韬客无关;

3、金融交易存在极高法律风险,未必适合所有投资者,请不要轻信任何高额投资收益的诱导而贸然投资;投资保证金交易导致的损失可能超过您投入的资金和预期。请您考虑自身的投资经验及风险承担能力,进行合法、理性投资;

4、所有投资者的交易帐户应仅限本人使用,不应交由第三方操作,对于任何接受第三方喊单、操盘、理财等操作的投资和交易,由此导致的任何风险、亏损及责任由投资者个人自行承担;

5、韬客不隶属于任何券商平台,亦不受任何第三方控制,韬客不邀约客户投资任何保证金交易,不接触亦不涉及投资者的任何资金及账户信息,不代理任何交易操盘行为,不向客户推荐任何券商平台,亦不存在其他任何推荐行为。投资者应自行选择券商平台,券商平台的任何行为均与韬客无关。投资者注册及使用韬客即表示其接受和认可上述声明,并自行承担法律风险。

版权所有:韬客外汇论坛 www.talkfx.com 联络我们:[email protected]