盘口的平仓,照成全部平仓! (文华财经WH6赢顺V6.7)

投资者咨询:盘口的平仓,照成全部平仓! (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-7-17 22:26
我俩个模型 A和B:先后买多白糖,加载一个盘口来平A仓(B仓没有),但其中是A平仓就把A也都平仓,就是盘口把所以持仓都平了,但是正常要哦只平A仓而不是AB全部平,什么情况?请老师修改平仓语句!
是不是应该把取得持仓可用 T_SHSellRemainPosition(tCode, 0)改成:tModel.F_SigVol()当前信号对应手数?





VOID DoBP()
{

   IF(tModel.F_Sig() == BP) //
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(T_SHSellRemainPosition(tCode, 0) > 0)
         {
            MessageOut(tCode + "市价平空");
            BPID = T_Deal(tCode, 0, 2, T_SHSellRemainPosition(tCode, 0), T_GetRiseLimit(tCode));
         }
      }
      ELSE
      {
         IF(T_SellRemainPosition(tCode) > 0)
         {
            MessageOut(tCode + "市价平空");
            BPID = T_Deal(tCode, 0, 1, T_SellRemainPosition(tCode), T_GetRiseLimit(tCode));
         }
      }
   }
}

VOID DoSP()
{

   IF(tModel.F_Sig() == SP)
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(T_SHBuyRemainPosition(tCode, 0) > 0)
         {
            MessageOut(tCode + "市价平多");
            BPID = T_Deal(tCode, 1, 2, T_SHBuyRemainPosition(tCode, 0), T_GetFallLimit(tCode));
         }
      }
      ELSE
      {
         IF(T_BuyRemainPosition(tCode) > 0)
         {
            MessageOut(tCode + "市价平多");
            SPID = T_Deal(tCode, 1, 1, T_BuyRemainPosition(tCode), T_GetFallLimit(tCode));
         }
      }
   }
}

VOID DoCloseOut()
{
   IF(tModel.F_Sig() == CLOSEOUT)
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(T_SHSellRemainPosition(tCode, 0) > 0)
         {
            MessageOut(tCode + "市价平空");
            CLOSEOUTID = T_Deal(tCode, 0, 2, T_SHSellRemainPosition(tCode, 0), T_GetRiseLimit(tCode));
         }
         IF(T_SHBuyRemainPosition(tCode, 0) > 0)
         {
            MessageOut(tCode + "市价平多");
            CLOSEOUTID = T_Deal(tCode, 1, 2, T_SHBuyRemainPosition(tCode, 0), T_GetFallLimit(tCode));
         }
      }
      ELSE
      {
         IF(T_SellRemainPosition(tCode) > 0)
         {
            MessageOut(tCode + "市价平空");
            CLOSEOUTID = T_Deal(tCode, 0, 1, T_SellRemainPosition(tCode), T_GetRiseLimit(tCode));
         }
         IF(T_BuyRemainPosition(tCode) > 0)
         {
            MessageOut(tCode + "市价平多");
            CLOSEOUTID = T_Deal(tCode, 1, 1, T_BuyRemainPosition(tCode), T_GetFallLimit(tCode));
         }    
      }
   }
}

           
技术人员回复
日期:2018-7-17 22:30
T_SHSellRemainPosition取得是账户持仓的,您可以用F_BuyRemainPosition、F_SellRemainPosition取模组持仓
投资者咨询:盘口的平仓,照成全部平仓! (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-7-17 22:26
以下是引用齐云在2018/7/17 22:30:00的发言:
T_SHSellRemainPosition取得是账户持仓的,您可以用F_BuyRemainPosition、F_SellRemainPosition取模组持仓

 这俩个意思就是返回模组的持仓手数?
技术人员回复
日期:2018-7-18 21:18
 您平仓手数的地方取得是账户总的多空头可用持仓,您想针对某个模组的持仓开平仓用F_BuyRemainPosition、F_SellRemainPosition取某模组的多空头可用持仓
投资者咨询:盘口的平仓,照成全部平仓! (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-7-17 22:26
 VAR Model[];
VAR nNum;
VAR i;
VAR SS;
VAR M1;
VAR N,X,BID,BVL,TID,TVL; //ADD
VAR tModel, tCode;
GLOBAL_VAR BKID, SKID, BPID, SPID,CLOSEOUTID; //
VAR newPrice;//最新价
VAR mMinPrice;//最小变动价位
GLOBAL_VAR BKFLAG,SKFLAG;
GLOBAL_VAR UPD; //
GLOBAL_VAR ID; //
VAR fmlBVol; 


VOID MAIN()
{
   Model[0] = "AA";
   Model[1] = "BB";
   Model[2] = "CC";

   nNum = 3;






 FOR(i = 0; i < nNum; i = i + 1)
   {
      ID = i ; //
      tModel = Model[i];
      tCode = tModel.F_DealCode();
      SS=tModel.F_Variant("M1", 0);//
      IF(tModel.F_FreshSig() == 1 && tModel.F_SigValid() == 1)
      {
         DoSK();
         DoBK();
         DoBP();
         DoSP();

      }
   }
}

VOID DoSK()
{
   VAR SelVol;
   SelVol = AL_SellPosition(tCode);
   IF(tModel.F_Sig() == SK)
   {
 
               SKID = T_Deal(tCode, 1, 0, tModel.F_SigVol(), T_GetFallLimit(tCode));
               RETURN;
            }
         }
     
VOID DoBK()
{
   VAR BuyVol;
   BuyVol = AL_BuyPosition(tCode);
   IF(tModel.F_Sig() == BK)
   {
 
               BKID = T_Deal(tCode, 0, 0, tCode.F_SigVol(), T_GetRiseLimit(tCode));
               RETURN;
            }
         }
    

VOID DoBP()
{

   IF(tModel.F_Sig() == BP) //
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(T_SHSellRemainPosition(tCode, 0) > 0)
         {
            MessageOut(tCode + "市价平空");
            BPID = T_Deal(tCode, 0, 2, T_SHSellRemainPosition(tCode, 0), T_GetRiseLimit(tCode));
         }
      }
      ELSE
      {
         IF(T_SellRemainPosition(tCode) > 0)
         {
            MessageOut(tCode + "市价平空");
            BPID = T_Deal(tCode, 0, 1, T_SellRemainPosition(tCode), T_GetRiseLimit(tCode));
         }
      }
   }
}

