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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件策略编写求助区 → 求助begin前少END麻烦老师写一写

   

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


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

主题:求助begin前少END麻烦老师写一写

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


加好友 发短信
等级:论坛游侠 帖子:332 积分:1295 威望:0 精华:0 注册:2011/4/19 2:02:59
求助begin前少END麻烦老师写一写  发帖心情 Post By:2012/10/12 3:35:38 [只看该作者]

 求助:

我只是想在原来的基础上在用几次While循环加仓和减仓

加入红色的关键代码后加载  提示 少了 END 

{要求是用用While ~~~~~~~~~~~~ Do   }

 

多头加仓条件:{二次加仓条件是最高价大于30天最高价}}{三次加仓条件是最高价大于40天最高价}}{四加仓条件是最高价大于50天最高价}这一种加仓方式,每满足设定的条件就加一次仓

空头加仓条件:While循环加仓,二次加仓条件是最低价小于12天最低价}}{三次减仓条件是最低价小于15天最低价}}{四次加仓条件是最低价小于18天最高价}这一种加仓方式。每满足设定的条件就加一次仓

用While ~~~~~~~~~~~~ Do 减仓  减仓:条件:资产每上涨5%,就减一手

 

 

多加两个下面的红色代码,能让程序运行就行了,谢谢

 

 

//《定制的海龟交易系统V1.0前台显示版本》
// 适用于多时间框架图表
// 这个版本可以用于在图表上显示信号,也可以做自动交易
// 同一根K线多次发出指令。
// Designed By Likai
// 2010.07.16

//声明参数
Input : T20(20,15,60,1) ;
Input : T10(10,10,30,1);
Input : ATRLen(20,15,30,1) ;
Input : PosNum(1,1,20,1) ;

//声明变量
nt := 1 ;     //调试信息带时间戳
BuyOrderThisBar := 0 ;  //当前Bar有过交易

VARIABLE : _DEBUG = 1 ;     //是否输出前台交易指令
VARIABLE : _TDEBUG = 1 ;    //是否输出后台交易指令
VARIABLE : _DEBUGOUT = 0 ;    //是否输出后台交易的调试信息

VARIABLE : myEntryPrice =0 ;   //开仓价格
VARIABLE : myExitPrice =0 ;   //平仓价格

VARIABLE : TurtleUnits=0 ;   //交易单位
VARIABLE : Position=0 ;   //仓位状态
//0表示没有仓位,1表示持有多头, -1表示持有空头

VARIABLE : T20Hi=Close ;   //20周期的高点
VARIABLE : T20Lo=Close ;   //20周期的低点

VARIABLE : T10Hi=Close ;   //10周期的高点
VARIABLE : T10Lo=Close ;   //10周期的低点

//准备需要计算的变量

 

t30hi:=ref(hhv(h,30),1);

t30li:=ref(llv(l,30),1);
T20Hi := ref(hhv(h,T20),1) ;
T20Lo := ref(llv(l,T20),1) ;

T10Hi := ref(hhv(h,T10),1) ;
T10Lo := ref(llv(l,T10),1) ;

AvgTR :=  ref(MA(TR,ATRLen),1) ;

//开始执行时 初始化数据
If BARPOS=1 Then Begin
 //Position := 0 ;

End //If

//如果当前是没有持仓的状态
If Position=0 and BARPOS>T20 and h>l Then Begin

 //建立多头进场条件
 Long := h > T20Hi ;
 
 //多头进场
 if Long then begin
  myEntryPrice := IF(Open>T20Hi+MINDIFF ,Open ,T20Hi+MINDIFF ) ;  
  buy( _DEBUG,PosNum,limitr,myEntryPrice);
  Position := 1 ;
  TurtleUnits := 1 ;
  N := AvgTR ;
  BuyOrderThisBar := 1;

 end //if


 //建立空头进场条件
 Short := l < T20Lo ;
 
 //空头进场
 if Short and Position=0 then begin  
  myEntryPrice := IF(Open<T20Lo-MINDIFF ,Open ,T20Lo-MINDIFF ) ;  
  buyshort( _DEBUG,PosNum,limitr,myEntryPrice);
  Position := -1 ;
  TurtleUnits := 1 ;
  N := AvgTR ;
  BuyOrderThisBar := 1;

 end
 
 //不要跳转,让程序检查同一根K线是否可以加仓
 //Goto ContinueLine ;
 
