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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 后台程序化交易的调用

   

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


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

主题:后台程序化交易的调用

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


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
后台程序化交易的调用  发帖心情 Post By:2020/7/16 14:26:28    Post IP:202.105.59.65[只看该作者]

后台程序化的函数一般解决算法交易, 就是开空开多等要如何避免滑点, 一般我是在图表程序化设计测试好, 然后加上后台程序化函数来交易。但是我的后台开空开多平空平多的程序都是一样的, 因为每个程序有很多开空开多点, 能把后台程序化写成一个函数, 我要开空的时候直接调用该函数吗?   而且我两个程序调用下面的后台程序化函数返回值会返回自己的数值吗?

我的后台程序化源代码:

持仓限制:=min(持仓手数, max(1,intpart(openint*持仓比例/100)));
EMA_VolDay:=STKINDI('','VOL.MA1(5,10,20)',0,6,-1)*成交量比例/1000;//找昨天的成交量5日均线量, 再乘以成交量比例
多头保证金:C*TACCOUNT(41);// 是多头保证金率;
空头保证金:C*TACCOUNT(42);// 是空头保证金率;
多头开仓资金数:intpart(1000000/(C*TACCOUNT(41)*multiplier)*资金占比/100);//是资金占比, 例如10, 就是占用资金100W占比10%, 动用了保证金10W
多头开仓数:MIN(min(多头开仓资金数,min(EMA_VolDay, 持仓限制)),限仓*0.1);
空头开仓资金数:intpart(1000000/(C*TACCOUNT(42)*multiplier)*资金占比/100);
空头开仓数:MIN(min(空头开仓资金数,min(EMA_VolDay, 持仓限制)),限仓*0.1);
//如果要开空, 就执行下面开空语句
//注意holding是策略的理论持仓,他不管实际仓位例如我想开单是10的, 那就用10, 100万的, 就用100. 最高就是100W。
//持仓比例和成交量的比例, 所以这两者一般不会去动, 除非是一些非主力合约

///1.如果之前的开空持仓剩余数并且比现在空头开仓数还要多, 那就用之前的开空持仓剩余数,不需要开空。
IF TSELLHOLDINGEX('','',1)>=空头开仓数 THEN 空头开仓数:=TSELLHOLDINGEX('','',1);

//2.如果有平空挂单,之前的开空持仓剩余数比现在空头开仓数少, 总空头持仓比现在开仓数要多,那就用把要撤的单取消掉。 
IF TSELLHOLDINGEX('','',2)>=空头开仓数 AND TSELLHOLDINGEX('','',1)<空头开仓数 THEN 
BEGIN
    TCANCEL(TSELLHOLDINGEX('','',3)>0,4);
    空头开仓数:=TSELLHOLDINGEX('','',2);
END
//3.总空头持仓比现在开仓数要少
IF TSELLHOLDINGEX('','',2)<=空头开仓数 THEN
BEGIN

TCANCEL(TSELLHOLDINGEX('','',3)>0,4);
空头开仓数:=INTPART(空头开仓数-TSELLHOLDINGEX('','',1));
//3.1 达到开空条件, 先检测程序化是否平衡先, 如果是平衡状态, 开始空
    IF(INTPART(空头开仓数)<1 ,1,INTPART(空头开仓数));//空头开仓数不能为0
//a.看成交量
//b.看卖一和买一的中间加个 DYNAINFO(34)卖一价;DYNAINFO(28)买一价; DYNAINFO(208)最小变动单位;
//成交量比例是自己设置的, 取5日的平均数。 千分之5那么多, 建议分两次下而且用加仓的方式来操作。

//a1
    IF 空头开仓数>=80 or 成交量比例>=4 THEN
    BEGIN
//a1b1   
         IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
     BEGIN 
    TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)+DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)),NOATTACK;
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-2*DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-3*DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+3*DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+2*DYNAINFO(208)),NOATTACK;
    TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
         END
//a1b2
         IF DYNAINFO(34)-DYNAINFO(28)>DYNAINFO(208) AND DYNAINFO(34)-DYNAINFO(28)<=3*DYNAINFO(208) THEN
BEGIN   
    TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34)+DYNAINFO(208)),NOATTACK;   
     TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34)),NOATTACK;
             TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34)-DYNAINFO(208)),NOATTACK;
             TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
         END
