投资者咨询:盘中平仓问题! (文华财经WH6赢顺V6.7)
来源:文华财经 日期:2018-5-31 10:49
由于加载多个盘口,那就会出现模组有平仓时每个盘口都出信号平仓照成废单,那如何解决!
老师是否可以写1.取得交易账户中是否有对应的该合约的持仓来平,
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-5-31 11:15
1.您说的组件同时发出多个平仓委托,形成废单,不是编写问题
2.平仓信号改成根据组件盘口开仓信号来平,需要您说下具体平仓思路,当前就是接受模组信号平的,看不出您开仓思路
投资者咨询:盘中平仓问题! (文华财经WH6赢顺V6.7)
来源:文华财经 日期:2018-5-31 10:49
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 ID; //
VOID MAIN()
{
Model[0] = "A";
Model[1] = "B";
Model[2] = "C";
Model[3] = "D";
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();
DoCloseOut();
}
}
}
VOID DoSK()
{
VAR SelVol;
SelVol = AL_SellPosition(tCode);
IF(tModel.F_Sig() == SK)
{
IF(SelVol == 0 )
{
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)
{
IF(BuyVol == 0 )
{
BKID = T_Deal(tCode, 0, 0, tModel.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));
}
}
}
}
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));
}
}
}
}
2。要对应合约去平仓!
技术人员回复
日期:2018-5-31 11:26
投资者咨询:盘中平仓问题! (文华财经WH6赢顺V6.7)
来源:文华财经 日期:2018-5-31 10:49
技术人员回复
日期:2018-5-31 11:34
投资者咨询:盘中平仓问题! (文华财经WH6赢顺V6.7)
来源:文华财经 日期:2018-5-31 10:49
其实这个就是因为平仓语句照成的,俩个盘口的平仓语句都取得了平仓,照成了的废单,这需要如何解决呢?
老师不需要纠结完整代码,因为这个本身就是简单的取得BK和SK信号去开仓,然后是BP和SP信号去平仓!并不复杂!随便一个盘口加载俩个:使用上面的BK和BK和BP和SP都会出现同时委托照成废单的!
所以,如何解决量盘口同时取得平仓信号!!!为什么加载的盘口中模组合约不一样,可平仓的却是同时取得信号?所以这里关键是如何让量盘口的平仓分别对应自己的信号!
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));
}
}
}
}
技术人员回复
日期:2018-6-1 9:01
投资者咨询:盘中平仓问题! (文华财经WH6赢顺V6.7)
来源:文华财经 日期:2018-5-31 10:49
好的,谢谢
技术人员回复
日期:2018-6-1 13:42
按照您意思,取模型持仓了
VOID DoBP()
{
IF(tModel.F_Sig() == BP) //
{
IF(T_IsSHCode(tCode) == 1) //
{
IF(F_SellRemainPosition(tCode, 0) > 0)
{
MessageOut(tCode + "市价平空");
BPID = T_Deal(tCode, 0, 2, F_SellRemainPosition(tCode, 0), T_GetRiseLimit(tCode));
}
}
ELSE
{
IF(F_SellRemainPosition(tCode) > 0)
{
MessageOut(tCode + "市价平空");
BPID = T_Deal(tCode, 0, 1, F_SellRemainPosition(tCode), T_GetRiseLimit(tCode));
}
}
}
}
VOID DoSP()
{
IF(tModel.F_Sig() == SP)
{
IF(T_IsSHCode(tCode) == 1) //
{
IF(F_BuyRemainPosition(tCode, 0) > 0)
{
MessageOut(tCode + "市价平多");
BPID = T_Deal(tCode, 1, 2, F_BuyRemainPosition(tCode, 0), T_GetFallLimit(tCode));
}
}
ELSE
{
IF(F_BuyRemainPosition(tCode) > 0)
{
MessageOut(tCode + "市价平多");
SPID = T_Deal(tCode, 1, 1, F_BuyRemainPosition(tCode), T_GetFallLimit(tCode));
}
}
}
}
