以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  分享一些自动切换交易合约的代码,同时让专家们看看有没有问题  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=50794)

--  作者:klc
--  发布时间: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编辑过]

--  作者:王锋
--  发布时间:2013/4/8 17:29:17
--  

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

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

 

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


--  作者:klc
--  发布时间:2013/4/8 17:33:10
--  
日志我打开了,因为新策略上线,这是必须的,但总不能代码写得一塌糊涂就拿真金白银去试
--  作者:王锋
--  发布时间:2013/4/8 22:07:08
--  

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

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


--  作者:klc
--  发布时间:2013/4/9 9:11:24
--  
好了,知道了