基本思路: 開平倉條件80\81\82\83分別為獨立策略的條件。各策略在開平倉各自盈利>500后平倉不再開倉。現在需將以上四個策略同時放在一個策略中運行,并獨立開平倉,各策略條件在開平倉總盈利>500后平倉不再開倉。若其中任意三個策略條件滿足盈利>500平倉后不再開倉,策略此時需同時平了第四個條件開的倉。
?
以下內容為程序代碼:
1 VARIABLE:H0=0,H1=0,H2=0,H3=0,P0=0,P1=0,P2=0,P3=0,TH=0,AA0=0,AA1=0,AA2=0,AA3=0,TZKC=0;
2 TH:=ABS(H0)+ABS(H1)+ABS(H2)+ABS(H3);//總開倉數
3 //=================以下近似的每手開倉手續費計算============
4 if TH>0 then FEE:=((H0*(C-P0)+H1*(C-P1)+H2*(C-P2)+H3*(C-P3))*MULTIPLIER-OPENPROFIT)/TH;
5 if TH=0 then FEE:=0;
6 //=================以上近似的每手開倉手續費計算============
7 AA00:=AA0+H0*(C-P0)*MULTIPLIER-FEE;//80開平倉總的動態盈利
8 AA01:=AA1+H1*(C-P1)*MULTIPLIER-FEE;//81開平倉總的動態盈利
9 AA02:=AA2+H2*(C-P2)*MULTIPLIER-FEE;//82開平倉總的動態盈利
10 AA03:=AA3+H3*(C-P3)*MULTIPLIER-FEE;//83開平倉總的動態盈利
11 //===========================80條件=====
12 BPK80:=A1;//條件A1
13 SPK80:=A2;//條件A2
14 BP80:=A1&&AA00>=500;
15 SP80:=A2&&AA00>=500;
16 //===========================81條件=====
17 BPK81:=B1;//條件B1
18 SPK81:=B2;//條件B2
19 BP81:=B1&&AA01>=500;
20 SP81:=B2&&AA01>=500;
21 //===========================82條件=====
22 BPK82:=C1;//條件C1
23 SPK82:=C2;//條件C2
24 BP82:=C1&&AA02>=500;
25 SP82:=C2&&AA02>=500;
26 //===========================83條件=====
27 BPK83:=D1;//條件D1
28 SPK83:=D2;//條件D2
29 BP83:=D1&&AA03>=500;
30 SP83:=D2&&AA03>=500;
31 //===========================80開平倉==============================
32 IF H0>=0&&SPK80 THEN BEGIN //若持有多單
33 if H0>0 then begin
34 SELL(1,1,MARKET); //80平多單
35 AA0:=AA0+H0*(CLOSE-P0)*MULTIPLIER-FEE;//80平倉總盈虧
36 H0:=0;//80持單數為”0”
37 P0:=0;//80持單價位為”0”
38 if AA0>150 then TZKC:=TZKC+1; //80停止開倉條件滿足,停止開倉數TZKC+1。
39 end
40 if H0=0&&AA0<=150&&TZKC<3 then begin
41 BUYSHORT(1,1,MARKET); //開空單
42 H0:=-1;//80持單數為”-1”
43 P0:=ClOSE;//80持單價位為”ClOSE”
44 end
45 END
46 IF H0<=0&&BPK80 THEN BEGIN //若持有空單
47 if H0<0 then begin
48 SELLSHORT(1,1,MARKET); //平空單
49 AA0:=AA0+H0*(CLOSE-P0)*MULTIPLIER-FEE;
50 H0:=0;
51 P0:=0;
52 if AA0>150 then TZKC:=TZKC+1;
53 end
54 if H0=0&&AA0<=150&&TZKC<3 then begin
55 BUY(1,1,MARKET); //開多單
56 H0:=1;
57 P0:=ClOSE;
58 end
59 END
60 IF H0>0&&SP80 THEN BEGIN //若持有多單
61 SELL(1,1,MARKET); //平多單
62 AA0:=AA0+H0*(CLOSE-P0)*MULTIPLIER-FEE;
63 H0:=0;
64 P0:=0;
65 TZKC:=TZKC+1;
66 END
67 IF H0<0&&BP80 THEN BEGIN //若持有空單
68 SELLSHORT(1,1,MARKET); //平空單
69 AA0:=AA0+H0*(CLOSE-P0)*MULTIPLIER-FEE;
70 H0:=0;
71 P0:=0;
72 TZKC:=TZKC+1;
73 END
74 //==================81開平倉============================================
75 IF H1>=0&&SPK81 THEN BEGIN //若持有多單
76 if H1>0 then begin
77 SELL(1,1,MARKET); //平多單
78 AA1:=AA1+H1*(CLOSE-P1)*MULTIPLIER-FEE;
79 H1:=0;
80 P1:=0;
81 if AA1>150 then TZKC:=TZKC+1;
82 end
83 if H1=0&&AA1<=150&&TZKC<3 then begin
84 BUYSHORT(1,1,MARKET); //開空單
85 H1:=-1;
86 P1:=ClOSE;
87 TH:=ABS(H0)+ABS(H1)+ABS(H2)+ABS(H3);
88 end
89 END
90 IF H1<=0&&BPK81 THEN BEGIN //若持有空單
91 if H1<0 then begin
92 SELLSHORT(1,1,MARKET); //平空單
93 AA1:=AA1+H1*(CLOSE-P1)*MULTIPLIER-FEE;
94 H1:=0;
95 P1:=0;
96 if AA1>150 then TZKC:=TZKC+1;
97 end
98 if H1=0&&AA1<=150&&TZKC<3 then begin
99 BUY(1,1,MARKET); //開多單
100 H1:=1;
101 P1:=ClOSE;
102 end
103 END
104 IF H1>0&&SP81 THEN BEGIN //若持有多單
105 SELL(1,1,MARKET); //平多單
106 AA1:=AA1+H1*(CLOSE-P1)*MULTIPLIER-FEE;
107 H1:=0;
108 P1:=0;
109 TZKC:=TZKC+1;
110 END
111 IF H1<0&&BP81 THEN BEGIN //若持有空單
112 SELLSHORT(1,1,MARKET); //平空單
113 AA1:=AA1+H1*(CLOSE-P1)*MULTIPLIER-FEE;
114 H1:=0;
115 P1:=0;
116 TZKC:=TZKC+1;
117 END
118 //============82開平倉================================================
119 IF H2>=0&&SPK82 THEN BEGIN //若持有多單
120 if H2>0 then begin
121 SELL(1,1,MARKET); //平多單
122 AA2:=AA2+H2*(CLOSE-P2)*MULTIPLIER-FEE;
123 H2:=0;
124 P2:=0;
125 if AA2>150 then TZKC:=TZKC+1;
126 end
127 if H2=0&&AA2<=150&&TZKC<3 then BEGIN
128 BUYSHORT(1,1,MARKET); //開空單
129 H2:=-1;
130 P2:=ClOSE;
131 end
132 END
133 IF H2<=0&&BPK82 THEN BEGIN //若持有空單
134 if H2<0 then begin
135 SELLSHORT(1,1,MARKET); //平空單
136 AA2:=AA2+H2*(CLOSE-P2)*MULTIPLIER-FEE;
137 H2:=0;
138 P2:=0;
139 if AA2>150 then TZKC:=TZKC+1;
140 end
141 if H2=0&&AA2<=150&&TZKC<3 then BEGIN
142 BUY(1,1,MARKET); //開多單
143 H2:=1;
144 P2:=ClOSE;
145 end
146 END
147 IF H2>0&&SP82 THEN BEGIN //若持有多單
148 SELL(1,1,MARKET); //平多單
149 AA2:=AA2+H2*(CLOSE-P2)*MULTIPLIER-FEE;
150 H2:=0;
151 P2:=0;
152 TZKC:=TZKC+1;
153 END
154 IF H2<0&&BP82 THEN BEGIN //若持有空單
155 SELLSHORT(1,1,MARKET); //平空單
156 AA2:=AA2+H2*(CLOSE-P2)*MULTIPLIER-FEE;
157 H2:=0;
158 P2:=0;
159 TZKC:=TZKC+1;
160 END
161 //================83開平倉====================================================
162 IF H3>=0&&SPK83 THEN BEGIN //若持有多單
163 if H3>0 then begin
164 SELL(1,1,MARKET); //平多單
165 AA3:=AA3+H3*(CLOSE-P3)*MULTIPLIER-FEE;
166 H3:=0;
167 P3:=0;
168 if AA3>150 then TZKC:=TZKC+1;
169 end
170 if H3=0&&AA3<=150&&TZKC<3 then BEGIN
171 BUYSHORT(1,1,MARKET); //開空單
172 H3:=-1;
173 P3:=ClOSE;
174 end
175 END
176 IF H3<=0&&BPK83 THEN BEGIN //若持有空單
177 if H3<0 then begin
178 SELLSHORT(1,1,MARKET); //平空單
179 AA3:=AA3+H3*(CLOSE-P3)*MULTIPLIER-FEE;
180 H3:=0;
181 P3:=0;
182 if AA3>150 then TZKC:=TZKC+1;
183 end
184 if H3=0&&AA3<=150&&TZKC<3 then BEGIN
185 BUY(1,1,MARKET); //開多單
186 H3:=1;
187 P3:=ClOSE;
188 end
189 END
190 IF H3>0&&SP83 THEN BEGIN //若持有多單
191 SELL(1,1,MARKET); //平多單
192 AA3:=AA3+H3*(CLOSE-P3)*MULTIPLIER-FEE;
193 H3:=0;
194 P3:=0;
195 TZKC:=TZKC+1;
196 END
197 IF H3<0&&BP83 THEN BEGIN //若持有空單
198 SELLSHORT(1,1,MARKET); //平空單
199 AA3:=AA3+H3*(CLOSE-P3)*-FEE;
200 H3:=0;
201 P3:=0;
202 TZKC:=TZKC+1;
203 END
204 IF TZKC=3 THEN BEGIN//80、81、82、83任意3個停止開倉條件滿足即清空持倉,不再開倉。
205 SELLSHORT(1,0,MARKET); //平空單
206 SELL(1,0,MARKET); //平多單
207 END
208 //============================83============================================
209 贏:asset-1000000,NOAXIS,COLORYELLOW;
?
?來源: www.kzuj.com.cn
四個策略同時放在一個策略中運行,并獨立開平倉
這個沒有辦法,策略和策略之間是可以獨立,但是如果放在一起沒有辦法做區分的