论坛全局菜单下方 - TICKMILL 285X70论坛全局菜单下方 - ThinkMarkets285X70论坛全局菜单下方 - 荔枝返现285X70论坛全局菜单下方 -  icmarkets285X70
  • 1
  • 3
  • 4
  • 5
  • 6
  • 7
  • 10
前往
共 200 条
bsun
注册时间2005-04-13
MetaTrader 4 自动中文语音报价脚本
发表于:2005-11-21 12:16只看该作者
81楼 电梯直达
电梯直达
原帖由 wfy05 于 2005-11-21 18:15 发表 再发一个新版本的,对脚本结构之类的有了比较大的调整,可以对报价文字进行更自由的定制. 不过一般人用前一个版本也基本能满足功能了,有兴趣的可以试试. 比如前面bsun提到的需要只用直盘报价的类似" 欧元 1.1810"就可以用如下格式: %SELL_CURR% %PRICE% %ADD_DIR% %ADD% (变动点数范围仍然可以通过SpeakDelta参数调节, 设置为0则不报变动, 可以不调整格式)
成功了,感谢wfy05兄。你这个语音报价脚本对我来说,称是跨世界大发明是真心实意,当之无愧啊,呵呵。实在太好用了。 我就按wfy05兄的那句设定去用就足够了。 几个直盘我习惯是直接叫欧元,英磅,法郎,日元等,所以欧元兑美元,美元兑法郎这些标准说法都不用的。 另外只要隔段时间听到报价,知道当前价格就足够,是否变动了多少点也可以省略,至于交叉盘不是我的交易品种,而且交叉盘的变动是由直盘而来,知道直盘变动也就大略能知道叉盘有变化。 所以我个人只要听到 欧元 1.XXXX 英磅 1.XXXX 这样的报价就完全满足使用需求了。 有了wfy05兄的这个报价脚本,只要拧大音量,不用坐在显示器前就可以把握外汇的行情情况,实在是极其贴心的功能啊,真的是探亲访友,家居旅行的必备之品。呵呵 谢谢wfy05兄:D:Demoji-image
个性签名

韬客社区www.talkfx.co

