投资者咨询:请老师检查一下为何海龟交易回测指标全都为0 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-7-13 10:33
TR : MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//求最高价减去最低价,一个周期前的收盘价减去最高价的绝对值,一个周期前的收盘价减去最低价的绝对值,这三个值中的最大值
ATR : MA(TR,26),COLORYELLOW;//求N个周期内的TR的简单移动平均
ATR : MA(TR,26),COLORYELLOW;//求N个周期内的TR的简单移动平均
IF BARPOS=1 THEN
BEGIN
NN:=ATR;
END
IF BARPOS>1 THEN
BEGIN
NN:=(19*NN+TR)/20;
END
N:NN;//迭代求仓单基本单位N
TC..INTPART((MONEYTOT*0.01/(UNIT*N)));//根据权益的1%计算下单手数
L1:REF(HHV(HIGH,20),1),COLORRED,LINETHICK2;
L2:REF(LLV(LOW,20),1),COLORGREEN,LINETHICK2;
LM:(L1+L2)/2,COLORBLACK,LINETHICK2;
BEGIN
NN:=ATR;
END
IF BARPOS>1 THEN
BEGIN
NN:=(19*NN+TR)/20;
END
N:NN;//迭代求仓单基本单位N
TC..INTPART((MONEYTOT*0.01/(UNIT*N)));//根据权益的1%计算下单手数
L1:REF(HHV(HIGH,20),1),COLORRED,LINETHICK2;
L2:REF(LLV(LOW,20),1),COLORGREEN,LINETHICK2;
LM:(L1+L2)/2,COLORBLACK,LINETHICK2;
CROSSUP(C,L1)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,BPK(TC);//最新价超过20周期的最高值,首次买入开仓,手数为TC手
CROSSDOWN(C,L2)&&ISLASTBK=0&&ISLASTSK=0,SPK(TC); //最新价跌破20周期的最低值,首次卖出开仓,手数为TC手
C>=BKPRICE+0.5*N&&BKVOL<4*TC&&ISLASTBK,BK(TC);//价格在上次开仓的基础上上涨0.5倍,在手数不超过4倍TC的时候,买入加仓TC手
C<=SKPRICE-0.5*N&&SKVOL<4*TC&&ISLASTSK,SK(TC);//价格在上次开仓的基础上下跌0.5倍N,在手数不超过4倍TC的时候,卖出加仓TC手
C<=(BKPRICE-2*N)&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去2倍的N,止损平仓
C>=(SKPRICE+2*N)&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上2倍的N,止损平仓
CROSSUP(H,HV(H,10))&&SKVOL>0,BP(SKVOL);//最高价上穿10周期最高价,平仓
CROSSDOWN(L,LV(L,10))&&BKVOL>0,SP(BKVOL); //最低价下穿10周期的最低价,平仓
CROSSDOWN(C,L2)&&ISLASTBK=0&&ISLASTSK=0,SPK(TC); //最新价跌破20周期的最低值,首次卖出开仓,手数为TC手
C>=BKPRICE+0.5*N&&BKVOL<4*TC&&ISLASTBK,BK(TC);//价格在上次开仓的基础上上涨0.5倍,在手数不超过4倍TC的时候,买入加仓TC手
C<=SKPRICE-0.5*N&&SKVOL<4*TC&&ISLASTSK,SK(TC);//价格在上次开仓的基础上下跌0.5倍N,在手数不超过4倍TC的时候,卖出加仓TC手
C<=(BKPRICE-2*N)&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去2倍的N,止损平仓
C>=(SKPRICE+2*N)&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上2倍的N,止损平仓
CROSSUP(H,HV(H,10))&&SKVOL>0,BP(SKVOL);//最高价上穿10周期最高价,平仓
CROSSDOWN(L,LV(L,10))&&BKVOL>0,SP(BKVOL); //最低价下穿10周期的最低价,平仓
N的计算方式:N=(19×PDN+TR)/20,其中,PDN是指前一天的N,
TR(实际范围)=max(H-L,H-PDC,PDC-L)
式中:
H-当日最高价
L-当日最低价
PDC-前个交易日的收盘价
在本策略中,用于迭代的第一个N是采用days天内数据可用的那些天的TR的平均值
Unit的计算方式:unit=帐户净值的1%/(N×每点价值量) ”
TR(实际范围)=max(H-L,H-PDC,PDC-L)
式中:
H-当日最高价
L-当日最低价
PDC-前个交易日的收盘价
在本策略中,用于迭代的第一个N是采用days天内数据可用的那些天的TR的平均值
Unit的计算方式:unit=帐户净值的1%/(N×每点价值量) ”
技术人员回复
日期:2018-7-13 10:40
请参考:
VARIABLE:NN:=0;
TR : =MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//求最高价减去最低价,一个周期前的收盘价减去最高价的绝对值,一个周期前的收盘价减去最低价的绝对值,这三个值中的最大值
ATR := MA(TR,26),COLORYELLOW;//求N个周期内的TR的简单移动平均
BEGIN
NN:=ATR;
END
IF BARPOS>27 THEN
BEGIN
NN:=(19*NN+TR)/20;
END
N:NN;//迭代求仓单基本单位N
TC..INTPART((MONEYTOT*0.01/(UNIT*N)));//根据权益的1%计算下单手数
L1:REF(HHV(HIGH,20),1),COLORRED,LINETHICK2;
L2:REF(LLV(LOW,20),1),COLORGREEN,LINETHICK2;
LM:(L1+L2)/2,COLORBLACK,LINETHICK2;
CROSSUP(C,L1)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,BPK(TC);//最新价超过20周期的最高值,首次买入开仓,手数为TC手
CROSSDOWN(C,L2)&&ISLASTBK=0&&ISLASTSK=0,SPK(TC); //最新价跌破20周期的最低值,首次卖出开仓,手数为TC手
C>=BKPRICE+0.5*N&&BKVOL<4*TC&&ISLASTBK,BK(TC);//价格在上次开仓的基础上上涨0.5倍,在手数不超过4倍TC的时候,买入加仓TC手
C<=SKPRICE-0.5*N&&SKVOL<4*TC&&ISLASTSK,SK(TC);//价格在上次开仓的基础上下跌0.5倍N,在手数不超过4倍TC的时候,卖出加仓TC手
C<=(BKPRICE-2*N)&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去2倍的N,止损平仓
C>=(SKPRICE+2*N)&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上2倍的N,止损平仓
CROSSUP(H,HV(H,10))&&SKVOL>0,BP(SKVOL);//最高价上穿10周期最高价,平仓
CROSSDOWN(L,LV(L,10))&&BKVOL>0,SP(BKVOL); //最低价下穿10周期的最低价,平仓