[求助]下單組件如何編寫?智能分批+滑點控制 [贏順期貨]
- 咨詢內容:
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 進行 有償 編寫!(不貴!點擊查看價格!)
- 上一篇:請問贏順有沒有追蹤止盈策略?
- 下一篇:關注贏智的升級
相關文章
-
指定的模型還沒有相關內容!