广告
TK30+TK31帖子一樓廣告
TK30+TK31帖子一樓廣告
bsun
注册时间2005-04-13
发表于:2005-11-21 12:24只看该作者
82楼
原帖由 wfy05 于 2005-11-21 17:54 发表 9的确抱得有点模糊, 但因为这种TTS引擎都是通过语素来合成语音的, 类似我们说中文时候用的拼音, 并没有针对某个单独数字/文字的语音文件,都是整体的. 单改就很难了. 只能将就一下了. 跨世纪大发明就肯定谈不上了,很简单的一个小脚本,只不过是利用了MT的强大功能而已
原来是这样,没问题,瑕不掩瑜,相对比整体的好用方便,那个问题微乎其微。用上语音报价后,现在感觉好幸福啊,呵呵 MT虽然功能强大,不过对我来说,也就只是一个看行情的软件,相同功能的软件,除了MT还有其他,在wfy05兄的这个报价脚本之前,我不用MT也可以用其他。所以全是wfy05兄的功劳啊。:D:victory:
presentation
注册时间2005-07-09
发表于:2005-11-21 18:52只看该作者
83楼
原帖由 wfy05 于 2005-11-21 17:54 发表 这个改了后效率是高点,谢谢提醒, 不过因为MT4实际上只在汇率变动的时候才调用start函数的触发机制, 而汇率变动不会太快,所以实际上最多也就1秒几次调用判断, 至于怎么导致GPF就不太清楚了. 我听英文报 ...
==================== 谢谢wfy05. 装了MS的SpeechSDK5.1(两个都装了),那个speech_native还是不行。另外,在Alert里的Voice的language还是只有“英语”一个选择。问了metaquotes也没什么好答复:-( 不过不行也没办法了. 另外,请问wfy05,有没有在W2k下用过MS的语音识别,我装了之后,训练完之后发现找不到如XP那样的输入的地方. 谢谢!
在水一方
注册时间2004-02-15
发表于:2005-11-22 00:13只看该作者
84楼
原帖由 wfy05 于 2005-11-15 17:26 发表 你现在具体的问题在哪? 你系统控制面板中的语音是否能正常朗读中文? 另外MT4里面 也可以通过"警报"进行语音的测试(选动作为Voice并且来源随便输入些中文后点测试). 你也可以打开"自动语音报 ...
老师好,按照老师指导的,在控制面板里的语音可以正常朗读中文.在mt4里面,通过"警报"进行语言的测试(选择voice并且来源随便输入一些中文后点测试),在有上角的语言栏里只出现英语(美国)的选项,没有中文朗读.我想出现这种情况,没有了中文报价,英文报价还是应该有的,我怎么连一点声音也没有喃?Snap1.gifSnap1.gif
个性签名

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

wfy05
注册时间2005-07-23
楼主发表于:2005-11-22 01:48只看该作者
85楼
原帖由 presentation 于 2005-11-22 02:52 发表 ==================== 另外,请问wfy05,有没有在W2k下用过MS的语音识别,我装了之后,训练完之后发现找不到如XP那样的输入的地方.
好久没用过Win2k了, 记得不是太清楚了,不过印象中Win2k中没有高级文字服务, 除非应用程序本身支持, 否则是没有语音输入之类的默认支持. 可能需要用第三方的工具比如IBM的ViaVoice, 这个就和系统没有关系了. 不过我一般没怎么用过语音识别输入, 感觉目前这方面的智能性还有欠缺, 输完了多半还要校对和修改, 另外输入的时候一个人对着屏幕自言自语也感觉有点傻 :P 还有想起Win98之类的系统不支持中文朗读可能也正常,毕竟Win98微软已经不提供更新和支持了,属于 已经过期的系统. Speech SDK新版出来的时候Win98都可能已经不在支持范围. MT4可能也没有考虑Win98 方面的一些兼容性. 硬件允许的话还是用新版的系统有保证些. [ 本帖最后由 wfy05 于 2005-11-22 09:50 编辑 ]
wfy05
注册时间2005-07-23
楼主发表于:2005-11-22 01:53只看该作者
86楼
原帖由 在水一方 于 2005-11-22 08:13 发表 老师好,按照老师指导的,在控制面板里的语音可以正常朗读中文.在mt4里面,通过"警报"进行语言的测试(选择voice并且来源随便输入一些中文后点测试),在有上角的语言栏里只出现英语(美国)的选项,没有中文 ...
这个是因为报价程序使用的是SPEECH_NATIVE进行本地语言的报价,但如果MT4检测不到本地语言语音的话就会朗读失败完全没有声音, 将SPEECH_NATIVE改称SPEECH_ENGLISH就可以了, 前面presentation有一个已经改好的用英文进行报价的版本你可以直接使用.
在水一方
注册时间2004-02-15
发表于:2005-11-22 03:29只看该作者
87楼
原帖由 wfy05 于 2005-11-22 09:53 发表 这个是因为报价程序使用的是SPEECH_NATIVE进行本地语言的报价,但如果MT4检测不到本地语言语音的话就会朗读失败完全没有声音, 将SPEECH_NATIVE改称SPEECH_ENGLISH就可以了, 前面presentation有一个已经改好的 ...
前进了一步呢,听到了英文报价,但持续的时间不长,随后日志里出现了这样的情况.怎么办喃?Snap1.gifSnap1.gif
个性签名

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

在水一方
注册时间2004-02-15
发表于:2005-11-22 03:33只看该作者
88楼
老师指教,我的系统虽然是98se,但是支持中文朗读的.怎么样使我的报价成中文的喃,英文报价怪怪的,不习惯.Snap3.gifSnap3.gifSnap2.gifSnap2.gif
个性签名

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

wfy05
注册时间2005-07-23
楼主发表于:2005-11-22 13:04只看该作者
89楼
原帖由 在水一方 于 2005-11-22 11:29 发表 前进了一步呢,听到了英文报价,但持续的时间不长,随后日志里出现了这样的情况.怎么办喃?
你同时有多少个窗口报价? 看你日志好像有十来个啊, 这么多报价如果时间间隔小的话很容易 阻塞的,测试的话还是先就打开一两个窗口的报价看吧,平常用最好也别太多了,听着都乱。
原帖由 在水一方 于 2005-11-22 11:33 发表 老师指教,我的系统虽然是98se,但是支持中文朗读的.怎么样使我的报价成中文的喃,英文报价怪怪的,不习惯.
老师不敢当,互相交流吧, 偶也是刚入汇市,已经连连亏损了, 以后还得大家多多指教. 看你前面说的系统控制面板里面已经能够中文朗读了, 但MT4里面报警选项没有中文的语音朗读, 这个可能是MT4与Win98的兼容性问题了. 你可以试试将下面的文件保存为一个注册表文件(比如1.reg), 然后倒入注册表. 再看MT4里面报警能否测试中文朗读. REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSSimplifiedChineseVoice] @="Microsoft Simplified Chinese" "CLSID"="{AE2CF4DB-3697-45F4-9787-0FC5A37BEB36}" "409"="Microsoft Simplified Chinese" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSSimplifiedChineseVoice\Attributes] "Language"="804" "Vendor"="Microsoft" "Name"="Microsoft Simplified Chinese" "Gender"="Male" "Age"="Adult" (注意最后一行后面需要输入两个空行,这里论坛上空行被自动删除了) 要还是不行的话就再试试看那个中文女声的能不能用吧,http://www.smartread.net是其主页, 上面还有粤语之类的, 不过会需要注册之类的否则会有限制. 要再不行我也没辙了, 只能等MT4看在以后的版本里面能不能解决这个和Win98的兼容问题. Good luck :) [ 本帖最后由 wfy05 于 2005-11-22 21:06 编辑 ]
在水一方
注册时间2004-02-15
发表于:2005-11-22 13:18只看该作者
90楼
好的,谢谢指教,给你添了不少麻烦,很不好意思呢. 好心有好报,做汇你一定能成功的.
个性签名

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

