论坛全局菜单下方 - TICKMILL 285X70论坛全局菜单下方 - ThinkMarkets285X70论坛全局菜单下方 - 荔枝返现285X70论坛全局菜单下方 -  icmarkets285X70
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 10
前往
共 200 条
wfy05
注册时间2005-07-23
MetaTrader 4 自动中文语音报价脚本
楼主发表于:2005-11-15 14:57只看该作者
61楼 电梯直达
电梯直达
原帖由 韩儿 于 2005-11-15 21:34 发表 呵呵 谢谢回复,又重新试了一遍,自定义里面的已经没有了,可是还是不行!!!!!!!!!!!:(
具体是什么地方不行? 是按照默认设置的对所有数据报价没有还是只是设置好范围后不能正常工作? 可惜论坛只能直接上载图片,要不我上载mq4文件估计就没这么多麻烦了.
个性签名

韬客社区www.talkfx.co

广告
TK30+TK31帖子一樓廣告
TK30+TK31帖子一樓廣告
presentation
注册时间2005-07-09
发表于:2005-11-15 19:17只看该作者
62楼
十分感谢WFY05! 但是,如果用 SPEECH_NATIVE 不行。不过,调用您所介绍的《中华经典朗读》就可以读中文。很怪。
wfy05
注册时间2005-07-23
楼主发表于:2005-11-16 01:24只看该作者
63楼
原帖由 presentation 于 2005-11-16 03:17 发表 十分感谢WFY05! 但是,如果用 SPEECH_NATIVE 不行。不过,调用您所介绍的《中华经典朗读》就可以读中文。很怪。
不客气,你用的是什么操作系统? 我这里手头只测试了WinXP. 你用系统控制面板里面的"语音"进行预听语音如果能朗读中文的话MT4应该也没问题.
韩儿
注册时间2004-06-20
发表于:2005-11-16 02:34只看该作者
64楼
原帖由 wfy05 于 2005-11-15 22:57 发表 具体是什么地方不行? 是按照默认设置的对所有数据报价没有还是只是设置好范围后不能正常工作? 可惜论坛只能直接上载图片,要不我上载mq4文件估计就没这么多麻烦了.
呵呵,先谢谢wfy05,这么有耐心的回复解答。1。按照默认设置的对所有数据报价没有报价,2,设置好范围后也不能报价。问题在:照默认设置不能报价??
老正
注册时间2003-09-21
365热心助人奖
发表于:2005-11-16 03:00只看该作者
65楼
个性签名

遇到矛盾 先站在对方的立场上想想问题,先试着去理解别人
如何使用WinMTR查询平台连接流畅度

wfy05
注册时间2005-07-23
楼主发表于:2005-11-16 03:51只看该作者
66楼
原帖由 韩儿 于 2005-11-16 10:34 发表 呵呵,先谢谢wfy05,这么有耐心的回复解答。1。按照默认设置的对所有数据报价没有报价,2,设置好范围后也不能报价。问题在:照默认设置不能报价??
对, 你默认设置都不能报价那缩小范围后肯定更不能了, 我记得你前面都还把默认设置报价调成功了的? 你按照前面的再试试看先把这个解决就行了.
presentation
注册时间2005-07-09
发表于:2005-11-16 05:25只看该作者
67楼
原帖由 wfy05 于 2005-11-16 09:24 发表 不客气,你用的是什么操作系统? 我这里手头只测试了WinXP. 你用系统控制面板里面的"语音"进行预听语音如果能朗读中文的话MT4应该也没问题.
谢谢! 我用的是W2k with SP4. 控制面板里看不到有"语音“,不知道用什么才能看到。 另外,在MT4的”报警“里,选择”VOICE“的话,Language只有一个选择ENGLISH。 我把所有的“中文”的改成“英文”的,然后不调用NATIVE的就可以讲,不过是英文的,听起来有点郁闷。:L 改动如下,WFY05兄请勿见怪: //+------------------------------------------------------------------+ //| 语音报价.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 ("USD"); } else if (c == "EUR") { return ("EURO"); } else if (c == "GBP") { return ("Pound"); } else if (c == "JPY") { return ("Japan"); } else if (c == "CAD") { return ("Canada"); } else if (c == "CHF") { return ("Swiss"); } else if (c == "AUD") { return ("Australia"); } else if (c == "SGD") { return ("Sigapore"); } else if (c == "NZD") { return ("Newzeland"); } else if (c == "HKD") { return ("Hongkong"); } else if (c == "CNY") { return ("RMB"); } else { return (""); } } string GetSymbolName(string name) { string str; str = ""; if (StringLen(name) != 6) { if (name == "USDX" || name == "_DXY") { str = str+"Index"; } else if (name == "GOLD") { str = str+"Gold"; } } else { string left, right; left = CurrencyGetName(StringSubstr(name, 0, 3)); right = CurrencyGetName(StringSubstr(name, 3, 3)); if (left != "" && right != "") { str = str+(left + " to " + right); } } return (str); } string GetSpeechText() { string str; str = ""; if (SpeakSymbol) { str = str + GetSymbolName(Symbol()); if (str != "") { if (UseBid) { str = str+"Bid price"; } else { str = str+"Call price"; } } } 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+"Up"+DoubleToStr(diff,0)+"pips"; } else { str = str+"down"+DoubleToStr(diff,0)+"pips"; } } // Print(LastPrice + "->" + p + " : " + diff); } LastPrice = p; if (LogMessage) Print (str); return (str); } int init() { //---- //---- LastPrice = GetCurrPrice(); LastSpeakTime = 0; if (InitSpeak) { string str; str = "Start " + GetSymbolName(Symbol()) + " voice quote,"; str = str + "Current price is " + DoubleToStr(LastPrice, Digits); SpeechText(str); } return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- if (InitSpeak) { string str; str = "Stop " + GetSymbolName(Symbol()) + " voice quote"; SpeechText(str); } //---- 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()); LastSpeakTime = GetTickCount(); } //---- return(0); } //+------------------------------------------------------------------+
wfy05
注册时间2005-07-23
楼主发表于:2005-11-16 05:37只看该作者
68楼
原帖由 presentation 于 2005-11-16 13:25 发表 谢谢! 我用的是W2k with SP4. 控制面板里看不到有"语音“,不知道用什么才能看到。 另外,在MT4的”报警“里,选择”VOICE“的话,Language只有一个选择ENGLISH。 我把所有的“中文”的改成 ...
hoho 本来就一很简单的小脚本,随便修改. 英文报价也的确可以,XP之类的系统默认就 可以支持, 不过我当时也嫌那个听着别扭就改中文的了. Win2k, 98的话可能还得下一些其他组件, 你试试下载那个下载页面上的 "最新 MsTTS V5.1 中、英文语音库" 然后按照里面的说明进行安装. 比如spchapi.exe就可以在控制面板中添加"语音"项目.
韩儿
注册时间2004-06-20
发表于:2005-11-16 06:36只看该作者
69楼
原帖由 wfy05 于 2005-11-16 11:51 发表 对, 你默认设置都不能报价那缩小范围后肯定更不能了, 我记得你前面都还把默认设置报价调成功了的? 你按照前面的再试试看先把这个解决就行了.
呵呵,问题解决了,非常感谢楼主,你和老正帮主一样都很有耐心,值的学习。:D
bsun
注册时间2005-04-13
发表于:2005-11-18 04:02只看该作者
70楼
太好了,非常感谢楼主wfy05朋友,语音报价一直找了好久。 试用了一下,想请问几点问题。 1.修改设定时,怎样保存?例如修改时间为20,但按确定后,再看仍是10。其他的选项也是无法保存修改。 2.能否也在MT3版本里应用这个语音报价功能? 3.MT4里的图表所显示的价格,是买入价还是卖出价? 4.我如果只想按MT图表所显示的价格报价,每隔10秒报出图表的价格,例如内容是: 欧元 1.1722  欧元 1.17XX
这样 其他的内容不需要,那应该怎样修改? 5.在语音的选项里,常规里有名称连接,这个选项是什么意思,有没有作用?
个性签名

韬客社区www.talkfx.co

韩儿
注册时间2004-06-20
发表于:2005-11-18 06:16只看该作者
71楼
原帖由 bsun 于 2005-11-18 12:02 发表 太好了,非常感谢楼主wfy05朋友,语音报价一直找了好久。 试用了一下,想请问几点问题。 1.修改设定时,怎样保存?例如修改时间为20,但按确定后,再看仍是10。其他的选项也是无法保存修改。 2.能否也在 ...
好象没有这个功能,只有在一段区间内报价,列:1.1700-9999.9则在大于1.1700开始报价,0-1.1700则在小于1.1700报价。
个性签名

韬客外汇论坛TALKFOREX.COM

bsun
注册时间2005-04-13
发表于:2005-11-18 06:16只看该作者
72楼
原帖由 bsun 于 2005-11-18 12:02 发表 太好了,非常感谢楼主wfy05朋友,语音报价一直找了好久。 试用了一下,想请问几点问题。 1.修改设定时,怎样保存?例如修改时间为20,但按确定后,再看仍是10。其他的选项也是无法保存修改。 2.能否也在 ...
上面第一点,修改可以保存了。奇怪呢。:$ 我只要求听直盘的报价就可以了,所以欧元对美元,英磅兑美元等品种,只要求前面的品种是欧元或是英磅就行,后面《对美元》三个字和《买入价为》四个字希望能省略去,这样听起来更清楚简洁。
bsun
注册时间2005-04-13
发表于:2005-11-18 06:24只看该作者
73楼
原帖由 韩儿 于 2005-11-18 14:16 发表 好象没有这个功能,只有在一段区间内报价,列:1.1700-9999.9则在大于1.1700开始报价,0-1.1700则在小于1.1700报价。
不会,你说的已经是进阶功能,起警示作用。我理解为随图报价是最原本的功能,默认就可以全范围报价了。MT真是好东西,楼主真是高人,只要添加一个文件就解决了我的烦恼,我还下了数十个软件在那折腾就是为了这个语音报价。好高兴好高兴,现在已经很满足了。太感谢楼主了,向wfy05朋友致以最真诚的祝福。
wfy05
注册时间2005-07-23
楼主发表于:2005-11-20 12:48只看该作者
74楼
原帖由 bsun 于 2005-11-18 12:02 发表 太好了,非常感谢楼主wfy05朋友,语音报价一直找了好久。 试用了一下,想请问几点问题。 1.修改设定时,怎样保存?例如修改时间为20,但按确定后,再看仍是10。其他的选项也是无法保存修改。 2.能否也在MT3版本里应用这个语音报价功能? 3.MT4里的图表所显示的价格,是买入价还是卖出价? 4.我如果只想按MT图表所显示的价格报价,每隔10秒报出图表的价格,例如内容是: 欧元 1.1722  欧元 1.17XX 这样 其他的内容不需要,那应该怎样修改? 5.在语音的选项里,常规里有名称连接,这个选项是什么意思,有没有作用?
1. hoho, 看你后面的这个问题已经解决了. 2. MT3我没试过,如果MT3到MT4的语言接口变动不大的话也可能能用, 但这个一般只有向下兼容,向上兼容就很难保证的. 不过我觉得MT有新版本的话一般就用新版本了, 老版本的话没有维护以及后续开发什么的时间一长就跟不上了. MT3也就MT4刚出来不成熟的时候短期过渡用, 我知道MT的时候MT4的服务器以及功能都很稳定了, 所以就跳过MT3直接用MT4了. 3. MT4线图里面的价格一般是买入价, 至于报价你可以自由选择买入价或者卖出价, 因为点差基本是固定的, 一般感觉还是用买入价就行了. 4. 你所说的这种报价格式目前不支持, 你如果自己懂MQ4的话直接改动倒也容易, 因为做这个脚本的时候还是考虑通用性以及大部分人的需求, 所以叉盘之类的也考虑进去了. 如果你只是对常用的一两个交易货币进行报价的话你完全可以选择将SpeakSymbol设置为false, 这样用也完全可以满足需求而且相当简洁 (一般需要实时观测的也就1-2种货币,通过数字范围也能知道是哪种货币, 比如EURUSD 1.2左右,USDCHF 1.3左右, 货币太多的话就算报名称听着也混乱) 最近有些忙,以后有时间我再考虑做点这方面改进. [ 本帖最后由 wfy05 于 2005-11-20 20:51 编辑 ]
wfy05
注册时间2005-07-23
楼主发表于:2005-11-20 13:01只看该作者
75楼
原帖由 bsun 于 2005-11-18 14:24 发表 不会,你说的已经是进阶功能,起警示作用。我理解为随图报价是最原本的功能,默认就可以全范围报价了。MT真是好东西,楼主真是高人,只要添加一个文件就解决了我的烦恼,我还下了数十个软件在那折腾就是为了 ...
很高兴能对大家有所帮助, 大家的肯定也是我的动力, 谢谢. 也欢迎多提改进意见, 我将尽力实现. :)
presentation
注册时间2005-07-09
发表于:2005-11-20 18:44只看该作者
76楼
建议将 double p = GetCurrPrice(); 下移至下一个IF下,否则每次都计算价格,一来太浪费CPU,二来我这里会出现GPF。 这个script真不错,可惜我一直无法讲中文,只能改成讲英文了,听了,唉。。。。经常反应不过来。
bsun
注册时间2005-04-13
发表于:2005-11-21 07:48只看该作者
77楼
原帖由 wfy05 于 2005-11-20 20:48 发表 1. hoho, 看你后面的这个问题已经解决了. 2. MT3我没试过,如果MT3到MT4的语言接口变动不大的话也可能能用, 但这个一般只有向下兼容,向上兼容就很难保证的. 不过我觉得MT有新版本的话一般就用新版本了, 老版本的话没有维护以及后续开发什么的时间一长就跟不上了. MT3也就MT4刚出来不成熟的时候短期过渡用, 我知道MT的时候MT4的服务器以及功能都很稳定了, 所以就跳过MT3直接用MT4了. 3. MT4线图里面的价格一般是买入价, 至于报价你可以自由选择买入价或者卖出价, 因为点差基本是固定的, 一般感觉还是用买入价就行了. 4. 你所说的这种报价格式目前不支持, 你如果自己懂MQ4的话直接改动倒也容易, 因为做这个脚本的时候还是考虑通用性以及大部分人的需求, 所以叉盘之类的也考虑进去了. 如果你只是对常用的一两个交易货币进行报价的话你完全可以选择将SpeakSymbol设置为false, 这样用也完全可以满足需求而且相当简洁 (一般需要实时观测的也就1-2种货币,通过数字范围也能知道是哪种货币, 比如EURUSD 1.2左右,USDCHF 1.3左右, 货币太多的话就算报名称听着也混乱) 最近有些忙,以后有时间我再考虑做点这方面改进. ...
感谢啊。暂时就按你的方法,把SpeakSymbol设置为false,不知道语音文件是单个的声音文件还是整合在一起?数字9的读音很含糊,如果能替换为其他更清晰的读音就更好了。 谢谢wfy05,你这个报价脚本真是好东西,顶好顶好。用得极爽呢,真是跨世纪大发明啊,国人智慧果然非凡,呵呵emoji-imageemoji-imageemoji-image
wfy05
注册时间2005-07-23
楼主发表于:2005-11-21 09:54只看该作者
78楼
原帖由 presentation 于 2005-11-21 02:44 发表 建议将 double p = GetCurrPrice(); 下移至下一个IF下,否则每次都计算价格,一来太浪费CPU,二来我这里会出现GPF。 这个script真不错,可惜我一直无法讲中文,只能改成讲英文了,听了,唉。。。。经常反应 ...
这个改了后效率是高点,谢谢提醒, 不过因为MT4实际上只在汇率变动的时候才调用start函数的触发机制, 而汇率变动不会太快,所以实际上最多也就1秒几次调用判断, 至于怎么导致GPF就不太清楚了. 我听英文报价也和你一样, 需要集中精神才能听清,而且中间有一个翻译的过程总是不如母语快捷, 没办法,听力不过关 :( 中文朗读win98应该也可以的, 你如果能把系统控制面板里面的那个朗读调试通过MT4也肯定没问题了, MT4里面通过那个报警设置也能进行测试, 实在不行你可以试试我第一帖里面给的那个微软官方下载 连接http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&DisplayLang=en 里面的SpeechSDK51.exe, SpeechSDK51LangPack.exe两个文件. (不要下speechsdk51msm.exe) 这个文件是大了点,不过微软自己提供的兼容性应该有保证.
感谢啊。暂时就按你的方法,把SpeakSymbol设置为false,不知道语音文件是单个的声音文件还是整合在一起?数字9的读音很含糊,如果能替换为其他更清晰的读音就更好了。
9的确抱得有点模糊, 但因为这种TTS引擎都是通过语素来合成语音的, 类似我们说中文时候用的拼音, 并没有针对某个单独数字/文字的语音文件,都是整体的. 单改就很难了. 只能将就一下了. 跨世纪大发明就肯定谈不上了,很简单的一个小脚本,只不过是利用了MT的强大功能而已 :)
wfy05
注册时间2005-07-23
楼主发表于:2005-11-21 10:15只看该作者
79楼
再发一个新版本的,对脚本结构之类的有了比较大的调整,可以对报价文字进行更自由的定制. 不过一般人用前一个版本也基本能满足功能了,有兴趣的可以试试. 说明如下: 1. 更新方法: 同前,可以直接更新后再用MetaEditor编译或者导航里面删除老版本后安装新版本并重启MT4 2. 变动说明: 1). 设置基本同前,最主要的改动就是增加了Format设置项 Format为字符串设置项,用来设置进行报价的字符串格式. 其中, 用"%"包围的为动态变量, 比如%PRICE%表示PRICE 变量,这里是用来表示当前的价格,在输出语音前将会用 当前价格替换%PRICE% 目前支持的变量列表如下: SELL_CURR 表示当前卖出的货币名 BUY_CURR 表示当前买入的货币名 PRICE 表示当前商品的价格 (买入还是卖出价格取决于UseBid的设置) ACTION 表示当前是买入价还是卖出价 ADD_DIR 表示当前报价与上次报价之间的价格差方向为上涨还是下跌 ADD 表示当前报价与上次报价之间的价格差点数 其他任何不在'%'之间的字符都将被原样朗读出来, 转化后的字符串中空格不影响朗读, 标点符号将产生停顿. (一般为了简洁就不用标点了) 用起来实际上很简单的, 比如默认的格式字符串: %SELL_CURR% 兑 %BUY_CURR% %ACTION% 价为 %PRICE% %ADD_DIR% %ADD% 这个格式实际输出时大概就是这样的: 欧元 兑 美元 买入 价为 1.1810 上涨 1点 比如前面bsun提到的需要只用直盘报价的类似" 欧元 1.1810"就可以用如下格式: %SELL_CURR% %PRICE% %ADD_DIR% %ADD% (变动点数范围仍然可以通过SpeakDelta参数调节, 设置为0则不报变动, 可以不调整格式) 另外注意如果需要报美元在前的比如USDCHF, 则用格式: %BUY_CURR% %PRICE% %ADD_DIR% %ADD% 还有比如之前的最简单的报价方式(即SpeakSymbol=false时, SpeakSymbol参数现已经删除) 可以用这个格式: %PRICE% %ADD_DIR% %ADD% 就这样, 欢迎大家测试提出意见 :) //+------------------------------------------------------------------+ //| 语音报价.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "[email protected]" #property link "www.talkfx.com" //---- input parameters extern bool Enabled=true; extern string Version="1.2"; extern string Format = "%SELL_CURR% 兑 %BUY_CURR% %ACTION% 价为 %PRICE% %ADD_DIR% %ADD%"; extern bool UseBid=true; extern int SpeakInterval=10; 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; 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 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)); int n = MathPow(10, Digits); double diff; double p = GetCurrPrice(); string add, adddir; diff = MathAbs(p*n-LastPrice*n); if (diff >= SpeakDelta && SpeakDelta != 0) { if (p > LastPrice) { adddir = "上涨"; } else if (p < LastPrice) { adddir = "下跌"; } add =DoubleToStr(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)) { DoSpeech(); } //---- return(0); } //+------------------------------------------------------------------+
presentation
注册时间2005-07-09
发表于:2005-11-21 10:37只看该作者
80楼
多谢 !!! 程序写的很好! [ 本帖最后由 presentation 于 2005-11-21 18:39 编辑 ]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 10
前往
共 200 条

本站免责声明:

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

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

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

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

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

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