[求助]下单组件如何编写?智能分批+滑点控制 [赢顺期货]
- 咨询内容:
wh3中有一些下单组件的范例,正在学习中,想完成以下内容,不知道怎么写,特来求助:
1、根据买一买一智能分批;
2、如果下单数大于10手才激活智能分批;
3、滑点希望能控制在3个以内;
谢谢~
- 赢顺技术人员:
您可以尝试编写一下,我们来给您作修改
- 赢顺客服:
我是想写,但是不知道下单组件中如何获取信号的委托下单数量
- 网友回复:
F_SigVol()取当前信号的手数。
用法:
F_SigVol() 取当前的信号的手数, 如果当前信号是BPK(5), 则返回5.
例:
IF(F_SigVol() == VarOpi) //如果信号的仓位等于变量VarOpi - 网友回复:
以下内容为程序代码:
1 //主要策略:设定分批总手数,开平仓时,自动根据买卖盘动态分批。
2 VAR N;//定义总手数。
3 VAR KYN;//定义目前已有手数。
4 VAR PYN;//定义目前已有手数。
5 VAR YYN;//定义目前已有手数。
6 VAR KPN;//卖1量
7 VAR PPN;//买1量
8 VAR Status;//定义交易所状态修正变量,开仓总手数
9 VAR level;//定义开始分仓的数量
10 VOID MAIN()//主函数。
11 {
12 N=F_SigVol();//开始分仓的总手数
13 level=10;
14 KPN=Offers(F_DealCode(),"askvol1");//取得当前合约卖1量。
15 PPN=Offers(F_DealCode(),"bidvol1");//取得当前合约买1量。
16 Status=T_IsExchangeOpen(F_DealCode());//判断当前合约所属交易所的状态。
17 IF(F_FreshSig()==1)
18 {
19 KYN=F_BuyPosition();//取得交易系统合约的多头持仓
20 PYN=F_SellPosition();//取得交易系统合约的空头持仓
21 IF(F_Sig()==BK&&T_IsExchangeOpen(F_DealCode())==1)//当前信号为开多仓信号并且交易所处于开盘状态的时候。
22 {
23 BKDeal();//运行开多仓分批函数。
24 }
25 ELSE IF(F_Sig()==SK&&T_IsExchangeOpen(F_DealCode())==1)//当前信号为开空仓信号并且交易所处于开盘状态的时候。
26 {
27 SKDeal();//运行开空仓分批函数。
28 }
29 ELSE IF(F_Sig()==BP&&T_IsExchangeOpen(F_DealCode())==1) //当前信号为平空仓信号并且交易所处于开盘状态的时候。
30 {
31 BPDeal();//运行平空仓分批函数。
32 }
33 ELSE IF(F_Sig()==SP&&T_IsExchangeOpen(F_DealCode())==1) //当前信号为平多仓信号并且交易所处于开盘状态的时候。
34 {
35 SPDeal();//运行平多仓分批函数。
36 }
37 }
38 ELSE IF(F_FreshSig()==0)
39 {
40 YYN=ReadGlobal("C");//读取注册表中上一次记录的已有手数。
41 KYN=ReadGlobal("A");//读取注册表中上一次记录的已有手数。
42 PYN=ReadGlobal("B");//读取注册表中上一次记录的已有手数。
43 IF(F_Sig()==BK&&T_IsExchangeOpen(F_DealCode())==1)//当前信号为开多仓信号并且交易所处于开盘状态的时候。
44 {
45 BKDeal();//运行开多仓分批函数。
46 }
47 ELSE IF(F_Sig()==SK&&T_IsExchangeOpen(F_DealCode())==1)//当前信号为开空仓信号并且交易所处于开盘状态的时候。
48 {
49 SKDeal();//运行开空仓分批函数。
50 }
51 ELSE IF(F_Sig()==BP&&T_IsExchangeOpen(F_DealCode())==1) //当前信号为平空仓信号并且交易所处于开盘状态的时候。
52 {
53 BPDeal();//运行平空仓分批函数。
54 }
55 ELSE IF(F_Sig()==SP&&T_IsExchangeOpen(F_DealCode())==1) //当前信号为平多仓信号并且交易所处于开盘状态的时候。
56 {
57 SPDeal();//运行平多仓分批函数。
58 }
59 }
60 WriteGlobal("A",KYN);//将本次运行过后的以开仓手数记录到注册表中。
61 WriteGlobal("B",PYN);//将本次运行过后的以开仓手数记录到注册表中。
62 WriteGlobal("C",YYN);//将本次运行过后的以开仓手数记录到注册表中。
63 }
64 VOID BKDeal()//定义开仓分批函数
65 {
66 IF(N<level)
67 {
68 T_Deal(F_DealCode(),0,0,N,Offers(F_DealCode(),"ask1"));//做多指定手数。
69 }
70 ELSE IF(N>level)
71 {
72 IF(YYN+PPN<=N)//如果已开仓手数小于需要开仓手数。
73 {
74 IF(F_Sig()==BK&&T_IsNoOrder()==1&&Status==1)//如果当前信号为BK并且无挂单。
75 {
76 IF(F_SigVol()<=N)
77 {
78 KPN = F_Sig
79
80 T_Deal(F_DealCode(),0,0,KPN,Offers(F_DealCode(),"ask1"));//做多指定手数。
81 YYN=YYN+KPN;//已开仓手数增加KPN
82 }
83 ELSE MessageOut("等待成交");//其他情况显示"等待成交"。
84 }
85 ELSE IF(YYN+KPN>N && YYN<N)//如果已开仓手数大于需要开仓手数。
86 {
87 IF(F_Sig()==BK&&T_IsNoOrder()==1&&Status==1)//如果当前信号为BK并且无挂单。
88 {
89 T_Deal(F_DealCode(),0,0,N-YYN,Offers(F_DealCode(),"ask1"));//做多指定手数。
90 MessageOut("good");
91 }
92 ELSE
93 MessageOut("等待成交");//其他情况显示"等待成交"。
94 }
95 ELSE
96 {
97 MessageOut("开多仓分批已成交");//新的已开仓手数等于需要开仓手数。
98 }
99 }
100 }
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 262069696 进行 有偿 编写!(不贵!点击查看价格!)
- 上一篇:请问赢顺有没有追踪止盈策略?
- 下一篇:关注赢智的升级
相关文章
-
指定的模型还没有相关内容!