风帆
注册时间2005-11-08
发表于:2005-11-23 15:52只看该作者
91楼
wfy05你好! 用了你的语音报价系统感觉真是太好了,这样就不用总是盯着盘面了,可以放心地做其他的事了,在此表示感谢!
zhouzhouqu
注册时间2005-05-19
匯市猎人
注册时间2003-09-13
fx007
注册时间2004-03-27
发表于:2005-12-03 01:59只看该作者
95楼
请问楼主MACD的交叉可以进行语音提示吗
wfy05
注册时间2005-07-23
楼主发表于:2005-12-03 10:40只看该作者
96楼
原帖由 fx007 于 2005-12-3 09:59 发表 请问楼主MACD的交叉可以进行语音提示吗
No, 指标太多, 不提供这样的功能.
kunpeng
注册时间2005-02-24
发表于:2005-12-05 02:54只看该作者
97楼
good.
kunpeng
注册时间2005-02-24
发表于:2005-12-06 02:03只看该作者
98楼
能设置两次语音报价之间的最小点数间隔吗?
wfy05
注册时间2005-07-23
楼主发表于:2005-12-06 03:48只看该作者
99楼
原帖由 kunpeng 于 2005-12-6 10:03 发表 能设置两次语音报价之间的最小点数间隔吗?
更新到1.3, 支持两次语音报价之间的最小点数间隔, 用SpeakDelta参数来调整. 比如SpeakDelta为5则表示当前价格与上次报价价格差别大于等于5的时候才 会进行下次报价. //+------------------------------------------------------------------+ //| 语音报价.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "[email protected]" #property link "www.talkfx.com" //---- input parameters extern string Version="1.3"; extern string BuildInfo = "2005.12.06 by [email protected]"; extern string Format = "%SELL_CURR% 兑 %BUY_CURR% %ACTION% 价为 %PRICE% %ADD_DIR% %ADD%"; extern bool UseBid=true; extern int SpeakInterval=10; extern int SpeakDelta=0; extern double Range1Min=0.0; extern double Range1Max=99999.9; extern double Range2Min=0.0; extern double Range2Max=0.0; extern bool Enabled=true; extern bool InitSpeak=false; extern bool LogMessage=false; double LastPrice = 0; int LastSpeakTime = 0; string StrListGetVar(string & array, string name) { int i, n; n = ArraySize(array)/2; for (i=0; i n1+1) { out = StringConcatenate(out, StringVarGetValue(StringSubstr(str, n1+1, n2-n1-1))); } else if (n2 == n1 + 1) { out = StringConcatenate(out, "%"); } start = n2+1; } return (out); } string StrList = { "SELL_CURR",, "BUY_CURR",, "PRICE",, "ACTION",, "ADD_DIR",, "ADD",, "BID_PRICE",, "ASK_PRICE",, }; string StringVarGetValue(string name) { return (StrListGetVar(StrList, name)); } bool StringVarSetValue(string name, string value) { return (StrListSetVar(StrList, name, value)); } void DoSpeech() { string str; UpdateVars(); str = StringReplaceVar(Format); SpeechText(str, SPEECH_NATIVE); LastSpeakTime = GetTickCount(); if (LogMessage) Print (str); return; } double GetPriceChanged() { double diff; double p = GetCurrPrice(); int n = MathPow(10, Digits); diff = p * n -LastPrice *n; return (diff); } double GetCurrPrice() { double p; if (UseBid) { p = Bid; } else { p = Ask; } return (p); } void UpdateVars() { StringVarSetValue("BID_PRICE", DoubleToStr(Bid, Digits)); StringVarSetValue("ASK_PRICE", DoubleToStr(Ask, Digits)); StringVarSetValue("PRICE", DoubleToStr(GetCurrPrice(), Digits)); string add, adddir; double diff = GetPriceChanged(); double abs_diff = MathAbs(diff); double p = GetCurrPrice(); if (abs_diff != 0) { if (diff > 0) { adddir = "上涨"; } else if (diff < 0) { adddir = "下跌"; } add = DoubleToStr(abs_diff, 0) + "点"; } else { adddir = ""; add = ""; } LastPrice = p; StringVarSetValue("ADD_DIR", adddir); StringVarSetValue("ADD", add); return; } void InitVars() { StringVarSetValue("SELL_CURR", GetSymbolCurrency(true)); StringVarSetValue("BUY_CURR", GetSymbolCurrency(false)); if (UseBid) { StringVarSetValue("ACTION", "买入"); } else { StringVarSetValue("ACTION", "卖出"); } return; } //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- LastPrice = GetCurrPrice(); LastSpeakTime = 0; if (InitSpeak) { string str; str = "开始进行" + GetSymbolName(Symbol()) + "的自动报价"; str = str + "当前价格为" + DoubleToStr(LastPrice, Digits); SpeechText(str, SPEECH_NATIVE); } InitVars(); DoSpeech(); 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); if (MathAbs(GetTickCount() - LastSpeakTime) < SpeakInterval * 1000) { return (0); } double p = GetCurrPrice(); if (!(p >= Range1Min && p <= Range1Max) && !(p >= Range2Min && p <= Range2Max)) { return (0); } double abs_diff = MathAbs(GetPriceChanged()); if (abs_diff < SpeakDelta) { return (0); } DoSpeech(); //---- return(0); } //+------------------------------------------------------------------+
kunpeng
注册时间2005-02-24
发表于:2005-12-06 09:03只看该作者
100楼
原帖由 wfy05 于 2005-12-6 11:48 发表 更新到1.3, 支持两次语音报价之间的最小点数间隔, 用SpeakDelta参数来调整. 比如SpeakDelta为5则表示当前价格与上次报价价格差别大于等于5的时候才 会进行下次报价....
OK~SpeakSymbol没了?里面变成这样了. [ 本帖最后由 kunpeng 于 2005-12-6 17:15 编辑 ]1.gif1.gif
  • 1
  • 3
  • 4
  • 5
  • 6
  • 7
  • 10
前往
共 200 条

本站免责声明:

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

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

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

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

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

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