以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  如何在编程公式里调整仓位手数?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=154167)

--  作者:tradersniper
--  发布时间:2017/5/25 21:19:39
--  如何在编程公式里调整仓位手数?

这是一个系统自带的三进三出交易法。

可应用在期货上,单个品种的持仓手数都很大,在公式里如何设置手数?

在期货下单功能,自定义下单设置里,设置了手数,可自动交易时还是按公式内的手数。

 

 

//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//申明变量
INPUT:N1(20,10,99),N2(15,0,99),首仓(35,0,100),二仓(65,0,100),三仓(100,0,100),首止损(5,0,15)
,二止损(10,0,15),启用期(960101,901219,1500101),FL(5,0,30);
ST:=SMA(H-L,20,1);  U:MA(C,N1);  D:MA(C,N2);
PP:=AVGENTERPRICE;   NB:=ENTERBARS;   NS:=EXITBARS;
测试期:=DATE>启用期;
持仓:=HOLDING;
券值:=持仓*C;                      {券值}
总资产:=券值+CASH(0);
空仓历时:=BARSLAST(持仓=0);
仓位:=券值/总资产*100;            {仓位%}
浮利率:=C/PP*100-100;             {持仓股获利率}
SV:=INTPART(总资产/C/300+1)*100;    {标准购买单位}
M:=CROSS(U,D);
P:=CROSS(D,U);

M1:=M AND 测试期;

M2:=CROSS(C,REF(C,NB)*0.9) AND 测试期;   { AND 持仓<SV*2}
M3:=CROSS(C,REF(C,NB)*(100+FL)/100) AND 测试期;   { AND 持仓<SV*3}
MV1:=SV;                            {INTPART((总资产*首仓-100*C*持仓)/C/10000)*100仓位控制到仓1}
MV2:=SV;                            {INTPART((总资产*二仓-100*C*持仓)/C/10000)*100仓位控制到仓2}
MV3:=INTPART(CASH(0)/C/100)*100;       {INTPART((总资产*三仓-100*C*持仓)/C/10000)*100仓位控制到仓3}

F1:=CROSS(HHV(C,NB+1)*(100-首止损)/100,C);
F2:=CROSS(HHV(C,NB+1)*(100-二止损)/100,C);
P1:=F1*(SUM(F1,NB)=1);
P2:=F2*(SUM(F2,NB)=1);
P3:=P OR CROSS(HHV(C,NB+1)*0.85,C);

PV1:=SV;
PV2:=SV;
PV3:=持仓;

//交易系统
开1:BUY(M1,MV1,THISCLOSE); //开仓1
开2:BUY(M2 AND SUM(P1+P2+P3,NB)=0,MV2,THISCLOSE);  //开仓2
开3:BUY(M3 AND SUM(P1+P2+P3,NB)=0 AND M2=0,MV3,THISCLOSE);  //开仓3

抛1:SELL(P1,PV1,THISCLOSE);  //平仓1
抛2:SELL(P2,PV2,THISCLOSE);  //平仓2
抛3:SELL(P3,PV3,THISCLOSE);  //平仓3

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;


--  作者:FexTel
--  发布时间:2017/5/26 8:31:01
--  
学习下 buy,sell这种下单函数,buy(cond,SS,MARKET)  函数里面第二个参数对应为买卖的手数

例如,下面红色标记部分

开1:BUY(M1,MV1,THISCLOSE); //开仓1
开2:BUY(M2 AND SUM(P1+P2+P3,NB)=0,MV2,THISCLOSE);  //开仓2
开3:BUY(M3 AND SUM(P1+P2+P3,NB)=0 AND M2=0,MV3,THISCLOSE);  //开仓3

抛1:SELL(P1,PV1,THISCLOSE);  //平仓1
抛2:SELL(P2,PV2,THISCLOSE);  //平仓2
抛3:SELL(P3,PV3,THISCLOSE);  //平仓3