以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  怎么统计当日开盘到现在的总盈利?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=31010)

--  作者:rzy890516
--  发布时间:2012/11/29 20:19:45
--  怎么统计当日开盘到现在的总盈利?
怎么统计当天开盘到现在的总盈利啊??我用循环做的貌似有点问题,算的不准确,甚至出现图表上的交易与测试明细里不对应。求解
--  作者:rzy890516
--  发布时间:2012/11/29 20:22:58
--  

以下是我写的代码:版主大神以及各位大侠帮忙看下

 

 

 

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秒,平空


--  作者:王锋
--  发布时间:2012/11/29 20:37:21
--  

根本就不要那么麻烦,只要通过计算开盘时的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;