End  //If


//如果当前持有多头仓位的状态、、、、、、、、、、、、、第一次加仓


////多头加仓条件

 While (High>myEntryPrice+0.5*N) and TurtleUnits<4 Do   Begin
  myEntryPrice := IF(Open>myEntryPrice+0.5*N ,Open ,myEntryPrice+0.5*N ) ;
  myEntryPrice := Ceiling(myEntryPrice/MINDIFF)*MINDIFF ;
  buy( _DEBUG, PosNum, limitr, myEntryPrice);
  TurtleUnits := TurtleUnits+1 ;
  BuyOrderThisBar := 1;

 End //While


 

 

 

//如果当前持有多头仓位的状态、、、、、、、、、、、、、第二次加仓   

If Position=1 and BARPOS>T20 and h>l Then Begin

 //多头加仓条件
 
While (High>t30hi) and TurtleUnits<4 Do Begin
  myEntryPrice := IF(High>t30hi ,Open ,myEntryPrice+0.5*N ) ;
  myEntryPrice := Ceiling(myEntryPrice/MINDIFF)*MINDIFF ;
  buy( _DEBUG, PosNum, limitr, myEntryPrice);
  TurtleUnits := TurtleUnits+1 ;
  BuyOrderThisBar := 1;

 End //While

 

 

