[求助]趋势跟踪系统程序问题 (文华财经WH8赢智V8.2)

投资者咨询:[求助]趋势跟踪系统程序问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-5-11 16:00
 你好,请帮忙写一个双均线的趋势跟踪系统,目前只能写到这一步了。

程序思路: 
1.  入市周K线EMA5EMA10金叉多,死叉空(指数,实时价)。
2.   手数:资金总权益风险暴露3%,初1.5ATR,手数=M1*3%/(1.5ATR*UNIT),(ATR为日K线的值,周期14,下同)。
3.   止损:新仓初损1.5ATR,浮盈1.5ATR设置保本单。
4.   加仓:每上涨(下跌)1.5ATR加仓,手数为抵减权益额(可用资金)的3%风险暴露,加仓手数=M2*3%/(1.5ATR*UNIT),亦设置1.5ATR止损。
5.   总仓位:≤70%
6.    出市:止损位,双均线出现金叉死叉,总回撤≥20%(任一触发均出市,市价单)

     说明: M1为总权益额,M2为除保证金的可用资金;


目前会写的程序:

EMA5:EMA(CLOSE,5);  //定义5周期EMA
EMA10:EMA(CLOSE,10);//定义10周期EMA
#IMPORT[DAY,1,ATR] AS VAR
ATR1:VAR.ATR;       //周K线上调用日K线ATR,记为ATR1

K:=MONEY*0.03/(1.5*ATR1*UNIT);//开仓手数,总资金3%风险暴露,止损反向波动1.5日ATR
CROSSUP(EMA5,EMA10),BPK(K);
CROSSDOWN(EMA5,EMA10),SPK(K);

C<BKPRICE-REF(ATR1,BARSBK)*1.5,SP(BKVOL);//反向波动1.5ATR,全部止损
C>SKPRICE+REF(ATR1,BARSSK)*1.5,BP(SKVOL);

CHECKSIG(BPK,'A',0,'C',0,0);
CHECKSIG(SPK,'A',0,'C',0,0);
CHECKSIG(BP,'A',0,'C',0,0);
CHECKSIG(SP,'A',0,'C',0,0);

多谢。
   
技术人员回复
日期:2018-5-11 16:21

 参考:


EMA5:EMA(CLOSE,5);  //定义5周期EMA
EMA10:EMA(CLOSE,10);//定义10周期EMA
#IMPORT[DAY,1,ATR] AS VAR
ATR1:VAR.ATR;       //周K线上调用日K线ATR,记为ATR1


K:=MONEY*0.03/(1.5*ATR1*UNIT);//开仓手数,总资金3%风险暴露,止损反向波动1.5日ATR

KZ:=MONEYTOT/(1.5*ATR1*UNIT);
ZC:=BKVOL<KZ*0.7 || SKVOL<KZ*0.7;

CROSSUP(EMA5,EMA10)&&BKVOL=0,BK(K);
CROSSDOWN(EMA5,EMA10)&&SKVOL=0,SK(K);

C>BKPRICE+1.5*ATR1 &&ZC,BK(K);
C<SKPRICE-1.5*ATR1 &&ZC,SK(K);


CROSSUP(EMA5,EMA10),BP(SKVOL);
CROSSDOWN(EMA5,EMA10),SP(BKVOL);

(INITMONEY-MONEYTOT)/INITMONEY>0.2,CLOSEOUT;


C<BKPRICE-REF(ATR1,BARSBK)*1.5 ,SP(BKVOL);//反向波动1.5ATR,全部止损
C>SKPRICE+REF(ATR1,BARSSK)*1.5 ,BP(SKVOL);


MULTSIG(0,0,100,0);

投资者咨询:[求助]趋势跟踪系统程序问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-5-11 16:00
 加仓或止损的ATR1,是想取上一次开仓的值,不是现在的值。
另外KZ,ZC是什么意思?
谢谢
技术人员回复
日期:2018-5-11 16:52

 引用开仓ATR参考下面的修改,KZ取权益可开仓的总手数,ZC判断持仓小于70%

 

具体有您不熟悉的函数可以参考函数说明了解:

 

EMA5:EMA(CLOSE,5);  //定义5周期EMA
EMA10:EMA(CLOSE,10);//定义10周期EMA
#IMPORT[DAY,1,ATR] AS VAR
ATR2:VAR.ATR;       //周K线上调用日K线ATR,记为ATR1
ATR1:REF(ATR2,BARSLAST(CROSS(BKVOL+SKVOL,0.5)));

K:=MONEY*0.03/(1.5*ATR1*UNIT);//开仓手数,总资金3%风险暴露,止损反向波动1.5日ATR

