以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- 为什么使用variable全局变量时K线图会变形?【学习心得】 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=3850) |
-- 作者:cc1983 -- 发布时间:2010/11/12 13:41:10 -- 为什么使用variable全局变量时K线图会变形?【学习心得】 习惯使用vb语法的人,在使用pel语言时,很可能会产生以下误区,使交易系统失效,k图变形,会让你反复检查错漏也毫无头绪,并且调试信息会显示测试正常,例如以下部分代码 variable:t=0; //t是用来计数的,用来计算某种情况累计发生的次数,是个全局累计变量 a:=。。。。; //描述a b:=。。。。; //描述b if a>b then begin //如果出现a>b的情况 BUY(HOLDING=0,1,MKT); //就开多 t=t+1; //每开一次多,就计数一次 end 之后你试试用到图表交易,会发现,本来没计数的时候,交易信号开多开空什么都好好的,可是加了个t变量后就什么信号也没有了,并且K线图也变形了,变成一条很扁的线,Y轴坐标的幅度变成是从0到9000多(如果你打开的是棕榈油的图),如果你打开的是股指期货的图,Y轴坐标幅度就变成0到3000多,测试公式,结果是测试正常。是不是想来想去都不知道是什么原因呢?如果你没有学过VB,可能你就不会犯这个错误了。哈哈。 关键就在于vb和pel的赋值格式是不同的。在vb,t=0,t=t+1都是没有错的;但在pel,除了全局变量外,只能写成t:=0,t:=t+1。在上面的例子,variable后面必须写了t=0,这就很容易把习惯vb语法的带回去VB语法里,使他们在下面犯下t=t+1这种写法的错误,而自己又很难发现。 我在刚使用pel的时候,就犯过这种错误,当时我检查了很久也没查出错在哪里,甚至还一度以为pel的全局变量不能搞可以被赋值为常数变量 。到后来,接触pel的时间久了,习惯才慢慢地改变过来,才发现自己犯错的原因。在此发个贴,总结思路,引起自己重视。也用来和初学习pel的朋友分享。 |
-- 作者:董小球 -- 发布时间:2010/11/12 14:34:27 -- 鼓励开源共享 |