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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 分享一些自动切换交易合约的代码,同时让专家们看看有没有问题

   

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


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

主题:分享一些自动切换交易合约的代码,同时让专家们看看有没有问题

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


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
分享一些自动切换交易合约的代码,同时让专家们看看有没有问题  发帖心情 Post By:2013/4/8 17:24:27 [只看该作者]

VBA部分(自定义函数):

 

Function GotoCode(Formula,X)
    if X=1  and Formula.ParentGrid.DataType=1 and Formula.ParentGrid.Type=0 then  '仅允许叠加到主图且为K线图的公式调用
      Code=Document.GetExtString("股指交易合约")             '交易合约从全局变量中取合约代码
      if Code="" then Code="IF00"                                     '取不到就交易IF00了
      Formula.ParentGrid.ChangeStock Code,Formula.ParentGrid.Market
    end if
    GoToCode=0

End Function

 

Perl公式代码部分:

yuefen:=month();

//12月交易1月合约,1月交易2月合约,2月交易3月合约,依此类推
if (yuefen=12) then
 jyhy:='IF01';
else if (yuefen>=1 and yuefen<=8) then
 jyhy:='IF0'+NUMTOSTR(yuefen+1,0);
else if (yuefen>=9 and yuefen<=11) then
 jyhy:='IF'+NUMTOSTR(yuefen+1,0);
isjyhy:=STKLABEL='IF00' or STKLABEL=jyhy;      //当前是否要交易的合约
if (isjyhy=false and ISLASTBAR and THOLDING=0 and HOLDING=0) THEN    //最后一根K线无虚拟持仓,也无实际持仓的情况下,如当前合约不是要交易的合约,就载入要交易的合约
begin
 EXTGBSTRINGSET('股指交易合约',jyhy);     //用全局变量传递合约代码
 fhz:=GotoCode(STKLABEL<>jyhy);
end;

 

以下为具体交易代码,但注意开仓的条件中,一定加入isjyhy这个条件,省略代码

 

问专家:我想只有无持仓的情况下,才切换,否则等平仓信号才切换,由于我的策略不可能出现持仓10日以上,因此交易次月合约的情况下不可能到交割日还不平仓。当THOLDING=0 and HOLDING=0才切换,我同时用了虚拟持仓和实际持仓,为的是避免图表上出现平仓信号,HOLDING已经是0的时候,由于执行平仓需要一个过程(例如走完K线才平仓),再加上平仓委托不一定就成交,所以我想可能THOLDING还未必是0。这样用应该没问题吧

 

以上逻辑就是:当图表和实际持仓均空仓的时候,检查当前交易合约的代码,如果不是次月合约,就调用GotoCode的自定义函数切换到次月合约

 

这里还有一个问题,就是如果平仓并反手,能不能保证平仓后,切换到新品种,再反手(走完K线的情况下,实际上两个信号是接连出线的,因为还没遇到,所以不知道实际怎么样)

[此贴子已经被作者于2013-4-8 17:26:14编辑过]

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/8 17:29:17 [只看该作者]

很多的公式逻辑问题,只能是你自己多尝试才能知道结果了。

推荐你看看通过日志的方法,这种方法不仅可以调试你的代码,也可以了解一些金字塔的工作机理。

 

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=49428



金字塔—专业程序化软件提供商

金字塔-技术部

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

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
klc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

日志我打开了,因为新策略上线,这是必须的,但总不能代码写得一塌糊涂就拿真金白银去试

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/8 22:07:08 [只看该作者]

我给你的帖子链接不知道你是否有耐心的看过。

不仅仅是系统自带的日志,你的程序代码中的日志记录同样重要



金字塔—专业程序化软件提供商

金字塔-技术部

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

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
klc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

好了,知道了

 回到顶部