VOID DoSP()
{

   IF(tModel.F_Sig() == SP)
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(T_SHBuyRemainPosition(tCode, 0) > 0)
         {
            MessageOut(tCode + "市价平多");
            BPID = T_Deal(tCode, 1, 2, T_SHBuyRemainPosition(tCode, 0), T_GetFallLimit(tCode));
         }
      }
      ELSE
      {
         IF(T_BuyRemainPosition(tCode) > 0)
         {
            MessageOut(tCode + "市价平多");
            SPID = T_Deal(tCode, 1, 1, T_BuyRemainPosition(tCode), T_GetFallLimit(tCode));
         }
      }
   }
}

  黑色部分换成 F_BuyRemainPosition、F_SellRemainPosition取模组持仓!但是F开头要定义,请老师帮忙  修改(修改部分请红色标注下,谢谢)
技术人员回复
日期:2018-7-18 22:29
 这样试下:

VAR Model[];
VAR nNum;
VAR i;
VAR SS;
VAR M1;
VAR N,X,BID,BVL,TID,TVL; //ADD
VAR tModel, tCode;
GLOBAL_VAR BKID, SKID, BPID, SPID,CLOSEOUTID; //
VAR newPrice;//最新价
VAR mMinPrice;//最小变动价位
GLOBAL_VAR BKFLAG,SKFLAG;
GLOBAL_VAR UPD; //
GLOBAL_VAR ID; //
VAR fmlBVol; 


VOID MAIN()
{
   Model[0] = "AA";
   Model[1] = "BB";
   Model[2] = "CC";

   nNum = 3;

 FOR(i = 0; i < nNum; i = i + 1)
   {
      ID = i ; //
      tModel = Model[i];
      tCode = tModel.F_DealCode();
      SS=tModel.F_Variant("M1", 0);//
      IF(tModel.F_FreshSig() == 1 && tModel.F_SigValid() == 1)
      {
         DoSK();
         DoBK();
         DoBP();
         DoSP();

      }
   }
}

VOID DoSK()
{
   VAR SelVol;
   SelVol = AL_SellPosition(tCode);
   IF(tModel.F_Sig() == SK)
   {
 
               SKID = T_Deal(tCode, 1, 0, tModel.F_SigVol(), T_GetFallLimit(tCode));
               RETURN;
            }
         }
     
