盘口不买卖那个模组合约。 (文华财经WH6赢顺V6.7)

投资者咨询:盘口不买卖那个模组合约。 (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-6-5 11:34
A=Model[0].F_DealCode();
B=Model[1].F_DealCode();
C=Model[2].F_DealCode();

VOID DoSK()
{
   VAR SelVol;
   SelVol = AL_SellPosition(tCode);
   IF(tModel.F_Sig() == SK && CurrentTime() >Time("09:00:00"))
   {
 
            IF(T_Equity(0) >= T_InitialEquity(0) * 0.92&&不开B和C  )//
            {
               SKID = T_Deal(tCode, 1, 0, tModel.F_SigVol(), T_GetFallLimit(tCode));
               RETURN;
            }
         }
      }
1.如何在红色位置加入限制不开:B和C,只能开A呢?

2.黑色部分是否可以修改为:tModel.F_FreshSig() == SK这样来取得最新最近的一次信号!因为有三个信号函数,盘口经常时间久了就没有刷新信号了,所以应该用哪个更合理?

信号函数:
F_FreshSig():取一个新信号(如果模型已经发出了多个信号,取最近发出的信号,信号消失也是一种新信号)返回1表示取到新信号,返回0表示失败即已经没有新信号可取。
F_SigValid():返回模型信号存在两种类型之一(信号发出,信号消失)。
F_Sig():返回当前的信号是什么类型(BK|SK|BP|SP|BPK|SPK|CLOSEOUT)。
   
 
技术人员回复
日期:2018-6-5 13:35
 1.只开A,您只取A的信号就行了

 SKID = T_Deal(Model[0].F_DealCode(), 1, 0, tModel.F_SigVol(), T_GetFallLimit(tCode));

2.您对信号刷新函数理解有误,3个函数实际缺一不可

第一个是刷新信号 信号不刷新 后面再出信号 也处理不了 ;第二个 是判断信号是发出还是消失了 ;第三个才是确认信号类型 

如图是正确的写法

另外您最近针对一个算法模型问了很多问题,分别处理较为复杂

建议您直接把您思路整理完整后,我们帮您直接改写出来,这样问题会减少很多的,加快沟通时间


图片点击可在新窗口打开查看
投资者咨询:盘口不买卖那个模组合约。 (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-6-5 11:34
以下是引用舟亢在2018/6/5 13:35:00的发言:
 1.只开A,您只取A的信号就行了

 SKID = T_Deal(Model[0].F_DealCode(), 1, 0, tModel.F_SigVol(), T_GetFallLimit(tCode));

老师是否可以写个排除DEFG模组呢?只能开ABCD三个,所以老师想办法写个排除法更好!排除DEFG!因为我只能写排除,老师再写个排除法吧,谢谢 啊
 
       
技术人员回复
日期:2018-6-5 13:45
 不用排除的,这里只取了A组的持仓合约

这样交易的就是 Model[0]这个模组的交易合约了 ,是满足您要求的,因此不用排除
投资者咨询:盘口不买卖那个模组合约。 (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-6-5 11:34
以下是引用舟亢在2018/6/5 13:45:00的发言:
 不用排除的,这里只取了A组的持仓合约

这样交易的就是 Model[0]这个模组的交易合约了 ,是满足您要求的,因此不用排除

 我只是举例下。我是一定要排除的啊。因为我是:只能买ABC三个模组,然后要排除DEFG模组啊。所以在条件中加入排除DEFG即可啊!所以麻烦老师是否可以写个排除法呢?这样就满足我的条件了

   IF(T_Equity(0) >= T_InitialEquity(0) * 0.92&&不开DEFG  )//请老师在条件中加入不开DEFG模组即可!其他我都解决了,谢谢啊  
技术人员回复
日期:2018-6-5 14:15
 不应该在这里判断的,在判断信号的地方只判断想开的模组信号就行了

就是A模组出信号开A组持仓,一一对应,您不应该用tModel.F_Sig() 判断,您这样判断不了是那个模组出的信号

如下

   IF(Model[0].F_Sig() == SK && CurrentTime() >Time("09:00:00"))
   {
 
            IF(T_Equity(0) >= T_InitialEquity(0) * 0.92&&不开BCDEFG  )//
            {
               SKID = T_Deal(Model[0].F_DealCode(), 1, 0, tModel.F_SigVol(), T_GetFallLimit(tCode));
               RETURN;
            }
         }
      }
投资者咨询:盘口不买卖那个模组合约。 (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-6-5 11:34
以下是引用舟亢在2018/6/5 14:15:00的发言:
 不应该在这里判断的,在判断信号的地方只判断想开的模组信号就行了

就是A模组出信号开A组持仓,一一对应,您不应该用tModel.F_Sig() 判断,您这样判断不了是那个模组出的信号

如下

   IF(Model[0].F_Sig() == SK && CurrentTime() >Time("09:00:00"))
   {
 
            IF(T_Equity(0) >= T_InitialEquity(0) * 0.92&&不开BCDEFG  )//
            {
               SKID = T_Deal(Model[0].F_DealCode(), 1, 0, tModel.F_SigVol(), T_GetFallLimit(tCode));
               RETURN;
            }
         }
      }
但是我有可能是A或者B或者C其中之一的信号啊?所以用排除的更好!

    IF(Model[0].F_Sig() == SK || Model[1].F_Sig() == SK ||Model[2].F_Sig() == SK&& CurrentTime() >Time("09:00:00"))
   {
 
            IF(T_Equity(0) >= T_InitialEquity(0) * 0.92&&不开DEFG  )//
我希望老师可以写不开DEFG,因为信号出现假设是ABC之一就开,是DEFG有信号他也不会开的,所以还是要用排除的好,老师排除的如何写呢?
            {
               SKID = T_Deal(Model[0].F_DealCode(), 1, 0, tModel.F_SigVol(), T_GetFallLimit(tCode));
               RETURN;
            }
         }
      }
 现在是ABCDEFG,信号有可能都会有,但是我只能开ABC三个其中之一,所以我想用排除法解决,在条件中加入不开DEFG这样去实现,老师在条件中给我写个不开DEFG的写法我测试下即可。。。  
  IF(T_Equity(0) >= T_InitialEquity(0) * 0.92&&Model[3].F_Sig() != SK &&Model[4].F_Sig() != SK&&Model[5].F_Sig() != SK&&Model[6].F_Sig() != SK )//这样是否可以实现!!

技术人员回复
日期:2018-6-5 15:10
建议一一判断,得到哪组信号就开哪组持仓

tModel是个数组,指代了多个情况,请不要用这种简便写法,一一对应着写就行了

算法模型本身执行是很快的,不用担心代码过多的判断问题

您后来的书写只是判断信号是不是其他模组的,实际上用处不大
投资者咨询:盘口不买卖那个模组合约。 (文华财经WH6赢顺V6.7)
来源:文华财经  日期:2018-6-5 11:34


 IF(Model[0].F_Sig() == SK || Model[1].F_Sig() == SK ||Model[2].F_Sig() == SK&& CurrentTime() >Time("09:00:00"))这样写,



还是IF(T_Equity(0) >= T_InitialEquity(0) * 0.92&&Model[3].F_Sig() != SK &&Model[4].F_Sig() != SK&&Model[5].F_Sig() != SK&&Model[6].F_Sig() != SK )//


上面两写法哪个可以实现?或者老师有更好的写法? 那老师请给我写个排除DEFG模组开仓的写法啊!!! 
    
技术人员回复
日期:2018-6-5 21:59
 您的问题连续性较强,明天相关同事给您回复