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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 达到条件A 全部平掉,怎么表达呢?

   

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


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

主题:达到条件A 全部平掉,怎么表达呢?

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


加好友 发短信
等级:论坛游民 帖子:271 积分:730 威望:0 精华:0 注册:2011/6/22 15:58:05
  发帖心情 Post By:2014/1/14 13:52:01    Post IP:14.119.119.189[只看该作者]

IF  UP_G1  AND  EXTGBDATA('SKV_G1') =0  AND EXTGBDATA('Last_ Location')=0 THEN  
    BEGIN
        EXTGBDATASET('T0',TIMETOT0(DYNAINFO(207)));
        EXTGBDATASET('Last_ Location',1) ;
    END 
        
IF  TISREMAIN(3) && EXTGBDATASET('Last_ Location',1) &&
TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')>0 && 
TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')<=2 THEN;
     BEGIN 
          TCANCEL(1,0);
          EXTGBDATASET('T0',TIMETOT0(DYNAINFO(207)));
      END
      
IF  TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')>0 && 
TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')<=2 THEN;
     BEGIN       
         TBUYSHORT(1,SS,LMT,G1+10); // 在G1的上面10个点挂一张多单,这里您要区分点和变动价位的差别,MINDIFF表示变动价位
         TBUY(1,SS,LMT,LMT,G1-10);      // 在G1的下面10个点挂一张多单
         EXTGBDATASET('SKV_G1',1) ;
         EXTGBDATASET('TOTAL_SVOL',EXTGBDATA('TOTAL_SVOL')+SS);
         DEBUGFILE('D:\DEBUG\GRID_DEBUG.TXT','G1开空_SKV_G1=%.0f' ,EXTGBDATA('SKV_G1'));
         DEBUGFILE('D:\DEBUG\GRID_DEBUG.TXT','TOTAL_SVOL=%.0f' ,EXTGBDATA('TOTAL_SVOL'));
         DEBUGFILE('D:\DEBUG\GRID_DEBUG.TXT','Last_ Location=%.0f' ,EXTGBDATA('Last_ Location'));
     END 

请教一下,我想当红色条件出现后,才执行蓝色部分的,但蓝色部分出现后才执行绿色部分,就是红色如果没有触发,后面的两个条件都不会触发,请问用什么控制语句可以实现呢?
代码都是红色部分出现后1秒,触发蓝色部分 ,而蓝色部分触发后1秒,才触发绿色部分,谢谢

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/1/14 14:05:49    Post IP:58.246.57.26[只看该作者]

IF  UP_G1  AND  EXTGBDATA('SKV_G1') =0  AND EXTGBDATA('Last_ Location')=0 THEN  
    BEGIN
 
        EXTGBDATASET('T0',TIMETOT0(DYNAINFO(207)));
        EXTGBDATASET('Last_ Location',1) ;
        
        IF  TISREMAIN(3) && EXTGBDATASET('Last_ Location',1) && TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')>0 && 
        TIMETOT0(DYNAINFO(207))-EXTGBDA('T0')<=2  THEN
 
            BEGIN 
                TCANCEL(1,0);
                EXTGBDATASET('T0',TIMETOT0(DYNAINFO(207)));
                  
                 IF  TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')>0 && 
                 TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')<=2 THEN;
                    BEGIN       
                        TBUYSHORT(1,SS,LMT,G1+10); // 在G1的上面10个点挂一张多单,这里您要区分点和变动价位的差别,MINDIFF表示变动价位
                         TBUY(1,SS,LMT,LMT,G1-10);      // 在G1的下面10个点挂一张多单
                       EXTGBDATASET('SKV_G1',1) ;
                           EXTGBDATASET('TOTAL_SVOL',EXTGBDATA('TOTAL_SVOL')+SS);
                         DEBUGFILE('D:\DEBUG\GRID_DEBUG.TXT','G1开空_SKV_G1=%.0f' ,EXTGBDATA('SKV_G1'));
                        DEBUGFILE('D:\DEBUG\GRID_DEBUG.TXT','TOTAL_SVOL=%.0f' ,EXTGBDATA('TOTAL_SVOL'));
                     DEBUGFILE('D:\DEBUG\GRID_DEBUG.TXT','Last_ Location=%.0f' ,EXTGBDATA('Last_ Location'));
                END 
          end
end
 
你这1秒后怎么怎么样的计算方式用VBA比较好,后台已经不太适合你了,后台的计算方式做不到这点了,后台能做到的就是进行条件的嵌套了
 
 
 
[此贴子已经被作者于2014/1/14 14:06:51编辑过]


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

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

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

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


加好友 发短信
等级:论坛游民 帖子:271 积分:730 威望:0 精华:0 注册:2011/6/22 15:58:05
  发帖心情 Post By:2014/1/14 14:12:03    Post IP:14.119.119.189[只看该作者]

您的意思是用VBA写脚本,然后后台拿来引用是吗?

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


加好友 发短信
等级:论坛游民 帖子:271 积分:730 威望:0 精华:0 注册:2011/6/22 15:58:05
  发帖心情 Post By:2014/1/14 14:16:13    Post IP:14.119.119.189[只看该作者]

VBA的如果要实现上面的要求,要怎么写呢?
可以简单写一下吗?我研究一下

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/1/14 14:25:08    Post IP:58.246.57.26[只看该作者]

VBA已经不是这里能够处理的了的,你需要去高级功能研发区那里发帖咨询


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

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

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

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


