欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件策略编写求助区 → 请高手帮忙看看问题出在哪里

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5730人关注过本帖树形打印复制链接

主题:请高手帮忙看看问题出在哪里

帅哥哟,离线,有人找我吗?
阿火
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2012/2/22 23:41:14 [显示全部帖子]

2个错误比较明显:

1,平仓时,要全部平仓的吧 ,不能填,填0,这样写sell(1,0,thisclose);   sellshort(1,0,thisclose)

 

2

//出现浮动亏损比如2%平仓

if holding>0  then begin
if win<-2 and numprofit(1)<0 then begin
  多止损: sell(1,holding,thisclose);
   buynum:=1;      //止损后是要加仓的,怎么会重置为1呢?
   sellnum:=1;

   end
end

 

if holding<0 then begin

if win<-2  and numprofit(1)<0 then
   空止损: sellshort(1,holding,thisclose);
   buynum:=1;
   sellnum:=1;

   end

 

改为

//出现浮动亏损比如2%平仓

if holding>0  then begin
if win<-2 then begin
  多止损: sell(1,holding,thisclose); 
   end
end

 

if holding<0 then begin

if win<-2 then
   空止损: sellshort(1,holding,thisclose);
   end

 

 

 

另外,平仓最好放开仓前面。

[此贴子已经被作者于2012-2-22 23:51:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2012/2/23 8:23:32 [显示全部帖子]

Input:m(5,1,10,1);
Variable: maxprofit=0;
Variable: sellnum=1;
Variable: buynum=1;
ma5:=ma(c,5);
ma10:=ma(c,10);
Longcond: = cross(ma5,ma10);
Shortcond: = cross(ma10,ma5);

if holding>0 then begin
 if Shortcond and c>enterprice then begin
  sell(1,holding,thisclose);
  sellnum:=1;
  buynum:=1;
 end 
 if Shortcond and c<enterprice then begin
  sell(1,holding,thisclose);
  if sellnum<m then sellnum:=sellnum+1;
 end
end

if holding<0 then begin
 if Longcond and c<enterprice then begin
  sellshort(1,holding,thisclose);
  buynum:=1;
  sellnum:=1;
 end
 if Longcond and c>enterprice then begin
  sellshort(1,holding,thisclose);
  if buynum<m then buynum:=buynum+1;
 end
end

if holding=0 then begin
 if Longcond then begin
  buy(1,buynum,thisclose);
  maxprofit:=0;
 end
 if Shortcond then begin
  buyshort(1,sellnum,thisclose);
  maxprofit:=0;
 end
end

win:=0;
win2:=0;

//多头止盈
if holding > 0 and enterbars > 2 then begin
 win:=(c-enterprice)/enterprice*100;
 if win > maxprofit then
 maxprofit:=win;    //记录最大盈利
 win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end

//空头止盈
if holding < 0 and enterbars > 2 then begin
 win:=(enterprice-c)/enterprice*100;
 if win > maxprofit then
 maxprofit:=win; //记录最大盈利
 win2:=(maxprofit-win)/maxprofit*100;//最大盈利后的回调幅度
end

//出现浮动亏损比如2%平仓
if holding>0 and win<-2 then begin // and numprofit(1)<0
 多止损: sell(1,holding,thisclose);
 buynum:=1;
 sellnum:=1;
end

if holding<0 and win<-2 then begin
 空止损: sellshort(1,holding,thisclose);
 buynum:=1;
 sellnum:=1;
end

//出现最高盈利后,回落到盈利的60%平仓出场
if holding>0 and win2>=60 and openprofit>0  then begin
 多止盈: sell(1,holding,thisclose);
 buynum:=1;
 sellnum:=1;
end

if holding<0 and win2>=60 and openprofit>0   then begin
 空止盈: sellshort(1,holding,thisclose);
 buynum:=1;
 sellnum:=1;
end


 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2012/2/23 13:16:26 [显示全部帖子]

以下是引用kingmoonwang在2012-2-23 9:18:02的发言:

多谢火哥。测试结果好像对了。 还请指正一下我错在哪里啊,对了半天也没对出来。

 

另外,目前是只要出现亏损平仓,下一单加仓。如果想变成,连续出现2次亏损时,第三次开仓开始加仓。该怎样写? 多谢。

[此贴子已经被作者于2012-2-23 9:23:18编辑过]

 

自己认真对对呗

 

亏损2次再加仓,搞一个全局变量记录亏损次数,达到2次 buynum sellnum 才累加


 回到顶部