看了论坛中的移动止盈范例,添加进我的策略中,怎么maxprofit与win总是一直一致的,在行情转向过后,两个的数据还是一致,导致win2一直是0,这是什么原因
VARIABLE: maxprofit=0;
win:=0;
win2:=0;
if holding > 0 and enterbars > 0 then
begin
win:=(c-enterprice)/enterprice*100; //记录最大盈利
if win>maxprofit then begin
maxprofit:=win;
u:maxprofit;
end
win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
p:win2;
end
if holding < 0 and enterbars > 0 then
begin
win:=(enterprice-c)/enterprice*100; //记录最大盈利
if win> maxprofit then begin
maxprofit:=win;
i:maxprofit;
end
win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
d:win2;
end
//出现最高盈利后,回落到盈利的60%平仓出场
止赢多:SELL(win2>=60 and openprofit > 0, 0);// and openprofit > 0
止盈空:sellshort(win2>60 and openprofit > 0,0);
[此贴子已经被作者于2014/4/17 8:31:48编辑过]
整个程序总体是这样的顺序
VARIABLE: maxprofit=0;
{这部分是引用昨日数据}
HH:=hhv(昨高,n);
HC:=hhv(昨收,n);
LC:=LLV(昨收,n);
LL:=LLV(昨低,n);
we:=max(HH-LL,HC-LL)
s:开盘价+k1*we;
x:开盘价-k2*we
z:(s+x)/2;
//交易条件
a1:=c>上轨 and holding=0;
a2:=c<下轨 and holding=0;
//交易系统
开多:buy(a1=1 and (t1 or t2) and cyc>1,1,market);
开空:buyshort(a2=1 and (t1 or t2) and cyc>1,1,market);
win:=0;
win2:=0;
if holding > 0 and enterbars > 0 then
begin
win:=(c-enterprice)/enterprice*100; //记录最大盈利
if win>maxprofit then begin
maxprofit:=win;
u:maxprofit;
end
win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
p:win2;
end
if holding < 0 and enterbars > 0 then
begin
win:=(enterprice-c)/enterprice*100; //记录最大盈利
if win> maxprofit then begin
maxprofit:=win;
i:maxprofit;
end
win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
d:win2;
end
//出现最高盈利后,回落到盈利的60%平仓出场
止赢多:SELL(win2>=60 and openprofit > 0, 0);// and openprofit > 0
止盈空:sellshort(win2>60 and openprofit > 0,0);
把你引用昨日的数据贴一下
HH:=hhv(昨高,n);这个是什么意思,N周期前的昨高?
n的值是多少?
这个是用来求的15日内最高价和最低价,还有收盘价的最高最低价。
[此贴子已经被作者于2014/4/17 10:24:24编辑过]
算了,不指望你给我全部代码了,怎么改也编译不过
你不能理解范例中最大获利,那么给你一个简单的例子:
maxprofit:=hhv(h,enterbars+1)-enteprice;多头
maxprofit:=enterprice-llv(l,enterbars+1);空头