加好友 发短信
等级:论坛游民 帖子:271 积分:730 威望:0 精华:0 注册:2011/6/22 15:58:05
  发帖心情 Post By:2014/1/14 14:26:30    Post IP:14.119.119.189[只看该作者]

哦,这样,好的,非常感谢

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


加好友 发短信
等级:论坛游民 帖子:271 积分:730 威望:0 精华:0 注册:2011/6/22 15:58:05
  发帖心情 Post By:2014/1/15 10:24:35    Post IP:14.119.119.189[只看该作者]

老师,如果我用后台这样写,能否实现下面的功能
红色部分出现后1秒,触发蓝色部分 ,而蓝色部分触发后1秒,才触发绿色部分
我里面加多了一个EXTGBDATASET('U_G1_A',1)  和 EXTGBDATASET('U_G1_B',1) 做控制 
如果红色部分触发,则 U_G1_A=1  下面判断当U_G1_A=1时,才触发蓝色的部分,然后蓝色部分把U_G1_A=0 ,U_G1_B=1
再判断U_G1_B=1的时候才触发  绿色部分代码,最后把U_G1_A=0 ,U_G1_B=0

请问这样可行吗?
时间控制部分是否有错误呢?

IF  UP_G1  AND  EXTGBDATA('SKV_G1') =0  AND EXTGBDATA('Last_ Location')=0 THEN  
    BEGIN
        EXTGBDATASET('T0',TIMETOT0(DYNAINFO(207)));
        EXTGBDATASET('Last_ Location',1) ;
        EXTGBDATASET('U_G1_A',1) ;
    END 


IF   EXTGBDATA('U_G1_A')=1 THEN;  
   BEGIN
       IF  TISREMAIN(3)  &&
            TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')>0 && 
            TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')<=2 THEN;
                 BEGIN 
                      TCANCEL(1,0);
                      EXTGBDATASET('T0',TIMETOT0(DYNAINFO(207)));
                      EXTGBDATASET('U_G1_A',0) ;
                      EXTGBDATASET('U_G1_B',1) ;
                 END
     END 

     
IF   EXTGBDATA('U_G1_B')=1 THEN; 
    BEGIN
        IF  TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')>0 && 
             TIMETOT0(DYNAINFO(207))-EXTGBDATA('T0')<=2 THEN;
                  BEGIN       
                      TBUYSHORT(1,SS,LMT,G1+10); // 在G1的上面10个点挂一张多单,这里您要区分点和变动价位的差别,MINDIFF表示变动价位
                      TBUY(1,SS,LMT,LMT,G1-10);      // 在G1的下面10个点挂一张多单
                      EXTGBDATASET('SKV_G1',1) ;
                      EXTGBDATASET('TOTAL_SVOL',EXTGBDATA('TOTAL_SVOL')+SS);
                      DEBUGFILE('D:\DEBUG\GRID_DEBUG.TXT','G1开空_SKV_G1=%.0f' ,EXTGBDATA('SKV_G1'));
                      DEBUGFILE('D:\DEBUG\GRID_DEBUG.TXT','TOTAL_SVOL=%.0f' ,EXTGBDATA('TOTAL_SVOL'));
                      DEBUGFILE('D:\DEBUG\GRID_DEBUG.TXT','Last_ Location=%.0f' ,EXTGBDATA('Last_ Location'));
                      EXTGBDATASET('U_G1_B',0) ;
                  END    
     END 


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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/1/15 10:26:59    Post IP:58.246.57.26[只看该作者]

公式计算从上到下是在同一秒内执行的,你这样至少要保证1秒后的前置条件全部成立。如果1秒之后你的条件不成立了,那么获取这个时间就没用了,

所以让你用VBA,



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

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

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

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


加好友 发短信
等级:论坛游民 帖子:271 积分:730 威望:0 精华:0 注册:2011/6/22 15:58:05
  发帖心情 Post By:2014/1/15 10:50:50    Post IP:14.119.119.189[只看该作者]

如果改为红色部分出现后2秒,触发蓝色部分 ,而蓝色部分触发后2秒,才触发绿色部分 呢?

逻辑上,第一秒条件成立了  EXTGBDATASET('U_G1_A',1) 变为1  这样,下一次轮询  红色部分即使不再成立被直接跳过
但通过IF   EXTGBDATA('U_G1_A')=1 THEN;  也会因为得到标识  开始执行蓝色代码  在蓝色代码结束前,把
EXTGBDATASET('U_G1_A',0) ;
EXTGBDATASET('U_G1_B',1) ;

同理,下一秒轮询就会直接跳过蓝色部分,
通过IF   EXTGBDATA('U_G1_B')=1 THEN; 
然后执行绿色的部分

逻辑上条件好像可以通过,VBA那边已经发帖了,应该还没改好,您看看我这样理解的逻辑是否有错,谢谢~
[此贴子已经被作者于2014/1/15 10:51:58编辑过]

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


加好友 发短信
等级:论坛游民 帖子:271 积分:730 威望:0 精华:0 注册:2011/6/22 15:58:05
  发帖心情 Post By:2014/1/15 10:56:18    Post IP:14.119.119.189[只看该作者]

如果1秒之后你的条件不成立了,那么获取这个时间就没用了,

前置条件只要这个EXTGBDATASET('T0',TIMETOT0(DYNAINFO(207)));赋值成功就可以了吧?


 回到顶部