您现在的位置:程序化交易>> 期货公式>> 文华财经>> 文华财经知识>>正文内容

[原创]不知是什么原因组件找不到空头持仓,组件不止损请老师帮改一下 [文华财经]

  • 咨询内容:

    文华自带组件“限价止损+追踪止盈(独立运行)”只改了品种为if1303,

    问题:我手动开空后仓位存在,但组件找不到空头持仓。

    明明有持仓但组件总是T_SellPosition(A)>0表达式:false,不满足条件,

    后面止陨价条件到达也不能被执行止损动作。

    不知是什么原因组件找不到空头持仓,请老师帮改一下,看是不是那里语句不对或者是加载问题。

    -

    -

     


    此主题相关图片如下:组件.png

     

  • 文华技术人员:

    //if1303 限价止损+追踪止盈独立运行
    VAR Price,MinPrice;//定义最新价变量,最小变动价位
    VAR BPRICE,SPRICE,HPRICE,LPRICE;//定义多头持仓均价,空头持仓均价,波段最高价,波段最低价
    VAR Step,LoseBit,WinBit,WinStep,LoseStep,SaveBit; //定义追踪点差,止损点差,止盈点差,保底止盈价位
    VAR A;
    VOID MAIN()
    {
          A="IF1303";
     Price=Price(A); //让PRICE函数取得A的最新价
     Step=1; //定义追踪点差
     LoseBit=1; //定义止损点差
     WinBit=1; //定义止盈点差
     SaveBit=1;//定义保底止盈损失价位
     //WinStep=1;//定义止盈价差(监控价差的用户可以使用)
     //LoseStep=1;//定义止损价差(监控价差的用户可以使用)
     MinPrice=MinPrice(A);//定义最小变动价位
     BPRICE=T_BuyAvgPrice(A);//取得持仓栏中该合约多头持仓均价
     SPRICE=T_SellAvgPrice(A);//取得持仓栏中该合约空头持仓均价
     IF (T_BuyPosition(A)>0)//如果多头持仓大于0
     {
      SPDeal(); // 执行卖平程序
     }
     IF (T_SellPosition(A)>0)  //如果空头持仓大于0
     {
      BPDeal(); //执行买平程序
     }
    }

    VOID SPDeal() //定义卖平函数
    {
     IF (BPRICE-Price>=LoseBit*MinPrice) //如果多头持仓均价-最新价大于等于止损点差*最小变动价位
     {
      T_Deal(A,1,1,T_BuyPosition(A),0); //发出委托,以最新价卖平多头持仓
     }
     ELSE IF (BPRICE-Price<0) //如果最新价大于多头持仓均价
     {
      HPRICE=ReadGlobal("HPRICE"); //读取上一次最高价,如果第一次运行,此处为0
      IF (HPRICE==0||Price>HPRICE) //如果 上一次最高价为0或者最新价大于上一次最高价
      {
       HPRICE=Price;  //将上一次最高价赋值为当前最新价
      }
      ELSE IF (HPRICE>=BPRICE+MinPrice*WinBit && HPRICE<=BPRICE+MinPrice*WinBit+MinPrice*Step && BPRICE+MinPrice*WinBit-Price==SaveBit) //最近一次最高价处于两个波段之间,并且最新价回撤到止盈价位以下
      {
       T_Deal(A,1,1,T_BuyPosition(A),0); //将多头持仓以最新价全平
       HPRICE=0; //将上一次最高价清零
      }
      WriteGlobal("HPRICE",HPRICE); //将上一次最高价写入HPRICE
     }
    }

    VOID BPDeal() //定义平空仓函数
    {
     IF (Price-SPRICE>=LoseBit*MinPrice) //如果当前价格减去空头开仓均价>=止损点差*最小变动价位
     {
      T_Deal(A,0,1,T_SellPosition(A),0); //将当前合约的持仓全部平掉
     }
     ELSE IF (Price<SPRICE) //当前最新价小于空头持仓均价
     {
      LPRICE=ReadGlobal("LPRICE"); //读取上一次最低价的值
      IF(Price<LPRICE||LPRICE==0) //如果最新价小于上一次最低价或者上一次最低价为0
      {
       LPRICE=Price; //最低价等于最新价
      }
      ELSE IF(LPRICE>=SPRICE-WinBit*MinPrice-MinPrice*Step && LPRICE<=SPRICE-WinBit*MinPrice && Price-SPRICE+WinBit*MinPrice==SaveBit) //最近一次最低价处在两个波段之内并且最新价高于止盈价
      {
       T_Deal(A,0,1,T_SellPosition(A),0); //全平
       LPRICE=0; //对上一次最低价重新赋值
      }
      WriteGlobal("LPRICE",LPRICE); //将LPRICE写入注册表
     }
    }

     

  • 文华客服:

    请参考下面链接40楼

    http://help.shwebstock.com.cn/dispbbs.asp?boardid=14&id=254123&page=&star=4

     

  • 网友回复:

    40楼是这样说的:

     

    您的问题已查明是由于

    T_BuyPosition(A)
    T_SellPosition(A)

    这两个函数在升级后读取系统持仓有误导致的,开发已经修改。会在下次升级版本中体现。

     

     

     

    那什么时候能升级好?要快。

     

  • 网友回复:

    需要等下次升级了,请您耐心等待

     

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容