以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  不应该用ref(h,1)来作为开仓价?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=167916)

--  作者:m1978xz
--  发布时间:2019/1/24 9:31:11
--  不应该用ref(h,1)来作为开仓价?
我之前看论坛里阿火版主讲,如果想让回测效果更接近实盘,应该尽量让一些价格过去化。
我就尝试以前一K线的突破为核心来写策略 ,就是说前一K线突破了之后,用前K线的高或者前K线的低,在本K线开仓或者平仓买卖。
但是这么写完之后发现回测时只有1到2笔交易。不知道问题出在哪里,还请版主指点一下。
----代码如下

MA1:=MA((HIGH+LOW)/2,5);//ma1赋值为(最高价+最低价)/2的5日简单移动平均
MA2:=MA((HIGH+LOW)/2,34);//MA2赋值:(最高价+最低价)/2的34日简单移动平均
OO:=0.00;//输出
AO:=MA1-MA2;//输出AO:MA1-MA2,线宽为0
mr:=AO>REF(AO,1);//AO柱高于前一天的柱
mrr:=AO<REF(AO,1);//AO柱小于前一天的柱
mr1:=REF(AO,1)>REF(AO,2);//前一AO柱高于前二AO的柱
mrr1:=REF(AO,1)<REF(AO,2);//前一AO柱低于前二AO的柱
Q1AO:=REF(AO,1);
Q2AO:=REF(AO,2);

Q1KG:=ref(h,1);//前1K线高
Q1KD:=ref(L,1);//前1K线高

//多开语句

if holding=0 and Q1AO>OO then begin//如果持仓为零,且前一根AO柱高于零轴
buy(1,1,limitr,Q1KG);
END

//平多语句

if holding>0 and Q1AO<OO then begin
//如果持有多仓,且前1AO<00,
  sell(1,1,limitr,Q1KG);

  end

//空开语句
if holding=0 and Q1AO<OO  then begin
  buyshort(1,1,limitr,Q1KG);
 qpp:=h;
 mjj:=h;
end






 


--  作者:FireScript
--  发布时间:2019/1/24 9:38:23
--  
1.你光有开空没有平空语句是不行的,这样会导致一旦开了空单,后面就没有其他信号了。
2.Q1AO<00 这个条件是绝对不成立的。价格不可能小于0 . 你变量00的值定义的就是0

--  作者:m1978xz
--  发布时间:2019/1/24 9:43:47
--  
这。原来如此,感谢版主指点。我去改。