该公式用于自定义买卖信号的回测与收益可视化。
- 定义买入条件(5日线上穿20日线)和卖出条件(20日线上穿5日线)。
- 使用`TFILTER`生成实际买卖信号,避免连续重复。
- 计算每次卖出时的收益率,并统计最近N次交易的总收益。
- 在收益曲线上用图标标记买卖点,并显示单次收益数值。
- 黄色表示正收益,洋红色表示负收益。
- 用法:修改`买入条件`和`卖出条件`即可测试不同策略。
N:=9;
买入条件:=CROSS(MA(C,5),MA(C,20));{自定买入条件}
卖出条件:=CROSS(MA(C,20),MA(C,5));{自定卖出条件}
{卖出条件:=(C-REF(C,BARSLAST(买入条件)))/C>0.2 OR (REF(C,BARSLAST(买入条件))-C)/C>0.1;
如抄底指标只有买入条件而无卖出条件,可套用上面的,也可以试试这个}
ENTERLONG:=TFILTER(买入条件,卖出条件,1);
EXITLONG:=TFILTER(买入条件,卖出条件,2);
买入:ENTERLONG,NODRAW,COLOR00FF80;
卖出:EXITLONG,NODRAW,COLORFF8000;
SY:=IF(EXITLONG,(C/REF(C,BARSLAST(ENTERLONG))-1)*100,DRAWNULL);
LJSY:=IF(CURRBARSCOUNT<=N,SUM(SY,0),DRAWNULL);
RQSY:=CONST(REF(LJSY,N-1));
收益:LJSY-RQSY,COLORYELLOW;
NOTEXT1:IF(收益>0,收益,DRAWNULL),COLORYELLOW;
NOTEXT2:IF(收益<=0,收益,DRAWNULL),COLORMAGENTA;
DRAWICON(ENTERLONG,收益*0.94,1);
DRAWICON(EXITLONG,收益*1.03,2);
DRAWNUMBER(EXITLONG,收益*1.2,IF((C/REF(C,BARSLAST(ENTERLONG))-1)*100>0,(C/REF(C,BARSLAST(ENTERLONG))-1)*100,DRAWNULL)),COLORYELLOW;
DRAWNUMBER(EXITLONG,收益*0.98,IF((C/REF(C,BARSLAST(ENTERLONG))-1)*100<=0,(C/REF(C,BARSLAST(ENTERLONG))-1)*100,DRAWNULL)),COLORMAGENTA;
DRAWTEXT_FIX(CURRBARSCOUNT=1,0.01,0.1,0,'自定义买卖条件,看收益曲线图'),COLORRED;