以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- 请查问题 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=159691) |
-- 作者:sword8586 -- 发布时间:2017/11/20 22:10:56 -- 请查问题 基本思路: 开平仓条件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; |
-- 作者:yukizzc -- 发布时间:2017/11/21 8:39:16 -- 四个策略同时放在一个策略中运行,并独立开平仓 这个没有办法,策略和策略之间是可以独立,但是如果放在一起没有办法做区分的 |