以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]移动止盈问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=64033)

--  作者:yiechaochao
--  发布时间:2014/4/17 8:31:05
--  [求助]移动止盈问题
看了论坛中的移动止盈范例,添加进我的策略中,怎么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编辑过]

--  作者:jinzhe
--  发布时间:2014/4/17 9:07:40
--  
你的开仓语句写在哪里?
--  作者:yiechaochao
--  发布时间:2014/4/17 9:40:30
--  
整个程序总体是这样的顺序
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);


--  作者:jinzhe
--  发布时间:2014/4/17 9:52:57
--  

把你引用昨日的数据贴一下

 

HH:=hhv(昨高,n);这个是什么意思,N周期前的昨高?
 
n的值是多少?

--  作者:yiechaochao
--  发布时间:2014/4/17 10:11:41
--  
VARIABLE: maxprofit=0;
昨高:=callstock(stklabel,vthigh,6,-n);
昨低:=callstock(stklabel,vtlow,6,-n);
昨收:=callstock(stklabel,vtclose,6,-n);
\\\\n是15,指引用十五日内的最高最低价
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>s and holding=0;
a2:=c<x 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);

--  作者:jinzhe
--  发布时间:2014/4/17 10:16:01
--  
HH:=hhv(昨高,n);
HC:=hhv(昨收,n);
LC:=LLV(昨收,n);
LL:=LLV(昨低,n);
那这几句是用来干什么的?解释一下

--  作者:yiechaochao
--  发布时间:2014/4/17 10:22:49
--  
这个是用来求的15日内最高价和最低价,还有收盘价的最高最低价。
[此贴子已经被作者于2014/4/17 10:24:24编辑过]

--  作者:jinzhe
--  发布时间:2014/4/17 10:38:47
--  

算了,不指望你给我全部代码了,怎么改也编译不过

你不能理解范例中最大获利,那么给你一个简单的例子:

maxprofit:=hhv(h,enterbars+1)-enteprice;多头

maxprofit:=enterprice-llv(l,enterbars+1);空头