以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (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
--
290$JEBTEXDO_2M.png) 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就平仓
|