以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  asset曲线的统计问题  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=67362)

--  作者:mao100003801
--  发布时间:2014/7/14 15:13:59
--  asset曲线的统计问题

我想统计:过去20次交易,平仓后的asset值的移动平均值,并和asset一起画在K图上,

 

求教一段代码?

 

谢谢!


--  作者:jinzhe
--  发布时间:2014/7/14 15:24:15
--  
处理中
--  作者:jinzhe
--  发布时间:2014/7/14 15:35:18
--  

nn1:=sumbars(平多条件 or 平空条件,1);

nn2:=sumbars(平多条件 or 平空条件,2);

nn3:=sumbars(平多条件 or 平空条件,3);

.........

nn20:=sumbars(平多条件 or 平空条件,20);

 

a1:=ref(asset,nn1);

a2:=ref(asset,nn2);

a3:=ref(asset,nn3);

.......

a20:=ref(asset,nn20);

 

 

ma20:(a1+a2+a3+........+a20)/20;


--  作者:mao100003801
--  发布时间:2014/7/14 16:00:25
--  

恩,我暂时用的方法也是这一类的,是用asset和numprofit来计算的,如后面的代码。

 

我想求助一个使用循环语句的方法,因为这个平均周期是不固定的。

 

但因本人对循环语句和数组语句的使用尚未掌握,故而无法用循环来完成计算。

 

请帮我看看我后面的循环代码部分是什么问题,谢谢。

 

 

 

//非循环方式计算的代码

lastmoney:ref(asset,EXITBARS),NOAXIS,linedot; 
lastmoney_1:=lastmoney;
lastmoney_2:=lastmoney_1-NUMPROFIT(1);
lastmoney_3:=lastmoney_2-NUMPROFIT(2);
lastmoney_4:=lastmoney_3-NUMPROFIT(3);
lastmoney_5:=lastmoney_4-NUMPROFIT(4);
lastmoney_6:=lastmoney_5-NUMPROFIT(5);
lastmoney_7:=lastmoney_6-NUMPROFIT(6);
lastmoney_8:=lastmoney_7-NUMPROFIT(7);
lastmoney_9:=lastmoney_8-NUMPROFIT(8);
lastmoney_10:=lastmoney_9-NUMPROFIT(9);
ma10_lastmoney:(lastmoney_1+lastmoney_2+lastmoney_3+lastmoney_4+lastmoney_5+lastmoney_6+
lastmoney_7+lastmoney_8+lastmoney_9+lastmoney_10)/10,NOAXIS,linedot;//,NOAXIS,linedot;

 

//循环计算代码,其中mdt为统计周期变量。

lastmoney:ref(asset,EXITBARS); 
VARIABLE:sum_slastmoney=lastmoney,slastmoney[mdt]=0;
slastmoney[1]:=lastmoney;
for i=1 to mdt do
begin
 slastmoney[i+1]:=slastmoney[i]-NUMPROFIT(i);
 sum_slastmoney:=sunslastmoney+slastmoney[i+1];
end
maslastmoney:sum_slastmoney/mdt,NOAXIS,linedot;


--  作者:mao100003801
--  发布时间:2014/7/14 16:02:22
--  

//修正一处笔误。。。

//循环计算代码,其中mdt为统计周期变量。

lastmoney:ref(asset,EXITBARS); 
VARIABLE:sum_slastmoney=lastmoney,slastmoney[mdt]=0;
slastmoney[1]:=lastmoney;
for i=1 to mdt do
begin
 slastmoney[i+1]:=slastmoney[i]-NUMPROFIT(i);
 sum_slastmoney:=sum_slastmoney+slastmoney[i+1];
end
maslastmoney:sum_slastmoney/mdt,NOAXIS,linedot;


--  作者:jinzhe
--  发布时间:2014/7/14 16:07:03
--  

不要用循环,循环计算起来比上面的枚举要麻烦


--  作者:mao100003801
--  发布时间:2014/7/14 16:23:00
--  
好的,谢谢!