//External function to replace the say() add desired spoken times. Intervals=NumToStr(Interval()); function Saying( text, repeat ) { speak=Nz(StaticVarGet("lastspeak"+Intervals)); if( speak<=repeat ) { StaticVarSet("lastspeak"+Intervals, speak+1 ); PlotText(NumToStr(speak,1.0),BarCount+speak,80,2); Say( text ); } } PrevBar=StaticVarGet("PB"+Intervals); CurrentBar=LastValue( BarIndex() ); NewBar = PrevBar != CurrentBar; StaticVarSet("PB"+Intervals,CurrentBar); if(NewBar) StaticVarSet("lastspeak"+Intervals, 0 ); //end of function as Saying(your text,number of voice) 用这个代替以前的saying() 测过了,可以的
是啊,这次是终于成功了,我这里测试也是正常,可是加在不同周期里面就是报错不能正常显示和报警了,请问你上次说的如果一定要在主图附图或不同周期下同时使用这个报警功能,全局变量的名称必须不一样 ,“全局变量”是指哪一个,应该怎么改啊?我想对应不同类型和周期的信号都分别会有报警提示 ,希望实现这个功能,请你再提示我一下。非常感谢! 我是这样改的,结果对应的图表不能显示,报警还是一直持续 PrevBar=StaticVarGet("PB1"+Intervals); CurrentBar=LastValue( BarIndex() ); NewBar = PrevBar != CurrentBar; StaticVarSet("PB1"+Intervals,CurrentBar);
//External function to replace the say() add desired spoken times. //Intervals=Interval(); intervals=GetChartID(); function Saying( text, repeat ) { speak=Nz(StaticVarGet("lastspeak"+Intervals)); if( speak<=repeat ) { StaticVarSet("lastspeak"+Intervals, speak+1 ); PlotText(NumToStr(speak,1.0),BarCount+speak,80,2); Say( text ); } } PrevBar=StaticVarGet("PB"+Intervals); CurrentBar=LastValue( BarIndex() ); NewBar = PrevBar != CurrentBar; StaticVarSet("PB"+Intervals,CurrentBar); if(NewBar) StaticVarSet("lastspeak"+Intervals, 0 ); //end of function as Saying(your text,number of voice) 就这样吧,不适合同样主图多种信号,但可以适合于不同charts同时发声, 至于一个主图多种信号都报警?可以考量合并信号,或对照软件手册来修改saying中的全局变量,你自己发挥吧