KZ:=MONEYTOT/(1.5*ATR1*UNIT);
ZC:=BKVOL<KZ*0.7 || SKVOL<KZ*0.7;

CROSSUP(EMA5,EMA10)&&BKVOL=0,BK(K);
CROSSDOWN(EMA5,EMA10)&&SKVOL=0,SK(K);

C>BKPRICE+1.5*ATR1 &&ZC,BK(K);
C<SKPRICE-1.5*ATR1 &&ZC,SK(K);


CROSSUP(EMA5,EMA10),BP(SKVOL);
CROSSDOWN(EMA5,EMA10),SP(BKVOL);

(INITMONEY-MONEYTOT)/INITMONEY>0.2,CLOSEOUT;


C<BKPRICE-REF(ATR1,BARSBK)*1.5 ,SP(BKVOL);//反向波动1.5ATR,全部止损
C>SKPRICE+REF(ATR1,BARSSK)*1.5 ,BP(SKVOL);


MULTSIG(0,0,100,0);

投资者咨询:[求助]趋势跟踪系统程序问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-5-11 16:00
 你好,为解决均线交叉时,成交价大幅偏离均线交叉价。
我想优化一下入市信号,如下:
开多:EMA10-EMA5<=0.3*ATR1&&CLOSE-EMA10>=0.2*ATR1
止损,下跌1.5ATR1止损(ATR1为开仓时的日K线的值)

空开:EMA5-EMA10<=0.3*ATR1&&EMA10-CLOSE>=0.2*ATR1
止损:上涨1.5ATR1止损

现在单独想测试一下入市信号的胜率。

自己写的程序如下:
EMA5:EMA(CLOSE,5);  //定义5周期EMA
EMA10:EMA(CLOSE,10);//定义10周期EMA
#IMPORT[DAY,1,ATR] AS VAR
ATRK:VAR.ATR;       //周K线日上调用K线ATR,记为ATRK

A:=IF(EMA5<=EMA10,IF(EMA10-EMA5<=0.3*ATRK&&CLOSE-EMA10>=0.2*ATRK,1,0),IF(EMA5-EMA10<=0.3*ATRK&&EMA10-CLOSE>=0.2*ATRK,2,0));
                    //判断入市信号,|EMA10-EMA5|<=0.3*ATRK&&|CLOSE-EMA10|>=0.2*ATRK
A=1,BPK(1);         //如果返回1,多开
CLOSE<BKPRICE-REF(ATRK,BARSBK)*1.5,SP(1);//多开后下跌1.5ATR1,止损
MULTSIG(0,0,60,0);

A=2,SPK(1);         //如果返回2,空开
CLOSE>SKPRICE+REF(ATRK,BARSSK)*1.5,BP(1);//空开后上涨1.5ATR1,止损
MULTSIG(0,0,60,0);

运行结果入市信号正常,但止损我的想法执没有按照行,帮我看看程序那个地方有问题??
谢谢
投资者咨询:[求助]趋势跟踪系统程序问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-5-11 16:00
 是在指数的周K线上测试。
技术人员回复
日期:2018-5-13 16:54
 相关同事周一工作时间给您回复
投资者咨询:[求助]趋势跟踪系统程序问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-5-11 16:00
 你好,IF语句没有写成功,我改用的if then语句,现在大部分是正确的,但有少数的几个信号止损不对。请帮我查看一下。
程序如下:
EMA5:EMA(CLOSE,5);  //定义5周期EMA
EMA10:EMA(CLOSE,10);//定义10周期EMA
#IMPORT[DAY,1,ATR] AS VAR
ATRK:VAR.ATR;       //周K线日上调用K线ATR,记为ATRK

IF EMA5<=EMA10 THEN
BEGIN
   IF EMA10-EMA5<=N*ATRK&&CLOSE-EMA10>=P*ATRK THEN
   A:=1;
   ELSE
   A:=0;
END
ELSE
BEGIN
   IF EMA5-EMA10<=N*ATRK&&EMA10-CLOSE>=P*ATRK THEN
   A:=2;
   ELSE
   A:=0;
END

A=1,BPK(1);         //如果返回1,多开
CLOSE<BKPRICE-REF(ATRK,BARSBK)*1.5,SP(1);//多开后下跌1.5ATRK,止损
MULTSIG(0,0,60,10);

A=2,SPK(1);         //如果返回2,空开
CLOSE>SKPRICE+REF(ATRK,BARSSK)*1.5,BP(1);//空开后上涨1.5ATRK,止损
MULTSIG(0,0,60,10);

谢谢
技术人员回复
日期:2018-5-14 11:27
 下午相关同事上班后给您回复
投资者咨询:[求助]趋势跟踪系统程序问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-5-11 16:00
 哭了,怎么没人回答?我要单独发帖吗?