老师帮我看下这个 我编写出来之后 后台程序 回撤 没有数据 是不是那边错了
TR=Max(H-L,H-PDC,PDC-L)
其中:
TR=真实波幅
H=当日最高价
L=当日最低价
PDC=前一日收盘价
N(即ATR)的计算公式如下(其实就):
前面20天的TR值平均
绝对波动幅度=N*合约每一点所代表的价值
头寸规模单位n=账户的1%/绝对波动幅度
开仓时机:当价格突破20天新高的时候开n手做多,当价格回调3ATR平仓。
当价格突破20日新低的时候做空,当价格回调3ATR平仓
止损为1N
VARIABLE:cc=0;
PDC:=REF(C,1);
TR1:=MAX(H-L,MAX(H-PDC,PDC-L));
ATR:=MA(TR1,20);
绝对波幅:=ATR*DYNAINFO(209);
N:=TASSET*0.01/绝对波幅;
h20:=ref(hhv(h,20),1);
l20:=ref(llv(l,20),1);
l10:=ref(llv(l,10),1);
kd:=c>h20;
pd:=c<(tENTERPRICE-3*绝对波幅);
kk:=c<l20;
pk:=c>(tENTERPRICE+3*绝对波幅);
if cc>0 and pd then cc:=0;
if cc<0 and pk then cc:=0;
if cc=0 and kd then cc:=1;
if cc=0 and kk then cc:=-1;
if holding>0 and cc<=0 then begin
sell(pd,n,MARKETR);
end
if holding<0 and cc>=0 then begin
sellshort(pk,n,MARKETR);
end
if holding=0 and cc>0 then begin
buy(kd,n,MARKETR);
end
if holding=0 and cc<0 then begin
buyshort(kk,n,MARKETR);
end
if tholding>0 and c<DYNAINFO(211)-绝对波幅 then BEGIN
sell(pd,n,MARKETR);
end
if tholding<0 and c>DYNAINFO(211)+绝对波幅 then begin
sellshort(pk,n,MARKETR);
end{止损块在有持仓时运行}
你到底是要后台还是图表程序化呢?之前给你的代码是按照后台改的,但是你现在这个代码后台和图表函数都有,这是不对的。你先说清楚你到底是要图程序化还是后台程序化。
代码里面用了很多仅图表上的函数,sellshort sell buy buyshort holding都是图表程序化的函数的,之前帖子里面给你的代码里面已经处理过这个了,你copy替换下这些图表代码就行了。另外,新手的话,建议从图表程序化起步吧。图表至少比后台简单直观。

此主题相关图片如下:temp.png

你公式写完,点一下编译,一些基本的错误都会提示你的,这样至少避免基础错误的。