以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  自编公式提示REF出错  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=137579)

--  作者:小甲
--  发布时间:2016/8/5 10:46:19
--  自编公式提示REF出错

a:=2/(N+1);

for N=1 TO N=1 do

begin

llt:=close;

for N=2 to N=2 do

begin

llt:=0.5*a*(close+ref(close,1))+(1-a)*ref(close,1)

for N=3 to datacount do

begin

llt:=(a-a*a/4)*close+(a*a/2)*ref(close,1)-(a-0.75*a*a)*ref(close,2)+2*(1-a)*ref(llt,1)-(1-a)*(1-a)*ref(llt,2);

end

BUY(ref(llt,1)>llt and holding=0,1,market);

SELL(ref(llt,1)<llt and holding>0,1,market);


--  作者:jinzhe
--  发布时间:2016/8/5 10:50:47
--  
系统提示begin后面少end,没有你讲的ref这一方面
[此贴子已经被作者于2016-8-5 10:51:01编辑过]

--  作者:小甲
--  发布时间:2016/8/5 10:53:58
--  
那我再试下
--  作者:小甲
--  发布时间:2016/8/5 11:04:13
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看a:=2/(30+1);

for N=1 TO N=1 do

begin

llt:=close;

for N=2 to N=2 do

begin

llt:=0.5*a*(close+ref(close,1))+(1-a)*ref(close,1)

for N=3 to datacount do

begin

llt:=(a-a*a/4)*close+(a*a/2)*ref(close,1)-(a-0.75*a*a)*ref(close,2)+2*(1-a)*ref(llt,1)-(1-a)*(1-a)*ref(llt,2);

end

BUY(ref(llt,1)>llt and holding=0,1,market);

SELL(ref(llt,1)<llt and holding>0,1,market);
提示变量名N重复



--  作者:jinzhe
--  发布时间:2016/8/5 11:09:33
--  

麻烦用户把代码贴全了


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

--  作者:小甲
--  发布时间:2016/8/5 11:12:42
--  
a:=2/(30+1);
for i=1 to 1 do
begin
llt:=close;
end
for i=2 to 2 do
begin
llt:=0.5*a*(close+ref(close,1))+(1-a)*ref(close,1);
end
for  i=3 to datacount do
begin 
llt:=(a-a*a/4)*close+(a*a/2)*ref(close,1)-(a-0.75*a*a)*ref(close,2)+2*(1-a)*ref(llt,1)-(1-a)*(1-a)*ref(llt,2);
end
BUY(ref(llt,1)>llt and holding=0,1,market);
SELL(ref(llt,1)<llt and holding>0,1,market);
现在语句没问题了,但是回测都是没有收益没有开仓

--  作者:jinzhe
--  发布时间:2016/8/5 11:16:58
--  

for i=1 to 1 do
begin
llt:=close;
end

这样的一段代码,用户要表达出什么意思?


--  作者:小甲
--  发布时间:2016/8/5 11:28:22
--  
其实就想表达测试第一天的时候,Llt=收盘价
--  作者:jinzhe
--  发布时间:2016/8/5 11:30:16
--  
那么三段赋值是不是可以理解为:第一根k线llt赋值,第二根k线llt赋值,第三根到最后一根k线赋值?
--  作者:小甲
--  发布时间:2016/8/5 11:31:10
--  
之前语句按理是正确的,就是分段赋值,第一天llt:=close,第二天llt:=0.5*a*(close+ref(close,1))+(1-a)*ref(close,1),后续的llt:=(a-a*a/4)*close+(a*a/2)*ref(close,1)-(a-0.75*a*a)*ref(close,2)+2*(1-a)*ref(llt,1)-(1-a)*(1-a)*ref(llt,2);,然后当上一日llt大于当日的llt就开仓,当llt小于当日的llt就平仓