以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190113145607.png
图片点击可在新窗口打开查看











--  作者: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
--  
后台回测设置