VOID DoBK()
{
   VAR BuyVol;
   BuyVol = AL_BuyPosition(tCode);
   IF(tModel.F_Sig() == BK)
   {
 
               BKID = T_Deal(tCode, 0, 0, tCode.F_SigVol(), T_GetRiseLimit(tCode));
               RETURN;
            }
         }
    

VOID DoBP()
{

   IF(tModel.F_Sig() == BP) //
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(T_SHSellRemainPosition(tCode, 0) > 0)
         {
            MessageOut(tCode + "市价平空");
            BPID = T_Deal(tCode, 0, 2, tModel.F_SellRemainPosition(), T_GetRiseLimit(tCode));
         }
      }
      ELSE
      {
         IF(T_SellRemainPosition(tCode) > 0)
         {
            MessageOut(tCode + "市价平空");
            BPID = T_Deal(tCode, 0, 1, tModel.F_SellRemainPosition(), T_GetRiseLimit(tCode));
         }
      }
   }
}

VOID DoSP()
{

   IF(tModel.F_Sig() == SP)
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(T_SHBuyRemainPosition(tCode, 0) > 0)
         {
            MessageOut(tCode + "市价平多");
            BPID = T_Deal(tCode, 1, 2, tModel.F_BuyRemainPosition(), T_GetFallLimit(tCode));
         }
      }
      ELSE
      {
         IF(T_BuyRemainPosition(tCode) > 0)
         {
            MessageOut(tCode + "市价平多");
            SPID = T_Deal(tCode, 1, 1, tModel.F_BuyRemainPosition(), T_GetFallLimit(tCode));
         }
      }
   }
}

投资者咨询:盘口的平仓,照成全部平仓! (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-7-17 22:26
 不行,委托废单,因为只把平仓数量修改成tModel.F_BuyRemainPosition(),这样委托次次数量为0所以废单? 


老师请一定用取得模组持仓的方式哦!!这样我加载多个盘口就不会冲突了

09:24:57(本机时间  ): 委托发出(zn1809,19190,0,卖,平今)
09:24:58(本机时间  ): 委托失败(zn1809,原因:委托数量有误)
 
技术人员回复
日期:2018-7-19 9:29
 这样:

VAR Model[];
VAR nNum;
VAR i;
VAR SS;
VAR M1;
VAR N,X,BID,BVL,TID,TVL; //ADD
VAR tModel, tCode;
GLOBAL_VAR BKID, SKID, BPID, SPID,CLOSEOUTID; //
VAR newPrice;//最新价
VAR mMinPrice;//最小变动价位
GLOBAL_VAR BKFLAG,SKFLAG;
GLOBAL_VAR UPD; //
GLOBAL_VAR ID; //
VAR fmlBVol; 


VOID MAIN()
{
   Model[0] = "AA";
   Model[1] = "BB";
   Model[2] = "CC";

   nNum = 3;

 FOR(i = 0; i < nNum; i = i + 1)
   {
      ID = i ; //
      tModel = Model[i];
      tCode = tModel.F_DealCode();
      SS=tModel.F_Variant("M1", 0);//
      IF(tModel.F_FreshSig() == 1 && tModel.F_SigValid() == 1)
      {
         DoSK();
         DoBK();
         DoBP();
         DoSP();

      }
   }
}

VOID DoSK()
{
   VAR SelVol;
   SelVol = AL_SellPosition(tCode);
   IF(tModel.F_Sig() == SK)
   {
 
               SKID = T_Deal(tCode, 1, 0, tModel.F_SigVol(), T_GetFallLimit(tCode));
               RETURN;
            }
         }
     
VOID DoBK()
{
   VAR BuyVol;
   BuyVol = AL_BuyPosition(tCode);
   IF(tModel.F_Sig() == BK)
   {
 
               BKID = T_Deal(tCode, 0, 0, tCode.F_SigVol(), T_GetRiseLimit(tCode));
               RETURN;
            }
         }
    

VOID DoBP()
{

   IF(tModel.F_Sig() == BP) //
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(tModel.F_SellRemainPosition() > 0)
         {
            MessageOut(tCode + "市价平空");
            BPID = T_Deal(tCode, 0, 2, tModel.F_SellRemainPosition(), T_GetRiseLimit(tCode));
         }
      }
      ELSE
      {
         IF(tModel.F_SellRemainPosition() > 0)
         {
            MessageOut(tCode + "市价平空");
            BPID = T_Deal(tCode, 0, 1, tModel.F_SellRemainPosition(), T_GetRiseLimit(tCode));
         }
      }
   }
}

