以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=11982)

--  作者:sun884588
--  发布时间:2012/5/28 14:15:19
--  阿火先生请进,感谢并提问

那就是信号不可历史记忆了。上面说过方法了,应该可以了,你明天试试

 

给你写个简明版的, 用一个全局变量就行了

if islastbar then begin

if bb  and EXTGBDATA(\'abb\')>=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( \'abb\',-1);
  end

if ss  and EXTGBDATA(\'abb\')<=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( \'abb\',1);
  end

end

 

 

这是先生上次给写的模板,我用了,非常感谢。

 

这实际想问反手仓的写法,目前模拟仓,基本没有出错。但是因为虚拟资金比较充裕。我很想知道,如果是对冲的做法,完整的,不易出错的反手仓应该怎样设计。比方我们准备40万的资金,根据上面的写法,如果每次开一手多,一手空,反向的时间,另外一手空,一手多,保证金刚好是两手的钱。如何可以不出错。看了您的秘籍,因为是单手反向,和我这个有些区别,有点不知所措。请指导一下,谢谢您了。

 

 

我的条件依旧是逐k下,轮训,分笔,触位就动作,图表不同于后台(无历史)该怎么写。向上面的这样操作的话。真不好意思,总麻烦您,谢谢阿火


--  作者:sun884588
--  发布时间:2012/5/28 14:27:46
--  

if islastbar then begin

if bb  and EXTGBDATA(\'ax\')<=0 and EXTGBDATA(\'bx\')<=0 then begin
    tsellshort(1,0,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tsell(1,0,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;
    EXTGBDATASET( \'ax\',1);
    end
   sleep(10000);
if bb  and EXTGBDATA(\'ax\')>=0 and EXTGBDATA(\'bx\')<=0 then begin   
    tbuy(1,1,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tbuyshort(1,1,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;
    EXTGBDATASET( \'bx\',1);
    end

if ss  and EXTGBDATA(\'ax\')>=0 and EXTGBDATA(\'bx\')>=0 then begin
    tsell(1,0,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
    tsellshort(1,0,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
    EXTGBDATASET( \'ax\',-1);
    end
    sleep(10000);   
 if ss  and EXTGBDATA(\'ax\')<=0 and EXTGBDATA(\'bx\')>=0 then begin  
    tbuyshort(1,1,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
    tbuy(1,1,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
    EXTGBDATASET( \'bx\',-1);
  end

end

 

 

 


--  作者:sun884588
--  发布时间:2012/5/28 14:40:00
--  

上面的是我自己写的,很粗糙,请您指导。

 

我用两个全局变量是因为考虑到一个问题:在bb点我们总共要做4步操作,分别是平仓(09空,06多)06没有问题,09有个小问题,因为09盘口一般就一张单子。我的平仓操作就把盘口卖一给吃掉了。之后如果根据条件,还要开09多单,但此时09多单对应的卖一盘口不是bb出现时间的盘口了。因为卖一被我前面的平仓单吃掉了。所以此时的卖一不是刚才出现信号的卖一了。我实际是想满足这样的需求:满足条件先无条件平仓。之后再判定是否还属于bb即盘口被自己打掉后的价格改变是否还满足开仓需要。是的话,开仓。不是就等待,没有就放弃。一旦满足,仍旧是一张多单,一张空单。

 

昨晚上想了3个小时,拼凑出上面的东西,实际自己完全绕晕了。可能完全不对。请您看看,实现我的希望应该怎样的写,才是正解呢。

 

sleep函数的加入是因为,我做的是模拟,模拟是不会改变盘口的。所以,基本发出信号和您的单变量效果一样。所以我用sleep函数替代。

 

 

谢谢谢谢,阿火


--  作者:阿火
--  发布时间:2012/5/28 15:44:00
--  

不是有带了“orderqueue” 了吗

而且你下单都是加了3个点了,基本上会立即成交,直接就可以用了


--  作者:sun884588
--  发布时间:2012/5/28 16:39:11
--  
关于我写的那个双全局变量在实盘是否可以控制平仓后如果条件不成立,不开仓?
--  作者:sun884588
--  发布时间:2012/5/28 17:03:19
--  
我的意思是先平仓,之后看,因为我的平仓行为导致价格改变,进场开仓再判定一次。问题是我不确定的是,可能存在这样的情况。我不知道会不会,您帮忙分析一下。平仓指令先发出,正常情况,用了orderqueue是不是一步步执行,但是一定是资金返回了再执行下面步骤还是仅仅是信号步骤,即在平仓指令不完成之前,是否会执行开仓指令。不知道我说清楚没有。我的意思是我的平仓单可能造成价格对自己开仓价格的不利。因为bb,ss信号本身很多,我可以等。即第一个bb出现是平仓,如果之后再出现bb则开仓。ss同理。第一个ss作为平仓动作,第二次满足再满足ss开仓。即目的是等个比较好的开仓条件。就是信号产生第一是平仓,第二才是开仓。只是不知道后台的执行先后,怎样的判定是正确的^_^向您请教。
--  作者:sun884588
--  发布时间:2012/5/28 17:08:49
--  金字塔编译出TD指标
我再描述一下。正常orderqueue之后是否上面的语句执行完整,资金是否回笼,再执行后面的^_^也就是卖一盘后是否改变^_^我是否可以用上面的语句这样表达,因为模拟我看不出区别,也不知道,写的对不对,请您在逻辑上帮我看看,是否可以。
--  作者:sun884588
--  发布时间:2012/5/28 17:11:01
--  
语言表达好像真的很差。。。。。。也不知道阿火能看明白没。。。。。。
--  作者:sun884588
--  发布时间:2012/5/28 17:19:15
--  
Sleep函数是想看延时的情况,正式情况我不想用它。我只想在第一平仓比方bb,第二bb根据bb的条件开仓。ss同理。如果bb之后没有再符合bb条件即没有更好的价格,直接进入ss那也没关系,就放弃该次bb。即进场希望价格有利些。应该怎样写呢,我写的那个完全自己琢磨的很可能不对,请阿火老师帮忙写一个正确的,谢谢哦
--  作者:sun884588
--  发布时间:2012/5/28 23:09:53
--  
 if islastbar then begin
if bb and  EXTGBDATA(\'fc\')<0 then
 begin;
    tsellshort(1,0,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tsell(1,0,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue; 
     EXTGBDATASET( \'fc\',0);
    end
   
if ss and EXTGBDATA(\'fc\')>0  then
 begin;
    tsell(1,0,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
    tsellshort(1,0,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
     EXTGBDATASET( \'fc\',0); 
    end
   
if bb and  EXTGBDATA(\'fc\')=0 then
 begin;
    tbuy(1,1,lmt,远期卖一+3,0,\'802089\',\'zjif09\'),orderqueue;
    tbuyshort(1,1,lmt,近期买一-3,0,\'802089\',\'zjif06\'),orderqueue;
     EXTGBDATASET( \'fc\',1); 
    end
   
     
if ss and  EXTGBDATA(\'fc\')=0  then
 begin;
    tbuyshort(1,1,lmt,远期买一-3,0,\'802089\',\'zjif09\'),orderqueue;
    tbuy(1,1,lmt,近期卖一+3,0,\'802089\',\'zjif06\'),orderqueue;
     EXTGBDATASET( \'fc\',-1); 
    end
   
    end