以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  请老师帮忙 关于跨周期引用的问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=173853)

--  作者:凯奇
--  发布时间:2020/1/6 11:04:52
--  请老师帮忙 关于跨周期引用的问题
老师好
        下面的这个公式策略是用在5分钟级别周期进行策略回测的公式。我的要求是  1.....策略是用在五分钟级别的 。五分钟级别上要满足macd 黄白双线在0轴上。收盘价在5分钟的30单位均线上。    2 ,,,上周的周涨幅在百分之10 至百分之 20之间 。。   3....五分钟级别上的价格跌破上周阳线实体的一半 (比如上周开盘价5元 收盘6元,那在五分钟级别上的价格要小于5.5元)。。。。。卖出条件是跌破5分钟级别的30单位线。
         现在的问题是回测结果的明细显示  个股的开仓价位位置并没有达到跌破上周周阳线实体价格的一半的要求。  比如300341 麦克奥迪19年12月2日的开仓价格是16.33. 但是300341 上周周阳线的开盘价是13.95  收盘价格是15.15.  阳线实体的一半应该是14.55.小于这个价格才能满足要求。    请老师帮忙看看是哪里出了问题。。。
         请老师帮忙更改。非常感谢 !!!
        VARIABLE:a:=0;


DIFF :=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA  :=EMA(DIFF,9);
MACD1 :=2*(DIFF-DEA), COLORSTICK;



saa:=valuewhen(WEEKDAY=1,ref(c,1));
sbb:=valuewhen(WEEKDAY=1,ref(c,6));
scc:=valuewhen(WEEKDAY=1,ref(o,5));

aa:=(saa-sbb)/sbb;
bb:=aa*100>=10 and aa*100<=20;
cc:=(scc+saa)/2;
dd:=cross(cc,l);

ee:=dd and bb;
ff:=DIFF>0 and DEA>0;

开多平空条件:= ee  and ff and c>Ema(c,30) ;
开空平多条件:=c<ma(c,30);
SELL(开空平多条件 AND HOLDING>0,HOLDING,MARKET);
if 开多平空条件 AND HOLDING=0 then 
begin
buy(1,1000000000000,MARKET);
n:=close;
end


--  作者:FireScript
--  发布时间:2020/1/6 11:29:28
--  
 1.你这里跌破用的是最低价啊。dd:=cross(cc,l);
也就是最低价是跌破了的。而开仓价用market时候回测上取的是次根K的开盘价。

2.
saa:=valuewhen(WEEKDAY=1,ref(c,1));
sbb:=valuewhen(WEEKDAY=1,ref(c,6));
scc:=valuewhen(WEEKDAY=1,ref(o,5));

这个取值也不应该这样取。一个是因为你是在5分钟上取,ref这么小的跨度肯定是不行的。此外就是还有节假日的问题。我建议直接用callsock取值。

--  作者:凯奇
--  发布时间:2020/1/6 11:34:30
--  请老师帮忙
请老师帮忙  直接帮我改好。。非常感谢!!!
--  作者:凯奇
--  发布时间:2020/1/6 11:55:25
--  请老师帮忙
请老师帮忙直接改好  之前那个公式是别人写的  我本身是不会编码的   没编码技术  谢谢老师
--  作者:FireScript
--  发布时间:2020/1/6 13:31:06
--  
黄色部分替换下:
  VARIABLE:a:=0;


DIFF :=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA  :=EMA(DIFF,9);
MACD1 :=2*(DIFF-DEA), COLORSTICK;



saa:=CALLSTOCK(\'\',vtCLOSE,7,-1);
sbb:=CALLSTOCK(\'\',vtCLOSE,7,-2);
scc:=CALLSTOCK(\'\',vtOPEN,7,-1);


aa:=(saa-sbb)/sbb;
bb:=aa*100>=10 and aa*100<=20;
cc:(scc+saa)/2;
dd:cross(cc,c);

--  作者:凯奇
--  发布时间:2020/1/6 14:01:53
--  谢谢
非常感谢老师的帮忙  非常感谢