以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  策略编写求助区  (http://222.73.7.161/bbs/list.asp?boardid=11)
----  关于全局变量在后台交易中的正确书写  (http://222.73.7.161/bbs/dispbbs.asp?boardid=11&id=11876)

--  作者:sun884588
--  发布时间:2012/5/22 13:56:45
--  关于全局变量在后台交易中的正确书写

if bb  then begin

    tsellshort(1,0,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tsell(1,0,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;
    tbuy(1,1,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tbuyshort(1,1,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;
   
  end

if ss  then begin

    tsell(1,0,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
   
    tsellshort(1,0,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
   
    tbuyshort(1,1,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
   
    tbuy(1,1,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
   
  end

 

 

大家好!请教一个关于全局变量的问题。

 

 

上面的例子。比方出现了bb,于是我们执行bb之后的4步,之后产生的bb不继续开仓。一直等到ss出现,执行ss的四步。之后的ss不执行,直到bb出现

希望通过全局变量来控制。请知道的同志教我一下。


--  作者:jinzhe
--  发布时间:2012/5/22 14:40:12
--  

//EXTGBDATASET( \'k1\',0);
//EXTGBDATASET( \'h1\',0);

if bb  and EXTGBDATA(\'k1\' )=0 then begin

    tsellshort(1,0,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tsell(1,0,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;
    tbuy(1,1,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tbuyshort(1,1,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;
    EXTGBDATASET( \'k1\',1);
    EXTGBDATASET( \'h1\',0);
  end

if ss  and EXTGBDATA(\'h1\' )=0 then begin

    tsell(1,0,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
   
    tsellshort(1,0,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
   
    tbuyshort(1,1,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
   
    tbuy(1,1,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
    EXTGBDATASET( \'h1\',1);
    EXTGBDATASET( \'k1\',0);
  end

 


--  作者:sun884588
--  发布时间:2012/5/22 14:49:25
--  

谢谢金先生,我去试试


--  作者:jinzhe
--  发布时间:2012/5/23 13:03:12
--  
把开头的这两句给去掉

EXTGBDATASET( \'k1\',0);
EXTGBDATASET( \'h1\',0);


--  作者:阿火
--  发布时间:2012/5/24 21:14:17
--  

2楼的写法没符合楼主要求吗?

 

逐K线模式的话,还要加islastbar控制

 

if bb  and EXTGBDATA(\'k1\' )=0 then begin

    tsellshort(1,0,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tsell(1,0,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;
    tbuy(1,1,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tbuyshort(1,1,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;
    if islastbar then begin

      EXTGBDATASET( \'k1\',1);
      EXTGBDATASET( \'h1\',0);

    end
end

if ss  and EXTGBDATA(\'h1\' )=0 then begin

    tsell(1,0,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
    tsellshort(1,0,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
    tbuyshort(1,1,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
    tbuy(1,1,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
    if islastbar then begin

      EXTGBDATASET( \'h1\',1);
      EXTGBDATASET( \'k1\',0);

    end

end

[此贴子已经被作者于2012-5-24 21:21:06编辑过]

--  作者:sun884588
--  发布时间:2012/5/24 21:20:24
--  
是的,问题很奇怪。我也觉得金哲的代码貌似没有问题啊。我是用逐k,分笔轮训。1分钟周期。
--  作者:阿火
--  发布时间:2012/5/24 21:23:20
--  
逐K线要加islastbar控制
--  作者:sun884588
--  发布时间:2012/5/24 21:27:14
--  

以上面的为例,比方存在

1.不开仓,明明满足条件了,不开仓,为什吗说条件满足了呢,因为两点a,全局变量已经改变。b。我用了另外一个帐号,不使用全局变量,即原始信号,是有信号。

2.当bb满足,正常k1应该变成1,但是奇怪的是k1会来回跳,一会是1,一会是0.这就怪了呀,正常情况,k1变回0只可能触及了ss,问题是此时并没有执行ss,而是仍旧保留这bb的仓位。过一会,它又跳回来1了。


--  作者:阿火
--  发布时间:2012/5/24 21:28:33
--  

如果你的条件是“可历史记忆”的话,用variable就行了吧

 

逐K线模式

variable:abb=0;

if bb  and abb>=0 then begin

    abb:=-1;

    tsellshort(1,0,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tsell(1,0,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;
    tbuy(1,1,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tbuyshort(1,1,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;

end

if ss  and abb<=0 then begin

    abb:=1;

    tsell(1,0,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
    tsellshort(1,0,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
    tbuyshort(1,1,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
    tbuy(1,1,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;

end

[此贴子已经被作者于2012-5-24 21:28:56编辑过]

--  作者:sun884588
--  发布时间:2012/5/24 21:32:00
--  
3.仓位错误。正常情况永远是1手多1手空,但是会出现连续开仓或开错仓的问题。因为使用全局变量,主要的目的就是控制开仓次数,进场后不动,直到出现反向信号再动作,但是实际情况是仍旧会开新的仓,即3手多,3手空甚至更多。还见到过完全对冲。总之没有确定的规律。也有开对的时间。