以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- [原创]螺纹钢10点开多平多的错在那里? (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=188034) |
-- 作者:tonyzhu -- 发布时间:2021/4/25 10:32:13 -- [原创]螺纹钢10点开多平多的错在那里? 这个公式用在螺纹钢,当符合开多条件时,开多,盈利10点平仓,策略测试时没有按照信号开仓。 KD:=DK1>8&&CROSS(F,S)&&F<50&&S<50&&BC<50; //开多条件 PD:=(C-ENTERPRICE)>10; //平多条件 开多:BUY(KD AND HOLDING=0,1,MARKET); //开多信号 平多:SELL(PD,1,MARKET); //平多信号 但是实际在公式中是有信号的,DRAWICON(DK1>8&&CROSS(F,S)&&F<50&&S<50&&BC<50 ,50 ,1 ); 我用图标标记出来了。 |
-- 作者:FireScript -- 发布时间:2021/4/25 10:35:03 -- KD AND HOLDING=0这个才算你完整的开多条件。你把这个作为条件输出下。 |
-- 作者:tonyzhu -- 发布时间:2021/4/25 11:01:24 -- 还是和之前一样。 |
-- 作者:FireScript -- 发布时间:2021/4/25 11:02:01 -- 发下完整代码 我本地调试下。 另外你也要看下测试和加载在图表上的数据量是不是不一致。如果不一致,信号可能也会不一致。
[此贴子已经被作者于2021/4/25 11:04:59编辑过]
|
-- 作者:tonyzhu -- 发布时间:2021/4/25 11:15:43 -- //日内强度 AA:=(2*C-H-L)/(H-L); BB:=AA*VOL; R:=SUM(BB,20)/SUM(VOL,20); //中期方向线 MA1:=EMA(CLOSE,12); MA2:=EMA(CLOSE,47); B11:=(MA1-MA2); //穿叉短周期 N:=34; VAR1:=LLV(CLOSE,10);//10日最低 VAR2:=HHV(CLOSE,10);//10日最大 F: EMA((CLOSE-VAR1)/(VAR2-VAR1)*100,10), COLORGREEN;//价差 S: EMA(0.667*REF(F,1)+0.333*F,2) , COLORYELLOW; FS:=(F+S)/2; //穿叉长周期 VAR3:=(2*CLOSE+HHV(CLOSE,2)+LLV(CLOSE,2))/4;//化解 VAR4:=LLV(CLOSE,N);//34日最低 VARA:=HHV(CLOSE,N); VARB:=EMA((VAR3-VAR4)/(VARA-VAR4)*100,13);//价差 VARC:=EMA(0.667*REF(VARB,1)+0.333*VARB,2); FJ:=VARB-VARC; BC:(VARB+VARC)/2; //XDIKK1中期方向线换向 //3分钟 A3:=STKINDI(\'\',\'XDIK4.A\',0,17,0); //10分钟 A10:=STKINDI(\'\',\'XDIK4.A\',0,18,0);; //30分钟 A30:=STKINDI(\'\',\'XDIK4.A\',0,4,0);; //1小时 AHOUR:=STKINDI(\'\',\'XDIK4.A\',0,5,0);; //2小时 A240:=STKINDI(\'\',\'XDIK4.A\',0,24,2);; //日 ADAY:=STKINDI(\'\',\'XDIK4.A\',0,6,0); //日线颜色 D5:=IFELSE(ADAY>=0 , 1,0); //2小时颜色 D6:=IFELSE(A240>=0 , 1,0); //1小时 D7:=IFELSE(AHOUR>=0 , 1,0); //30分钟 D8:=IFELSE(A30>=0 , 1,0); //10分钟 D9:=IFELSE(A10>=0 , 1,0); //3分钟 D10:=IFELSE(A3>=0 , 1,0); //CCD短周期CC交叉 //3分钟 B3:=STKINDI(\'\',\'CCD1.B\',0,17,0); //10分钟 B10:=STKINDI(\'\',\'CCD1.B\',0,18,0);; //30分钟 B30:=STKINDI(\'\',\'CCD1.B\',0,4,0);; //1小时 BHOUR:=STKINDI(\'\',\'CCD1.B\',0,5,0);; //2小时 B240:=STKINDI(\'\',\'CCD1.B\',0,24,2);; //日 BDAY:=STKINDI(\'\',\'CCD1.B\',0,6,0);; //日线颜色 D11:=IFELSE(BDAY>=0 , 1,0); //2小时颜色 D12:=IFELSE(B240>=0 , 1,0); //1小时 D13:=IFELSE(BHOUR>=0 , 1,0); //30分钟 D14:=IFELSE(B30>=0 , 1,0); //10分钟 D15:=IFELSE(B10>=0 , 1,0); //3分钟 D16:=IFELSE(B3>=0 , 1,0); //XRVKK //3分钟 E3:=STKINDI(\'\',\'XRVK1.E\',0,17,0); //10分钟 E10:=STKINDI(\'\',\'XRVK1.E\',0,18,0);; //30分钟 E30:=STKINDI(\'\',\'XRVK1.E\',0,4,0);; //1小时 EHOUR:=STKINDI(\'\',\'XRVK1.E\',0,5,0);; //2小时 E240:=STKINDI(\'\',\'XRVK1.E\',0,24,2);; //日 EDAY:=STKINDI(\'\',\'XRVK1.E\',0,6,0);; //日线颜色 D17:=IFELSE(EDAY>=0 , 1,0); //2小时颜色 D18:=IFELSE(E240>=0 , 1,0); //1小时 D19:=IFELSE(EHOUR>=0 , 1,0); //30分钟 D20:=IFELSE(E30>=0 , 1,0); //10分钟 D21:=IFELSE(E10>=0 , 1,0); //3分钟 D22:=IFELSE(E3>=0 , 1,0); //3分钟中期方向线变色 F3:=STKINDI(\'\',\'XDIK5.F\',0,17,0); //10分钟 F10:=STKINDI(\'\',\'XDIK5.F\',0,18,0);; //30分钟 F30:=STKINDI(\'\',\'XDIK5.F\',0,4,0);; //1小时 FHOUR:=STKINDI(\'\',\'XDIK5.F\',0,5,0);; //2小时 F240:=STKINDI(\'\',\'XDIK5.F\',0,24,2);; FDAY:=STKINDI(\'\',\'XDIK5.F\',0,6,0);; //日线颜色 D23:=IFELSE(FDAY>=0 , 1,0); //2小时颜色 D24:=IFELSE(F240>=0 , 1,0); //1小时 D25:=IFELSE(FHOUR>=0 , 1,0); //30分钟 D26:=IFELSE(F30>=0 , 1,0); //10分钟 D27:=IFELSE(F10>=0 , 1,0); //3分钟 D28:=IFELSE(F3>=0 , 1,0); D1:=IFELSE(R>REF(R,1), 1,0); D2:=IFELSE(B11>REF(B11,1), 1,0); D3:=IFELSE(FS>REF(FS,1), 1,0); D4:=IFELSE(BC>REF(BC,1), 1,0); DK:=D1+D2+D3+D4+D5+D6+D7+D8+D9+D10+D11+D12+D13+D14+D15+D16+D17+D18+D19+D20+D21+D22+D23+D24+D25+D26+D27+D28; DK1:=D11+D12+D13+D17+D18+D19+D23+D24+D25; TOP: 90,COLORGREEN,LINETHICK1; BOT2:12,COLORRED,LINETHICK1; LIU2:80,COLORGREEN,LINETHICK2; SI:20,COLORRED,LINETHICK2; SI2:50,COLOryellow,LINETHICK3; STICKLINE(FJ>0,VARB,VARC,8,0,colorred); STICKLINE(FJ<0,VARB,VARC,8,0,colorgreen); DRAWICON(DK1>8&&CROSS(F,S)&&F<50&&S<50&&BC<50 ,50 ,1 );
|
-- 作者:FireScript -- 发布时间:2021/4/25 11:17:32 -- 被调用的指标也提供下。否则加载不出效果的。 |
-- 作者:tonyzhu -- 发布时间:2021/4/25 12:06:27 -- 上面那个引用的太多了,我简化一下如下: //穿叉短周期 N:=34; VAR1:=LLV(CLOSE,10);//10日最低 VAR2:=HHV(CLOSE,10);//10日最大 F: EMA((CLOSE-VAR1)/(VAR2-VAR1)*100,10), COLORGREEN;//价差 S: EMA(0.667*REF(F,1)+0.333*F,2) , COLORYELLOW; FS:=(F+S)/2; //穿叉长周期 VAR3:=(2*CLOSE+HHV(CLOSE,2)+LLV(CLOSE,2))/4;//化解 VAR4:=LLV(CLOSE,N);//34日最低 VARA:=HHV(CLOSE,N); VARB:=EMA((VAR3-VAR4)/(VARA-VAR4)*100,13);//价差 VARC:=EMA(0.667*REF(VARB,1)+0.333*VARB,2); FJ:=VARB-VARC; BC:(VARB+VARC)/2; //CCC短周期交叉 //1小时 BHOUR:=STKINDI(\'\',\'CCD1.B\',0,5,0); //2小时 B240:=STKINDI(\'\',\'CCD1.B\',0,24,2); //日 BDAY:=STKINDI(\'\',\'CCD1.B\',0,6,0); //日线颜色 D11:=IFELSE(BDAY>=0 , 1,0); //2小时颜色 D12:=IFELSE(B240>=0 , 1,0); //1小时 D13:=IFELSE(BHOUR>=0 , 1,0); DK1:=D11+D12+D13; STICKLINE(FJ>0,VARB,VARC,8,0,colorred); STICKLINE(FJ<0,VARB,VARC,8,0,colorgreen); TOP: 90,COLORGREEN,LINETHICK1; BOT2:12,COLORRED,LINETHICK1; LIU2:80,COLORGREEN,LINETHICK2; SI:20,COLORRED,LINETHICK2; SI2:50,COLOryellow,LINETHICK3; STICKLINE(FJ>0,VARB,VARC,8,0,colorred); STICKLINE(FJ<0,VARB,VARC,8,0,colorgreen); DRAWICON(DK1=3&&CROSS(F,S)&&F<50&&S<50&&BC<50 ,50 ,1 ); KD:=DK1=3&&CROSS(F,S)&&F<50&&S<50&&BC<50 AND HOLDING=0 ; //开多条件 PD:=(C-ENTERPRICE)>10*MINDIFF; //平多条件 SELL(PD and HOLDING>0,HOLDING,THISCLOSE); //平多 BUY(KD and HOLDING=0,1,THISCLOSE);//开多1手 引用的CCD1如下: N:=34; VAR1:=LLV(CLOSE,10);//10日最低 VAR2:=HHV(CLOSE,10);//10日最大 F: EMA((CLOSE-VAR1)/(VAR2-VAR1)*100,10), COLORGREEN;//价差 S: EMA(0.667*REF(F,1)+0.333*F,2) , COLORYELLOW; B:REF(F,1)-REF(S,1); |
-- 作者:tonyzhu -- 发布时间:2021/4/25 12:07:50 -- 带信号图标的公式如下: //穿叉短周期 N:=34; VAR1:=LLV(CLOSE,10);//10日最低 VAR2:=HHV(CLOSE,10);//10日最大 F: EMA((CLOSE-VAR1)/(VAR2-VAR1)*100,10), COLORGREEN;//价差 S: EMA(0.667*REF(F,1)+0.333*F,2) , COLORYELLOW; FS:=(F+S)/2; //穿叉长周期 VAR3:=(2*CLOSE+HHV(CLOSE,2)+LLV(CLOSE,2))/4;//化解 VAR4:=LLV(CLOSE,N);//34日最低 VARA:=HHV(CLOSE,N); VARB:=EMA((VAR3-VAR4)/(VARA-VAR4)*100,13);//价差 VARC:=EMA(0.667*REF(VARB,1)+0.333*VARB,2); FJ:=VARB-VARC; BC:(VARB+VARC)/2; //CCC短周期交叉 //1小时 BHOUR:=STKINDI(\'\',\'CCD1.B\',0,5,0); //2小时 B240:=STKINDI(\'\',\'CCD1.B\',0,24,2); //日 BDAY:=STKINDI(\'\',\'CCD1.B\',0,6,0); //日线颜色 D11:=IFELSE(BDAY>=0 , 1,0); //2小时颜色 D12:=IFELSE(B240>=0 , 1,0); //1小时 D13:=IFELSE(BHOUR>=0 , 1,0); DK1:=D11+D12+D13; STICKLINE(FJ>0,VARB,VARC,8,0,colorred); STICKLINE(FJ<0,VARB,VARC,8,0,colorgreen); TOP: 90,COLORGREEN,LINETHICK1; BOT2:12,COLORRED,LINETHICK1; LIU2:80,COLORGREEN,LINETHICK2; SI:20,COLORRED,LINETHICK2; SI2:50,COLOryellow,LINETHICK3; STICKLINE(FJ>0,VARB,VARC,8,0,colorred); STICKLINE(FJ<0,VARB,VARC,8,0,colorgreen); DRAWICON(DK1=3&&CROSS(F,S)&&F<50&&S<50&&BC<50 ,50 ,1 ); |
-- 作者:tonyzhu -- 发布时间:2021/4/25 12:14:33 -- 测试成交明细与信号不一致。 |
-- 作者:FireScript -- 发布时间:2021/4/25 13:30:58 -- 你这个估计是数据不一致导致的计算会有差异。 如果计算的起点不一样,那么它产生的影响是会迭代下去的。 你可以先将指标加载到图表上,然后直接右键-回测: 调整下周期 然后这样回测采用的数据就是一样的了。我本地这样做回测明细和图表信号就是一致的了。 另外 DRAWICON(DK1=3&&CROSS(F,S)&&F<50&&S<50&&BC<50,50 ,1); 你这里输出位置是在价格50 的地方。如果于正常价格偏离太大是看不到输出的图标的。
[此贴子已经被作者于2021/4/25 13:31:13编辑过]
|