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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 代码求助

   

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


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

主题:代码求助

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


加好友 发短信
等级:论坛游侠 帖子:223 积分:0 威望:0 精华:0 注册:2017/3/1 16:31:23
代码求助  发帖心情 Post By:2018/2/28 10:15:12    Post IP:180.169.30.6[只看该作者]

//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//变量申明
VARIABLE:DAYCOUNT=1,POSITIONCOUNT=1,SELLSIGN=0;//定义常数变量DAYCOUNT并初始化为1,定义常数变量POSITIONCOUNT并初始化为1,定义常数变量SELLSIGN并初始化为0
VARIABLE:ENTANDEXITSIGN=1,ENTPOINT=0,EXITPOINT=0;//定义常数变量ENTANDEXITSIGN并初始化为1,定义常数变量ENTPOINT并初始化为0,定义常数变量EXITPOINT并初始化为0
VARIABLE:N=0;//定义常数变量N并初始化为0

MA1:MA(C,5);//输出5日均价
MA3:MA(C,10);//输出10日均价
M:=MA(TR,20); //真实波幅的20周期均值
BUYHHV:=HHV(H,20);//20日最高价
SELLLLV:=LLV(L,10);//10日最低价

SS:N,LINETHICK0;
//交易系统
IF BARPOS>=21 THEN BEGIN //如果从上市到现在的交易日天数大于等于21天,那么
IF BARPOS=21 THEN        //如果从上市到现在的交易日天数等于21,那么   
N:=M;                    //N=M 
IF DAYCOUNT=6 OR BARPOS=21 THEN BEGIN{5天调整N值} 
N:=(19*N+TR)/20;{计算N值} 
DAYCOUNT:=2;
END 
DAYCOUNT:=DAYCOUNT+1; 
ENTPOINT:=ENTERBARS+1; 
IF ENTPOINT=ENTANDEXITSIGN THEN BEGIN{说明STOP指令买进头寸成功} 
POSITIONCOUNT:=POSITIONCOUNT+1;{头寸计数} 
SELLSIGN:=TRUE;{开始以STOP卖出,如果达到指定的价格} 
END 
IF POSITIONCOUNT=1 THEN BEGIN{第一头寸} 
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模} 
开1:BUY(H>=BUYHHV,HOW,MARKET);{在20日新高STOP指令买进} 
END 
IF POSITIONCOUNT=2 THEN BEGIN{如到第二头寸} 
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模} 
开2:BUY(H>=ENTERPRICE+0.5*N,HOW,MARKET);{在上头寸(即第一头寸)+0.5个N以STOP指令买进} 
END 
IF POSITIONCOUNT=3 THEN BEGIN{如到第三头寸} 
HOW:=CASH(0)*0.01/N; 
开3:BUY(H>=ENTERPRICE+0.5*N,HOW,MARKET);{在上头寸(即第二头寸)+0.5个N以STOP指令买进} 
END 
IF POSITIONCOUNT=4 THEN BEGIN 
HOW:=CASH(0)*0.01/N; 
开4:BUY(H>=ENTERPRICE+0.5*N,HOW,MARKET); 
END 
IF SELLSIGN=TRUE THEN BEGIN 
    EXITPOINT:=EXITBARS+1; 
    IF EXITPOINT=ENTANDEXITSIGN THEN BEGIN {说明卖出成功} 
       POSITIONCOUNT:=1;{头寸计算复原} 
       SELLSIGN:=FALSE; 
    END
    IF ENTERPRICE-2*N THEN SELL(L<=SELLLLV,100%,MARKET);{退出离盈利头寸} 
    ELSE 
    SELL(L<=ENTERPRICE-2*N,100%,MARKET);{退出亏损头寸} 
    END 
END;

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
/////////////////////////

IF POSITIONCOUNT=1 THEN BEGIN{第一头寸} 
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模} 
开1:BUY(H>=BUYHHV,HOW,MARKET);{在20日新高STOP指令买进} 
END 

1. 我想在IF  这里加上两个个条件  MA10>REF(MA,10)  和 cross(ma5,ma10),但是REF  和 cross 在这里加不进去 怎么改呢?

2.  IF ENTERPRICE-2*N THEN SELL(L<=SELLLLV,100%,MARKET);{退出离盈利头寸}   这里的MARKET  我想改成收盘价就平仓 ,如何实现?


辛苦您 谢谢老师!



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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/2/28 11:01:40    Post IP:180.169.30.6[只看该作者]

1.你是说ref和cross不能放在if里面是吧。 可以这样 把那2个条件单独计算出来。

比如这样

cd:ma10>ref(ma,10);

if  cd then begin end

 

 

2.收盘价就平仓什么意思?限价平仓吗? sell(l<=sellllv,100%,limit,c);



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
NH
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:223 积分:0 威望:0 精华:0 注册:2017/3/1 16:31:23
  发帖心情 Post By:2018/2/28 11:03:28    Post IP:110.87.0.235[只看该作者]

好的!!

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


加好友 发短信
等级:论坛游侠 帖子:223 积分:0 威望:0 精华:0 注册:2017/3/1 16:31:23
  发帖心情 Post By:2018/2/28 12:43:12    Post IP:110.87.0.235[只看该作者]

老师 那我如果要在开完仓后 ,加入开仓K过后经历多久时间(例如5分钟) 或多少根K(例如30根K)后才触发平仓条件 怎么写呢?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/2/28 13:11:42    Post IP:180.169.30.6[只看该作者]

if  ENTERBARS>10 then sell(holding>0,holding,market); //开仓历史超过10个K的时候平仓


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
NH
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:223 积分:0 威望:0 精华:0 注册:2017/3/1 16:31:23
  发帖心情 Post By:2018/2/28 13:59:35    Post IP:110.87.0.235[只看该作者]

谢谢 老师

 回到顶部