欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 【提问】后台程序一定要加islastbar?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4100人关注过本帖平板打印复制链接

主题:【提问】后台程序一定要加islastbar?

帅哥哟,离线,有人找我吗?
cathero2001
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:308 积分:0 威望:0 精华:0 注册:2014/2/10 23:56:25
【提问】后台程序一定要加islastbar?  发帖心情 Post By:2014/6/2 14:49:27    Post IP:192.102.204.36[只看该作者]

老师,您好

我刚看了“联机帮助”里的一段话有点困惑:

====================================================================================

另外请注意:

对于最后一个周期(图表上看就是最新的那个周期)才起作用的函数,如果使用了全局变量进行控制,千万记得加上islastbar控制条件,比如下面例子:

 

variable:a=10;

debugout('a1=%.0f',a);

if a=10 then begin

debugout('a2=%.0f',a);

tbuy(1,1,mkt);

a:=6;

debugout('a3=%.0f',a);

end;

debugout('a4=%.0f',a);

 

 

 

上面这个例子将无法得到下单买入的目的,因为当程序运行后,在第一周期TBUY并不执行,因为不是最新的周期,而此时a即被赋值为6,那么当程序一遍遍扫描运行到最新周期后,IF语句检测到a=6就不执行买操作了,所以您永远都不会有下单触发。

   上述公式将无法正常工作,是因为variable声明的变量是在整个计算周期内的全局变量,对于tbuy和debugout函数,他们都是在公式的最后的一个周期(最新周期的数据才能用于下单或者输入调试结果)才执行的函数,所以将导致最后一个周期到来时a实际已经等于6而不会去正确执行开仓语句。

解决办法是:if a=10 and islastbar then begin 这样加上最后周期判断,以避免a被过早赋新值,或者去掉 variable 变量声明,让a变为一个周期之内的变量即可。

====================================================================================

让我困惑的是,为什么这个TBUY无法成交?难道我打开金字塔,启动后台程序开始交易,这时候操作的对象并不是最新一根K线?我什么时候必须加islastbar?我怎么知道系统是否运行在最后一根K线上?

谢谢!

 回到顶部
总数 21 1 2 3 下一页