以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 图表改后台 回测没有数据 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=167662) |
-- 作者:f三年 -- 发布时间:2019/1/13 15:06:02 -- 图表改后台 回测没有数据 图表改后台程序 回测没有数据 请教老师哪边改错了 INPUT: SETUPLEN(120,1,500,1),ATRPCNT(2.5,0.1,10,0.1),Fund(20000,1,200000,1),TRS(150,1,1000,1); VARIABLE:LSETUP:=0,SSETUP:=0,LEPRICE:=0,SEPRICE:=0;
Lots:=MAX(1,INTPART(Fund/(O*MULTIPLIER*0.1)));
bartoday:=date<>REF(date,1); MA360:=MA(REF(C,1),360); MOMVALUE:=C-REF(C,SETUPLEN); CD:=REF(C,1); If bartoday Then Begin AVGLENG:=1; end; If bartoday=False Then Begin AVGLENG:=AVGLENG+1; AVGLENG:=max(AVGLENG,SETUPLEN); end; VWM:=EMA(VOL*MOMVALUE,AVGLENG);//????????VWM IF HIGH>REF(C,1) Then begin TRUEHIGH1:=HIGH; end; IF HIGH<=REF(C,1) Then begin TRUEHIGH1:=CD; end; IF LOW<=REF(C,1) Then begin TRUELOW1:=LOW; end; IF LOW>REF(C,1) Then begin TRUELOW1:=CD; end; IF BarStatus=2 Then begin TRUERANGE1:=H-L; end; IF BarStatus<>2 Then begin TRUERANGE1:=TRUEHIGH1-TRUELOW1; end; AATR:=MA(TRUERANGE1,AVGLENG);//?????
BULLSETUP:=CROSS(VWM,0) ;//UWM????????? BEARSETUP:=CROSS(0,VWM);//UWM????????? If BARPOS=1 or REF(BULLSETUP,1) Then begin LSETUP:=0; end; If NOT(BARPOS=1 or REF(BULLSETUP,1)) Then begin LSETUP:=LSETUP+1; end; If BULLSETUP Then begin LEPRICE:=H; end; If BARPOS=1 or REF(BEARSETUP,1) Then begin SSETUP:=0; end; If NOT(BARPOS=1 or REF(BEARSETUP,1)) Then begin SSETUP:=SSETUP+1; end; If BEARSETUP then begin SEPRICE:=L; end; If BARPOS>AVGLENG and REF(LEPRICE,1)>0 and REF(C,1)>=REF(LEPRICE,1)+(ATRPCNT*REF(AATR,1)) and REF(LSETUP,1)<=SETUPLEN and REF(LSETUP,1)>=1 and REF(C,1)>MA360 and HOLDING <=0 Then begin
平空:SellSHORT(1,0,MARKETR);
开多:Buy(1,Lots,MARKETR);
LowerAfterEntry:=ENTERPRICE; end; if BARPOS>AVGLENG and REF(SEPRICE,1)>0 and REF(C,1)<=REF(SEPRICE,1)-(ATRPCNT*REF(AATR,1)) and REF(SSETUP,1)<=SETUPLEN and REF(SSETUP,1)>=1 and REF(C,1)<MA360 and HOLDING >=0 Then begin
平多:Sell(1,0,MARKETR);
开空:BUYSHORT(1,Lots,MARKETR);
HigherAfterEntry:=ENTERPRICE; end;
//------------------------------------------------------------------------------------------------
//记录入场后的最高价和最低价
//------------------------------------------------------------------------------------------------
LowerAfterEntryss:= REF(LowerAfterEntry,1);
HigherAfterEntryss:=REF(HigherAfterEntry,1);
Closelp:=REF(Close,1);
If HOLDING >0 and ENTERBARS = 0 Then BEGIN
LowerAfterEntry:=Max(LowerAfterEntry,Low);
HigherAfterEntry:=HigherAfterEntryss;
end
if HOLDING <0 and ENTERBARS = 0 Then BEGIN
HigherAfterEntry:= Min(HigherAfterEntry,HIGH);
LowerAfterEntry:=LowerAfterEntryss;
end
if HOLDING <> 0 and ENTERBARS >= 1 Then BEGIN
LowerAfterEntry:= Max(LowerAfterEntryss,Low);
HigherAfterEntry:= Min(HigherAfterEntryss,HIGH);
End
//------------------------------------------------------------------------------------------------
//跟踪止损
//------------------------------------------------------------------------------------------------
MyPrice2:=LowerAfterEntry - Open*TRS/1000;
If HOLDING>0 And Low <= Myprice2 and ENTERBARS > 0 Then BEGIN
多损:sell(1,HOLDING,MARKETR);
End
Myprice3:=HigherAfterEntry + Open*TRS/1000;
If HOLDING<0 And High >= Myprice3 and ENTERBARS > 0 THEN BEGIN//空头跟踪止损
空损:SellSHORT(1,HOLDING,MARKETR);
End 后台程序 INPUT: SETUPLEN(120,1,500,1),ATRPCNT(2.5,0.1,10,0.1),Fund(20000,1,200000,1),TRS(150,1,1000,1); GLOBALVARIABLE:LSETUP:=0,SSETUP:=0,LEPRICE:=0,SEPRICE:=0; Lots:=MAX(1,INTPART(Fund/(O*MULTIPLIER*0.1))); bartoday:=date<>REF(date,1); MA360:=MA(REF(C,1),360);//后台上用了这么大的均线周期,必须有充足的数据量,后台设置的数据量也必须满足这个。 MOMVALUE:=C-REF(C,SETUPLEN); CD:=REF(C,1); If bartoday Then Begin AvGLENG:=1; end; If bartoday=False Then Begin AvGLENG:=AvGLENG+1; AvGLENG:=max(AvGLENG,SETUPLEN); end; VWM:=EMA(VOL*MOMVALUE,AvGLENG); TRUERANGE1:=H-L; AATR:=MA(TRUERANGE1,AvGLENG); BULLSETUP:=CROSS(VWM,0) ; BEARSETUP:=CROSS(0,VWM); If REF(BULLSETUP,1) Then begin LSETUP:=0; end; If NOT(REF(BULLSETUP,1)) Then begin LSETUP:=LSETUP+1; end; If BULLSETUP Then begin LEPRICE:=H; end; If REF(BEARSETUP,1) Then begin SSETUP:=0; end; If NOT(REF(BEARSETUP,1)) Then begin SSETUP:=SSETUP+1; end; If BEARSETUP then begin SEPRICE:=L; end; If BARPOS>AvGLENG and REF(LEPRICE,1)>0 and REF(C,1)>=REF(LEPRICE,1)+(ATRPCNT*REF(AATR,1)) and REF(LSETUP,1)<=SETUPLEN and REF(LSETUP,1)>=1 and REF(C,1)>MA360 and tsellHOLDING(1) <=0 Then begin 平空:tSellSHORT(1,0,mkt); 开多:tBuy(1,Lots,mkt); LowerAfterEntry:=tENTERPRICE; end; if BARPOS>AvGLENG and REF(SEPRICE,1)>0 and REF(C,1)<=REF(SEPRICE,1)-(ATRPCNT*REF(AATR,1)) and REF(SSETUP,1)<=SETUPLEN and REF(SSETUP,1)>=1 and REF(C,1)<MA360 and tbuyHOLDING(1) >=0 Then begin 平多:tSell(1,0,mkt); 开空:tBUYSHORT(1,Lots,mkt); HigherAfterEntry:=tENTERPRICE; end; //------------------------------------------------------------------------------------------------ //记录入场后的最高价和最低价 //------------------------------------------------------------------------------------------------ LowerAfterEntryss:= REF(LowerAfterEntry,1); HigherAfterEntryss:=REF(HigherAfterEntry,1); Closelp:=REF(Close,1); If tbuyHOLDING(1) >0 and tENTERBARS = 0 Then BEGIN LowerAfterEntry:=Max(LowerAfterEntry,Low); HigherAfterEntry:=HigherAfterEntryss; end if tsellHOLDING(1) <0 and tENTERBARS = 0 Then BEGIN HigherAfterEntry:= Min(HigherAfterEntry,HIGH); LowerAfterEntry:=LowerAfterEntryss; end if tHOLDING2 <> 0 and tENTERBARS >= 1 Then BEGIN LowerAfterEntry:= Max(LowerAfterEntryss,Low); HigherAfterEntry:= Min(HigherAfterEntryss,HIGH); End //------------------------------------------------------------------------------------------------ //跟踪止损 //------------------------------------------------------------------------------------------------ MyPrice2:=LowerAfterEntry - Open*TRS/1000; If tbuyHOLDING(1)>0 And Low <= Myprice2 and tENTERBARS > 0 Then BEGIN 多损:tsell(1,TSELLHOLDINGEX(\'\',\'\',1),mkt); End Myprice3:=HigherAfterEntry + Open*TRS/1000; If tsellHOLDING(1)<0 And High >= Myprice3 and tENTERBARS > 0 THEN BEGIN//空头跟踪止损 空损:tSellSHORT(1,TSELLHOLDINGEX(\'\',\'\',1),mkt); End |
-- 作者:FireScript -- 发布时间:2019/1/14 8:56:18 -- 建议先加载在图表上进行调试,如果图表上能调试出来信号,回测才能有信号。 |
-- 作者:f三年 -- 发布时间:2019/1/14 9:14:00 -- 这张附件就是图表测试结果 图表测试都是好的 后台就是没有数据出来 请教老师 检测下哪边出问题了 谢谢 |
-- 作者:yukizzc -- 发布时间:2019/1/14 9:20:13 -- 交易-后台程序化交易 精细化回测
后台的策略需要在这边进行回测 |
-- 作者:f三年 -- 发布时间:2019/1/14 9:33:30 -- 是的 我的操作都没有错哦 老师 您哪边可以把程序进去试试 有数据吗 |
-- 作者:FireScript -- 发布时间:2019/1/14 9:53:20 -- 1.你这个后台代码不能在日线上,代码里面有限制。换成小周期。 2. 你回测时候要有足够数据
|
-- 作者:f三年 -- 发布时间:2019/1/14 9:58:18 -- 我是测试15分钟线的 2018/1/1-2018/12/31 补充了5分钟线的 测试的是指数 |
-- 作者:FireScript -- 发布时间:2019/1/14 10:09:51 -- 截图看下你后台的设置。以及回测的设置。 |
-- 作者:f三年 -- 发布时间:2019/1/14 10:10:40 -- 15分钟线 |
-- 作者:f三年 -- 发布时间:2019/1/14 10:13:14 -- 后台回测设置 |