以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 怎样通过全局变量控制PLAYSOUND函数只播报一遍声音 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=390) |
-- 作者:轮回 -- 发布时间:2009/12/7 11:12:49 -- 怎样通过全局变量控制PLAYSOUND函数只播报一遍声音 当K线满足触发条件时,打开声音播报,但这个条件要维持到这根K线周期走完声音才停止,如何控制声音只播报一遍? [此贴子已经被admin于2009-12-7 11:24:38编辑过]
|
-- 作者:admin -- 发布时间:2009/12/7 11:30:17 -- 使用 EXTGBDATASET(S,X) 和 EXTGBDATA(S) 来设置和读取全部变量. 金字塔的全局变量属于一个小型数据库,保存的变量值会一直保存下去,即便关了金字塔软件也会在下次启动时保存数据. 全局变量的管理在 工具->数据->全局变量 菜单项找到.
具体实现思路是: EXTGBDATASET(\'LastBar\',barpos); lastbarpos:=EXTGBDATA(\'\'LastBar\'\'); PLAYSOUND(COND AND lastbarpos != barpos,\'e:\\music.mp3\'); |
-- 作者:轮回 -- 发布时间:2009/12/7 11:41:33 -- 从原理上看这种思路并不能实现只报一遍的功能。 |
-- 作者:admin -- 发布时间:2009/12/7 11:50:59 -- 把你试过了不能实现的代码贴出来看看 |
-- 作者:轮回 -- 发布时间:2009/12/7 12:17:16 -- EXTGBDATASET(\'LastBar\',barpos); //存地址 lastbarpos:=EXTGBDATA(\'\'LastBar\'\'); //取地址 PLAYSOUND(COND AND lastbarpos != barpos,\'e:\\music.mp3\'); //这里lastbarpos永远是当前地址,所以lastbarpos != barpos条件永远不会成立,因此永远不会播报。 该问题我已解决。 [此贴子已经被作者于2009-12-7 12:18:11编辑过]
|
-- 作者:bhwhui -- 发布时间:2009/12/7 12:35:38 -- 怎么解决的?感兴趣,用Variable? 谢谢。 [此贴子已经被作者于2009-12-7 12:35:50编辑过]
|
-- 作者:轮回 -- 发布时间:2009/12/7 12:40:57 -- 全局变量并不好用,应该有一些问题.即使使用字符型全局变量,也会使K图压缩变形,解决只报一遍的这个问题不需要使用全局变量. |
-- 作者:bhwhui -- 发布时间:2009/12/7 12:53:49 -- 呵呵呵,您还是没说出来,估计有3个方法. 1:时钟控制 2:Variable 控制 3:信号跳变一瞬间控制。
“也会使K图压缩变形”,什么意思?不明白,谢谢。 |
-- 作者:轮回 -- 发布时间:2009/12/9 15:09:17 -- 以下是引用bhwhui在2009-12-7 12:53:49的发言:
呵呵呵,您还是没说出来,估计有3个方法. 1:时钟控制 2:Variable 控制 3:信号跳变一瞬间控制。
“也会使K图压缩变形”,什么意思?不明白,谢谢。 呵呵,还在测试阶段,有时侯会在中间自动插入一个"叮当"的铃声,也有个别时候会报两遍,还在找原因. |
-- 作者:dzfp2010 -- 发布时间:2010/3/18 12:16:43 -- 关于:彻底解决:【残害贩卖!流浪儿童!】 可以实现的,加IF判断,代码如下:
\'如果不是最后一根K线 IF BarPos<>EXGBDATA("LastBar") THEN BEGIN
\'播放音效文件 PLAYSOUND(1,\'e:\\music.mp3\');
\'给自定义的全局变量重新赋值: EXGBDATASET("LastBar",BarPos); END
[此贴子已经被作者于2010-3-18 12:24:25编辑过]
|