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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → state的值为何不是1呢?

   

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


  共有5078人关注过本帖树形打印复制链接

主题:state的值为何不是1呢?

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


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/6 22:42:44 [只看该作者]

MSGOUT(1,numtostr(holding,0));

IF NOT(ISLASTBAR) THEN
 EXIT;

TJB:=HIGH>REF(HIGH,1) AND holding=0;
BUY(TJB,1,MARKET);


MSGOUT(1,numtostr(TJB,0));
MSGOUT(1,numtostr(holding,0));


 回到顶部
帅哥哟,离线,有人找我吗?
klc
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/6 22:43:49 [只看该作者]

buy前holding是0,buy后是1,在一根K线内,不管你有几个tick,除了换K线时,前面都是在重复,但图表交易的特点就是只保留最后状态

 回到顶部
帅哥哟,离线,有人找我吗?
klc
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/6 22:58:56 [只看该作者]

另外,你的REF(HIGH,1) 放在exit后面,一定会发生一些你意想不到的问题的,所以REF(HIGH,1) 必须放在exit前去取值,要不你就用callstock(stklabel,vtHigh,....这样的取值方式

 

不过这点小问题不影响你要问的问题本质


 回到顶部
美女呀,离线,留言给我吧!
vba
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:163 积分:480 威望:0 精华:0 注册:2013/5/4 11:04:52
  发帖心情 Post By:2013/5/7 9:03:57 [只看该作者]

呵呵,感谢klc兄的辛苦回复,不过似乎你没看明白我的问题啊!我下面补充的帖子已经把EXIT那段代码去掉了,不加了总可以吧!我当然知道holding在buy之前是0,buy之后是1,可问题就出在当buy执行过以后为什么TJB还会一直是1?这是我的问题所在!也请客服老师解答一下我的疑惑啊!
[此贴子已经被作者于2013-5-7 9:04:12编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fly
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2013/5/7 9:50:04 [只看该作者]

klc兄正解

楼主的症结在于,把你TJB条件分开写

 

TJB:=HIGH>=REF(HIGH,1);

BUY(TJB AND STATE=0,1,MARKET);


MSGOUT(TJB AND STATE=0, 'A');

[此贴子已经被作者于2013-5-7 9:52:17编辑过]


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
美女呀,离线,留言给我吧!
vba
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:163 积分:480 威望:0 精华:0 注册:2013/5/4 11:04:52
  发帖心情 Post By:2013/5/7 10:12:55 [只看该作者]

谢谢fly老师,能否详细说明一下原理吗?为什么要分开写呢?合起来写为什么就不对呢?

 

即为什么要这样写:

TJB:=HIGH>=REF(HIGH,1) AND ISLASTBAR;

BUY(TJB AND STATE=0,1,MARKET);

 

而不是这样写:

TJB:=HIGH>=REF(HIGH,1) AND ISLASTBAR AND STATE=0;

BUY(TJB,1,MARKET);

 


 回到顶部
帅哥哟,离线,有人找我吗?
fly
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2013/5/7 10:48:24 [只看该作者]

代码执行有先后顺序.

 

逐K线模式为从第1周期逐个周期解析公式系统,每个周期都会解析整个公式系统一遍.

 

我们只说,最后一个周期的执行情况,

每来一个TICK就会将代码从头到尾执行一遍,

      HIGH>=REF(HIGH,1) AND STARE=0 (此时若将整个赋值给TJB,则TJB为1)满足,则进行买卖,执行BUY语句,BUY语句执行完后,STATE为1,但之前赋值的TJB沿用之前的赋值仍然为1;如果执行完BUY之后,再重新将TJB1:=HIGH>=REF(HIGH,1) AND STARE=0赋值给TJB1,由于BUY执行前后STATE的变化会看到此时TJB1的值为0;

      再一个TICK来的时候,将代码从头到尾执行一遍,这个时候是不知道上一遍的执行结果的(除非用全局变量记录,这就是全局变量和局部变量的区别),仍然按照之前TICK的判断步骤进行操作.

 

如果成为历史之后,我们将看到,实际是按照最后一个TICK,即该K线收盘时的情况,来判断条件是否满足----就是klc兄说的图表交易的特点就是只保留最后状态,这也就会出现信号闪烁(所以开仓条件要用HIGH,LOW,OPEN做条件).

 

BUY语句在执行交易的时候,每跟K线只能开一次单,可保证一根K线内不重复下单

[此贴子已经被作者于2013-5-7 10:59:42编辑过]


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
美女呀,离线,留言给我吧!
vba
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:163 积分:480 威望:0 精华:0 注册:2013/5/4 11:04:52
  发帖心情 Post By:2013/5/7 11:22:08 [只看该作者]

非常感谢fly老师的详细解答。

这么说来,那state,holding也都是局部变量了?拿最后一根k线来说,刚开始state=0,holding=0,然后执行buy,然后state<>0,holding<>0,当再来一个tick后,由于state和holding也是局部变量,也就不知道之前已经开过仓了,所以,state=0,holding=0,

不知我的理解对吗?如果理解正确,要在当根k线走完之前判断是否已经开过仓了,就不能用state,holding之类的函数了,要用全局变量记录,否则就会重复开单对吗?这就是历史回测和实盘的最大区别,感谢客服老师!

[此贴子已经被作者于2013-5-7 11:22:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fly
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2013/5/7 14:10:46 [只看该作者]

BUY语句在执行交易的时候,每跟K线只能开一次单,可保证一根K线内不重复下单

 

这个是由程序低层限制的,你可不管

 

其实本质就是变量的不同



金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
美女呀,离线,留言给我吧!
vba
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:163 积分:480 威望:0 精华:0 注册:2013/5/4 11:04:52
  发帖心情 Post By:2013/5/7 15:07:04 [只看该作者]

真的很感谢fly老师这样详细的解释。那基于这种情况,在这根k线出现buy,那当这根k线走完之前,我如何判断已经开过仓了呢?事后当然好判断了,state,holding都可以。这个疑惑解开我就彻底明白了。还请fly老师再忍一忍,解答小女子最后一个问题!拜谢了!

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