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


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

   

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


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

主题:股票编写

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


加好友 发短信
等级:新手上路 帖子:13 积分:0 威望:0 精华:0 注册:2019/9/23 11:09:11
股票编写  发帖心情 Post By:2019/9/23 13:13:24    Post IP:222.88.40.172[只看该作者]

软件自带的多头海龟交易系统在测试股票的时候出现不止盈的情况,请帮忙修改为跌破20日最低价止盈止损平仓,报单价格为20日的最低价。以下是系统自带的平仓源码
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 

 回到顶部
帅哥,在线噢!
wenarm
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2019/9/23 13:21:09    Post IP:180.169.30.6[只看该作者]

ENTERPRICE-2*N改为下面的条件。ref(llv(low,20),1)>low

 

    IF ref(llv(low,20),1)>low THEN SELL(L<=SELLLLV,100%,LIMIT,low);{退出离盈利头寸}
    ELSE
    SELL(ref(llv(low,20),1)>low,100%,,LIMIT,low);{退出亏损头寸}
    END



编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
13676927691
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:13 积分:0 威望:0 精华:0 注册:2019/9/23 11:09:11
  发帖心情 Post By:2019/9/23 13:30:53    Post IP:222.88.40.172[只看该作者]

您好,
语法错误,ref函数在逐k线模式下不能直接在if控制语句之内引用。

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


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


平仓代码: SELL(CROSS(c,ma(c,20)),100%,LIMIT,llv(c,20));//最新价下穿20日均线 平仓。
用这个平仓代码替换吧。
    IF ENTERPRICE-2*N THEN SELL(L<=SELLLLV,100%,MARKET);{退出离盈利头寸} 
    ELSE 
    SELL(L<=ENTERPRICE-2*N,100%,MARKET);{退出亏损头寸}

或者你修改上面代码里面的参数N的大小来调整平仓条件试试。


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


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

 笔误写成均线了,改下。
或者你直接用2楼的方式吧。稍作修改。

lp:ref(llv(low,20),1);//把这个定义放在最外层
  IF lp>low THEN SELL(L<=SELLLLV,100%,LIMIT,low);{退出离盈利头寸}
    ELSE
    SELL(lp>low,100%,,LIMIT,low);{退出亏损头寸}
    END
[此贴子已经被作者于2019/9/23 13:54:55编辑过]


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


加好友 发短信
等级:新手上路 帖子:13 积分:0 威望:0 精华:0 注册:2019/9/23 11:09:11
  发帖心情 Post By:2019/9/23 13:52:19    Post IP:222.88.40.172[只看该作者]

limit,交易系统函数的第三个参数必须为交易控制符。

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


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

 SELL(lp>low,100%,,LIMIT,low);{退出亏损头寸}


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


加好友 发短信
等级:新手上路 帖子:13 积分:0 威望:0 精华:0 注册:2019/9/23 11:09:11
  发帖心情 Post By:2019/9/23 14:00:39    Post IP:222.88.40.172[只看该作者]

和之前一样不平仓,
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//变量申明
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

M:=MA(TR,20); //真实波幅的20周期均值
BUYHHV:=HHV(H,20);//20日最高价
SELLLLV:=LLV(L,10);//10日最低价
 lp:ref(llv(low,20),1);

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,limitr ,BUYHHV),IGNORECHECKPRICE;{在20日新高STOP指令买进} 
END 

IF SELLSIGN=TRUE THEN BEGIN 
    EXITPOINT:=EXITBARS+1; 
    IF EXITPOINT=ENTANDEXITSIGN THEN BEGIN {说明卖出成功} 
       POSITIONCOUNT:=1;{头寸计算复原} 
       SELLSIGN:=FALSE; 
    END
  

  IF lp>low THEN SELL(L<=SELLLLV,100%,LIMIT,low);{退出离盈利头寸} 
    ELSE 
    SELL(lp>low,100%,LIMIT,low);{退出亏损头寸} 
    END
  
END;

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

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


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

 这个条件 满足了吗?
SELLSIGN=TRUE

如果是外部的if语句都没有满足,里面的平仓代码都是无法触发到的。

你可以把平仓语句放在

IF SELLSIGN=TRUE THEN BEGIN

前面。只是这样的话,相当于这个平仓脱离了原先代码的逻辑之外了。但是也没办法。


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


加好友 发短信
等级:新手上路 帖子:13 积分:0 威望:0 精华:0 注册:2019/9/23 11:09:11
  发帖心情 Post By:2019/9/23 14:22:25    Post IP:222.88.40.172[只看该作者]

您能在股票上测试下,帮我修改下吗,

 回到顶部
总数 26 1 2 3 下一页