VOID DoSP()
{

   IF(tModel.F_Sig() == SP)
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(tModel.F_BuyRemainPosition() > 0)
         {
            MessageOut(tCode + "市价平多");
            BPID = T_Deal(tCode, 1, 2, tModel.F_BuyRemainPosition(), T_GetFallLimit(tCode));
         }
      }
      ELSE
      {
         IF(tModel.F_BuyRemainPosition() > 0)
         {
            MessageOut(tCode + "市价平多");
            SPID = T_Deal(tCode, 1, 1, tModel.F_BuyRemainPosition(), T_GetFallLimit(tCode));
         }
      }
   }
}

投资者咨询:盘口的平仓,照成全部平仓! (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-7-17 22:26
 请老师标注下哪里修改了,感觉也就是平仓委托数量修改了啊?那样是废单啊
技术人员回复
日期:2018-7-19 13:43
参考标红位置举例:判断的时候也改了一下

 VAR Model[];
VAR nNum;
VAR i;
VAR SS;
VAR M1;
VAR N,X,BID,BVL,TID,TVL; //ADD
VAR tModel, tCode;
GLOBAL_VAR BKID, SKID, BPID, SPID,CLOSEOUTID; //
VAR newPrice;//最新价
VAR mMinPrice;//最小变动价位
GLOBAL_VAR BKFLAG,SKFLAG;
GLOBAL_VAR UPD; //
GLOBAL_VAR ID; //
VAR fmlBVol; 


VOID MAIN()
{
   Model[0] = "AA";
   Model[1] = "BB";
   Model[2] = "CC";

   nNum = 3;

 FOR(i = 0; i < nNum; i = i + 1)
   {
      ID = i ; //
      tModel = Model[i];
      tCode = tModel.F_DealCode();
      SS=tModel.F_Variant("M1", 0);//
      IF(tModel.F_FreshSig() == 1 && tModel.F_SigValid() == 1)
      {
         DoSK();
         DoBK();
         DoBP();
         DoSP();

      }
   }
}

VOID DoSK()
{
   VAR SelVol;
   SelVol = AL_SellPosition(tCode);
   IF(tModel.F_Sig() == SK)
   {
 
               SKID = T_Deal(tCode, 1, 0, tModel.F_SigVol(), T_GetFallLimit(tCode));
               RETURN;
            }
         }
     
VOID DoBK()
{
   VAR BuyVol;
   BuyVol = AL_BuyPosition(tCode);
   IF(tModel.F_Sig() == BK)
   {
 
               BKID = T_Deal(tCode, 0, 0, tCode.F_SigVol(), T_GetRiseLimit(tCode));
               RETURN;
            }
         }
    

VOID DoBP()
{

   IF(tModel.F_Sig() == BP) //
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(tModel.F_SellRemainPosition() > 0)
         {
            MessageOut(tCode + "市价平空");
            BPID = T_Deal(tCode, 0, 2, tModel.F_SellRemainPosition(), T_GetRiseLimit(tCode));
         }
      }
      ELSE
      {
         IF(tModel.F_SellRemainPosition() > 0)
         {
            MessageOut(tCode + "市价平空");
            BPID = T_Deal(tCode, 0, 1, tModel.F_SellRemainPosition(), T_GetRiseLimit(tCode));
         }
      }
   }
}

VOID DoSP()
{

   IF(tModel.F_Sig() == SP)
   {
      IF(T_IsSHCode(tCode) == 1) // 
      {
         IF(tModel.F_BuyRemainPosition() > 0)
         {
            MessageOut(tCode + "市价平多");
            BPID = T_Deal(tCode, 1, 2, tModel.F_BuyRemainPosition(), T_GetFallLimit(tCode));
         }
      }
      ELSE
      {
         IF(tModel.F_BuyRemainPosition() > 0)
         {
            MessageOut(tCode + "市价平多");
            SPID = T_Deal(tCode, 1, 1, tModel.F_BuyRemainPosition(), T_GetFallLimit(tCode));
         }
      }
   }
}