//a1b3       
         IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
         BEGIN 
        IF DYNAINFO(25)>DYNAINFO(31) THEN 
      BEGIN //DYNAINFO(31) 是卖一量, DYNAINFO(25) 是买一量,DYNAINFO(34)卖一价;DYNAINFO(28)买一价;
          TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34)+DYNAINFO(208)),NOATTACK;
        TBUYSHORT(1,2*空头开仓数/3,LMT,DYNAINFO(34)),NOATTACK;
        END
            IF DYNAINFO(25)<DYNAINFO(31) THEN
            BEGIN
    TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(34)),NOATTACK;
        TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)),NOATTACK;
    END
          END     
    END 
 //a2   
   IF 空头开仓数<80 AND 空头开仓数>=12 AND 成交量比例<4 OR 成交量比例>=2 AND 成交量比例<4 THEN    
   BEGIN
//a2b1
      IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+3*DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+2*DYNAINFO(208)),NOATTACK;
    TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      END
//a2b2
      IF DYNAINFO(34)-DYNAINFO(28)>DYNAINFO(208) AND DYNAINFO(34)-DYNAINFO(28)<=3*DYNAINFO(208) THEN
  BEGIN 
       TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34)),NOATTACK;
             TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34)-DYNAINFO(208)),NOATTACK;
             TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      END
//a2b3
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208)THEN
      BEGIN//DYNAINFO(31) 是卖一量, DYNAINFO(25) 是买一量,DYNAINFO(34)卖一价;DYNAINFO(28)买一价; DYNAINFO(208)最小变动单位;
      IF DYNAINFO(25)>DYNAINFO(31) THEN
        BEGIN
        TBUYSHORT(1,空头开仓数*2/3,LMT,DYNAINFO(34)),NOATTACK;
        TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)),NOATTACK;
        END
      IF DYNAINFO(25)<DYNAINFO(31) THEN
        BEGIN
        TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34)),NOATTACK;
        TBUYSHORT(1,空头开仓数*2/3,LMT,DYNAINFO(28)),NOATTACK;
  END
//      IF DYNAINFO(25)>DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(34)),NOATTACK;   
//     IF DYNAINFO(25)<DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(28)),NOATTACK;
  END
   END
 //a3     
   IF 空头开仓数<12 AND 空头开仓数>3 AND 成交量比例<=2 THEN //注意holding是策略的理论持仓,他不管实际仓位   
   BEGIN
//a3b1
      IF DYNAINFO(34)-DYNAINFO(28)>=2*DYNAINFO(208) THEN
  BEGIN 
           TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(34)-DYNAINFO(208)),NOATTACK;
           TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      END
 //a3b2     
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
      BEGIN //DYNAINFO(31) 是卖一量, DYNAINFO(25) 是买一量,DYNAINFO(34)卖一价;DYNAINFO(28)买一价;
          IF DYNAINFO(25)>DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(34)),NOATTACK;   
      IF DYNAINFO(25)<DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(28)),NOATTACK;
      END
   END  
//a4 
IF 空头开仓数<=3 AND 成交量比例<=1 THEN
BEGIN //DYNAINFO(31) 是卖一量, DYNAINFO(25) 是买一量,DYNAINFO(34)卖一价;DYNAINFO(28)买一价;
          //IF DYNAINFO(25)>DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(34));   
      //IF DYNAINFO(25)<DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(28));
//a4b1
      IF DYNAINFO(34)-DYNAINFO(28)>=2*DYNAINFO(208) THEN
  BEGIN 
            IF DYNAINFO(25)>DYNAINFO(31) THEN TBUYSHORT(1,多头开仓数,LMT,DYNAINFO(34)-DYNAINFO(208));
IF DYNAINFO(25)<DYNAINFO(31) THEN TBUYSHORT(1,多头开仓数,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
//a4b2
IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
BEGIN   
IF DYNAINFO(25)>DYNAINFO(31) THEN TBUYSHORT(1,多头开仓数,LMT,DYNAINFO(34));
IF DYNAINFO(25)<DYNAINFO(31) THEN TBUYSHORT(1,多头开仓数,LMT,DYNAINFO(28));
     END
END
END

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/7/16 15:08:22    Post IP:58.246.57.26[只看该作者]

 “能把后台程序化写成一个函数, 我要开空的时候直接调用该函数吗” 这个是不行的。 你只能直接运行这个后台程序。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
OscarDeng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:289 积分:0 威望:0 精华:0 注册:2019/4/29 11:42:41
  发帖心情 Post By:2020/7/16 22:16:09    Post IP:202.105.59.65[只看该作者]

也就是如果我在某个程序有8次开空, 那这8次 的开空程序都要加上这段算法交易上去? 

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/7/17 8:56:23    Post IP:58.246.57.26[只看该作者]

 是的。引用通常是引用纯粹的计算指标或者图表模型会比较稳定。


命数如织,当如磐石。
 回到顶部