以下是我写的代码:版主大神以及各位大侠帮忙看下
VARIABLE:laststat=0;
//下面2个复制到定义部分
I:=TOTALDAYTRADE; //今日交易次数
YL:=0; //平仓盈亏
AVV1:=MA(VOL,50);
AVV2:=MA(VOL,10);//10周期移动平均
AVV3:=MA(VOL,3);
//控制部分
if laststat !=100 and TIME>=091500 and TIME<=151359 then
begin
if I>0 then //有交易次数
begin
FOR K=1 TO I DO YL:=YL+NUMPROFIT(K); //计算本日内总平仓盈亏
end
IF (YL+OPENPROFIT)>3000 then //在有交易情况下平仓亏损到一定执行操作,如果一次都没交易一样可以用这个计算,因为YL在无交易时值为0
begin
SELLSHORT( HOLDING<0,0,THISCLOSE),ORDERQUEUE; //平空
SELL( HOLDING>0,0,THISCLOSE),ORDERQUEUE; //平多
laststat:=100;
EXIT;
end
if holding>=0 and VOL>AVV3*1.4 THEN //为了开仓,无实际意义
begin
//平多开空
SELL( true , 1 , THISCLOSE ) , ORDERQUEUE;
BUYSHORT( true , 1, THISCLOSE ) , ORDERQUEUE;
exit;
end
if holding<=0 and VOL>AVV2*2 then //为了开仓,无实际意义
begin
//平空开多
SELLSHORT( true , 1 , THISCLOSE ) , ORDERQUEUE;
BUY( true , 1, THISCLOSE ) , ORDERQUEUE;
exit;
end
end
if time>151259 then //每天结束时全局变量初始化
begin
laststat:=0;
end
//防止隔夜仓
SELL(TIME>=151359 AND HOLDING>0,0,THISCLOSE); //股指期货时间大于15点13分59秒,平多
SELLSHORT(TIME>=151359 AND HOLDING<0,0,THISCLOSE); //股指期货时间大于15点13分59秒,平空
根本就不要那么麻烦,只要通过计算开盘时的Asset资产和现在的资产进行对比就知道了。
VARIABLE:x=ASSET; //记录最开始资产
//下面的代码判断当出现日期更换后就将资产恢复到今日的开盘位置
if ref(date,1) <> date then
x:=ASSET;
ma3:=ma(c,3);
ma5:=ma(c,5);
buy(cross(ma3,ma5),1,THISCLOSE);
sell(cross(ma5,ma3),0,THISCLOSE);
今日盈亏:ASSET - x,nodraw;