老师好请求帮助将文华源码改写成金字塔源码
N4:=SUMBARS(COUNTSIG(BK,1),1),NODRAW;
N5:=SUMBARS(COUNTSIG(SK,1),1),NODRAW;
N1:=IF(COUNTSIG(BK,0)=0,N5,N4),NODRAW;
N2:=IF(COUNTSIG(SK,0)=0,N4,N5),NODRAW;
N3:=MIN(N1,N2),NODRAW;
YK1:MONEYTOT-REF(MONEYTOT,N3),NODRAW;//取本次平仓盈亏值
YK:IF(COUNTSIG(SP,0)+COUNTSIG(BP,0)=0,0,LOOP2(YK1+REF(YK,N3)>=0,0,YK1+REF(YK,N3))),NODRAW;//取本次平仓后亏损累计值。
YK2:REF(YK,N3),NODRAW;//取本次平仓前一周期的亏损累计值。
老师这是平仓后开仓前立即取出三个值,
一,取本次平仓盈亏值,当平仓一结束,立即取值从开仓到平仓这一仓单的平仓盈亏值,这个值有三个可能,盈利为正数>0,保本=0,亏损为负数<0,
二,取本次平仓前一周期的亏损累计值,当平仓一结束,立即取前一周期的开平仓的亏损累计值,这个取值,当出现亏损时才取这个负值,当盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,就设初始前一周期的亏损累计值为0。
三,取本次平仓后亏损累计值,当平仓一结束,立即取本周期平仓的亏损累计值,这个取值为前一周期的亏损累计值+取本次平仓盈亏值,当相加出现亏损时才取这个负值,当相加盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,设初始前一周期的亏损累计值为0。
老师,我将cci交易系统代入测试一下,通不过,不知是什么原,
TYP := (HIGH + LOW + CLOSE)/3;
CCI:=(TYP-MA(TYP,M))/(0.015*AVEDEV(TYP,M));
手数:=ss;
//交易条件
开多平空条件:=CROSS(CCI,100);//开多平空条件
开空平多条件:=CROSS(100,cci);//开空平多条件
//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);
开多条件:=CROSS(CCI,100);//开多条件
开空条件:=CROSS(100,cci);//开空条件
平空条件:=CROSS(CCI,100);//平空条件
平多条件:=CROSS(100,cci);//平多条件
N4:=SUMBARS(COUNT(开多条件,1),1),NODRAW;
N5:=SUMBARS(COUNT(开空条件,1),1),NODRAW;
N1:=IF(COUNT(开多条件,0)=0,N5,N4),NODRAW;
N2:=IF(COUNT(开空条件,0)=0,N4,N5),NODRAW;
N3:=MIN(N1,N2),NODRAW;
YK1:asset-REF(asset,N3),NODRAW;//取本次平仓盈亏值
YK:IF(COUNT(平多条件,0)+COUNT(平空条件,0)=0,0,if(YK1+REF(YK,N3)>=0,0,YK1+REF(YK,N3))),NODRAW;//取本次平仓后亏损累计值。
YK2:REF(YK,N3),NODRAW;//取本次平仓前一周期的亏损累计值。
一,取本次平仓盈亏值,当平仓一结束,立即取值从开仓到平仓这一仓单的平仓盈亏值,这个值有三个可能,盈利为正数>0,保本=0,亏损为负数<0, 二,取本次平仓前一周期的亏损累计值,当平仓一结束,立即取前一周期的开平仓的亏损累计值,这个取值,当出现亏损时才取这个负值,当盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,就设初始前一周期的亏损累计值为0。 三,取本次平仓后亏损累计值,当平仓一结束,立即取本周期平仓的亏损累计值,这个取值为前一周期的亏损累计值+取本次平仓盈亏值,当相加出现亏损时才取这个负值,当相加盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,设初始前一周期的亏损累计值为0。 |
初始资金:=1000000;
if 平仓条件 then
begin
sell();
平仓盈亏值:=NUMPROFIT(1);
前一周期亏损累计值:=if(平仓盈亏值<0,ref(asset-初始资金,1),0);
本次累计亏损值:=if(前一周期亏损累计值+平仓盈亏值<0,前一周期亏损累计值+平仓盈亏值,0);
end