{

请在这里写第二次多头加仓.............


 

 

 

{

请在这里写第三次多头加仓.............



 

 

 

{

请在这里写第四次多头加仓.............



 

 

 

 

 


 //建立多头离场条件
 LongX1 := (low < T10Lo)  ;
 
 if LongX1 and BuyOrderThisBar=0 then begin
  myExitPrice := IF(Open<T10Lo-MINDIFF ,Open ,T10Lo-MINDIFF ) ;  
  sell( _DEBUG ,0,limitr,myExitPrice);
  Position := 0 ;
  TurtleUnits := 0 ;
 end

 //建立多头止损条件
 LongX2 := (Low<myEntryPrice-2*N)  ;

 if LongX2 and Position=1 and BuyOrderThisBar=0 then begin
  myExitPrice := IF(Open<myEntryPrice-2*N ,Open ,myEntryPrice-2*N ) ; 
  myExitPrice := Floor(myExitPrice/MINDIFF)*MINDIFF ;
  sell( _DEBUG ,0,limitr,myExitPrice);
  Position := 0 ;
  TurtleUnits := 0 ;
 end

 Goto ContinueLine ;

End  //If


//如果当前持有空头仓位的状态//////////////////////////第一次加仓

If Position = -1 and BARPOS>T20 and h>l Then Begin

 //空头加仓条件
 
 While (Low<myEntryPrice-0.5*N) and TurtleUnits<4 Do Begin
  myEntryPrice := IF(Open<myEntryPrice-0.5*N ,Open ,myEntryPrice-0.5*N ) ;  
  myEntryPrice := Floor(myEntryPrice/MINDIFF)*MINDIFF ;
  buyshort( _DEBUG,PosNum, limitr, myEntryPrice);
  TurtleUnits := TurtleUnits+1 ;
  BuyOrderThisBar := 1;
 End //If

 

 

 

//如果当前持有空头仓位的状态 /////////////////////第二次加仓

If Position = -1 and BARPOS>T20 and h>l Then Begin

 //空头加仓条件
 
 While (Low<t30li) and TurtleUnits<4 Do Begin
  myEntryPrice := IF(l<t30li ,Open ,myEntryPrice-0.5*N ) ;  
  myEntryPrice := Floor(myEntryPrice/MINDIFF)*MINDIFF ;
  buyshort( _DEBUG,PosNum, limitr, myEntryPrice);
  TurtleUnits := TurtleUnits+1 ;
  BuyOrderThisBar := 1;
 End //If

 

 

 

 

{

请在这里写第二次空头加仓.............


 

 

 

{

请在这里写第三次空头加仓.............



 

 

 

{

请在这里写第四次空头加仓.............



 

 


 //建立空头离场条件
 ShortX1 := h > T10Hi  ;

 if ShortX1 and BuyOrderThisBar=0 then begin
  myExitPrice := IF(Open>T10Hi+MINDIFF ,Open ,T10Hi+MINDIFF ) ;  
  sellshort( _DEBUG,0,limitr,myExitPrice);
  Position := 0 ;
  TurtleUnits := 0 ;
 end

 //建立空头止损条件
 ShortX2 := High > myEntryPrice + 2*N  ;

 if ShortX2 and Position = -1 and BuyOrderThisBar=0  then begin
  myExitPrice := IF(Open>myEntryPrice+2*N ,Open ,myEntryPrice+2*N ) ;  
  myExitPrice := Ceiling(myExitPrice/MINDIFF)*MINDIFF ;
  sellshort( _DEBUG,0,limitr,myExitPrice);
  Position := 0 ;
  TurtleUnits := 0 ;
 end

End  //If


//显示账户状态
ContinueLine@ 资产:ASSET,LINETHICK0;
可用现金:CASH(0),LINETHICK0;
Pos:HOLDING,LINETHICK0;
交易次数:TOTALDAYTRADE, LINETHICK0 ;

If _DEBUGOUT>0 Then Begin

 DEBUGFILE2('c:\debugfile.txt','BarPos=%.0f' ,BARPOS,nt ) ;
 DEBUGFILE2('c:\debugfile.txt','T20Hi=%.2f' ,T20Hi ,nt) ;
 DEBUGFILE2('c:\debugfile.txt','N=%.2f' ,N ,nt) ;
 DEBUGFILE2('c:\debugfile.txt','Close=%.2f' ,C ,nt) ;
 DEBUGFILE2('c:\debugfile.txt','Position=%.0f' ,Position,nt ) ;
 DEBUGFILE2('c:\debugfile.txt','TurtleUnits=%.0f' ,TurtleUnits,nt ) ;
 DEBUGFILE2('c:\debugfile.txt','myEntryPrice=%.0f' ,myEntryPrice ,nt) ;
 DEBUGFILE2('c:\debugfile.txt','myExitPrice=%.0f' ,myExitPrice ,nt) ;
 
End //If



查看使用道具详细信息
悬赏金币帖,要悬赏 2 个金币
 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2012/10/12 7:53:42 [只看该作者]

在图表程序化交易里面,用while反复加仓只能是起到测试效果的,没有实盘效果的,因为实际交易的时候,金字塔只能在同根K线上执行一次交易的


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
获得0个金币
 回到顶部
帅哥哟,离线,有人找我吗?
lufuding
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:332 积分:1295 威望:0 精华:0 注册:2011/4/19 2:02:59
  发帖心情 Post By:2012/10/12 15:45:31 [只看该作者]

以下是引用王锋在2012-10-12 7:53:42的发言:
在图表程序化交易里面,用while反复加仓只能是起到测试效果的,没有实盘效果的,因为实际交易的时候,金字塔只能在同根K线上执行一次交易的

 

 

不影响使用效果,这只是一个思路,并不是要用这个策略实盘,

 

我的策略用while的目的是满足不同周期不同条件加仓的

 

请老师帮忙写一下, 谢谢

 


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


加好友 发短信
等级:论坛游侠 帖子:332 积分:1295 威望:0 精华:0 注册:2011/4/19 2:02:59
  发帖心情 Post By:2012/10/15 20:52:33 [只看该作者]

跪求金字塔客服把上面的策略写一下,谢谢


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


加好友 发短信
等级:论坛游民 帖子:211 积分:703 威望:0 精华:0 注册:2012/10/9 9:06:01
  发帖心情 Post By:2012/10/16 14:00:07 [只看该作者]

楼上大哥,你的问题有难度,可能需要的时间会长点

我研究研究,尝试着改改试试,请您等待的时候多多谅解

 


获得0个金币
 回到顶部
帅哥哟,离线,有人找我吗?
lufuding
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:332 积分:1295 威望:0 精华:0 注册:2011/4/19 2:02:59
  发帖心情 Post By:2012/10/16 17:56:52 [只看该作者]

以下是引用every在2012-10-16 14:00:07的发言:

楼上大哥,你的问题有难度,可能需要的时间会长点

我研究研究,尝试着改改试试,请您等待的时候多多谅解

 

 

问题已解决,不过还是十分感谢你


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


加好友 发短信 机器猫
等级:论坛游侠 帖子:243 积分:557 威望:0 精华:0 注册:2011/9/23 21:49:31
  发帖心情 Post By:2013/7/5 7:41:45 [只看该作者]

怎么解决的叫。


获得0个金币
 回到顶部