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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 开平仓语句顺序问题

   

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


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

主题:开平仓语句顺序问题

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


加好友 发短信
等级:论坛游侠 帖子:293 积分:0 威望:0 精华:0 注册:2015/8/12 16:11:54
开平仓语句顺序问题  发帖心情 Post By:2016/12/29 13:18:52    Post IP:111.203.152.106[显示全部帖子]



我按照初级教程给的开平仓顺序——

1,平空

2,开多

3,平多

4,开空


这样来写的,是逐K线计算

但是今天实盘图表交易的时候,某根K线开盘时用OPEN开了空(代码在位置4),开空就设定开盘价之上20点止损线,在位置1执行CROSS(HIGH,OPEN+20点止损)平空止损,但是本根打了止损没执行,下一根才性质,导致亏损很多


位置1的平空语句中,有条件要求必须位置4开空后才能执行平空,我想就是这个原因导致本根止损没平,但我的问题是,实盘过程中,如果第一秒位置4的开空执行了,第10秒价格达到止损了,之后如果有100秒时间走完这根K线,那这100秒时间中,位置4的开空已执行这个条件不会被刷新吗?(我理解回测时每根K线只计算一遍,但实盘时候呢?)



有什么方法能补救这个问题吗?

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


加好友 发短信
等级:论坛游侠 帖子:293 积分:0 威望:0 精华:0 注册:2015/8/12 16:11:54
  发帖心情 Post By:2016/12/29 14:09:27    Post IP:111.203.152.106[显示全部帖子]

 谢谢回答,可是:
1,程序化交易运行模式,我就是使用的固定时间间隔,设置的1秒

2,我觉得很有可能是顺序问题,因为我下一根才执行平仓,触发的是另外一个平空语句(开盘价大于止损线时以开盘价平仓)(这语句也写在位置1,先是CROSS止损,之后防止万一开盘价超过止损,这两句前后挨着)。
同时我的开多和平多止损就不会出现这个问题,当根K线就会平仓,两种写法的开平仓只是方向不一样其他都一样,因为我觉得是开多和平多顺序顺序正确,而开空要在下一遍执行才能触发


3,假设我把位置1的平空原封不动复制一遍放在位置4后面,能解决这问题吗?会不会带来其他不好的结果?

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


加好友 发短信
等级:论坛游侠 帖子:293 积分:0 威望:0 精华:0 注册:2015/8/12 16:11:54
  发帖心情 Post By:2016/12/29 17:02:19    Post IP:111.203.152.106[显示全部帖子]

 请看,螺纹钢连续,15分钟K线图
2016年12月28号01:15这根是多单止损,没问题
2016年12月29号02:45这根是空单止损,只能第二根平

求解决方法



VARIABLE:空单止损=0,空单入场标记=0,多单止损=0,多单入场标记=0;


向上均线:=REF(MA(CLOSE,30),5)<REF(MA(CLOSE,30),4) AND REF(MA(CLOSE,30),4)<REF(MA(CLOSE,30),3) AND REF(MA(CLOSE,30),3)<REF(MA(CLOSE,30),2) AND REF(MA(CLOSE,30),2)<REF(MA(CLOSE,30),1),NOAXIS;
向上成交量:=REF(VOL,5)>REF(VOL,4) AND REF(VOL,4)>REF(VOL,3) AND REF(VOL,3)>REF(VOL,2) AND REF(VOL,2)>REF(VOL,1),NOAXIS;

向下均线:=REF(MA(CLOSE,30),5)>REF(MA(CLOSE,30),4) AND REF(MA(CLOSE,30),4)>REF(MA(CLOSE,30),3) AND REF(MA(CLOSE,30),3)>REF(MA(CLOSE,30),2) AND REF(MA(CLOSE,30),2)>REF(MA(CLOSE,30),1),NOAXIS;
向下成交量:=REF(VOL,5)>REF(VOL,4) AND REF(VOL,4)>REF(VOL,3) AND REF(VOL,3)>REF(VOL,2) AND REF(VOL,2)>REF(VOL,1),NOAXIS;





//位置1——平空
//平空1
IF CROSS(HIGH,空单止损) AND OPEN<=空单止损 AND HOLDING<0 AND 空单入场标记=1 THEN
BEGIN
SELLSHORT(1,1,LIMITR,空单止损);
DRAWTEXT(1,LOW*0.995,'    止损'+NUMTOSTR(空单止损,0)),COLORWHITE;
空单止损:=99999;
空单入场标记:=0;
END

//平空2
IF OPEN>空单止损 AND HOLDING<0 AND 空单入场标记=1 THEN
BEGIN
SELLSHORT(1,1,LIMITR,OPEN);
DRAWTEXT(1,LOW*0.995,'    开盘平'+NUMTOSTR(OPEN,0)),COLORWHITE;
空单止损:=99999;
空单入场标记:=0;
END




//位置2——开多
//开多:
IF REF(向上均线,1) AND CROSS(MA(CLOSE,10),MA(CLOSE,60)) AND HOLDING=0 THEN
BEGIN
BUY(1,1,LIMITR,OPEN);
多单止损:=ENTERPRICE-20;
多单入场标记:=1;
END




//位置3——平多
//平多1
IF CROSS(多单止损,LOW) AND OPEN>=多单止损 AND HOLDING>0 AND 多单入场标记=1 THEN
BEGIN
SELL(1,1,LIMITR,多单止损);
DRAWTEXT(1,HIGH*1.005,'    止损'+NUMTOSTR(多单止损,0)),COLORWHITE;
多单止损:=0;
多单入场标记:=0;
END

//平多2
IF OPEN<多单止损 AND HOLDING>0 AND 多单入场标记=1 THEN
BEGIN
SELL(1,1,LIMITR,OPEN);
DRAWTEXT(1,HIGH*1.005,'    开盘平'+NUMTOSTR(OPEN,0)),COLORWHITE;
多单止损:=0;
多单入场标记:=0;
END




//位置4——开空
//开空:
IF REF(向下均线,1) AND CROSS(MA(CLOSE,60),MA(CLOSE,10)) AND REF(向下成交量,1) AND HOLDING=0  THEN
BEGIN
BUYSHORT(1,1,LIMITR,OPEN);
空单止损:=ENTERPRICE+20;
空单入场标记:=1;
END

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


加好友 发短信
等级:论坛游侠 帖子:293 积分:0 威望:0 精华:0 注册:2015/8/12 16:11:54
  发帖心情 Post By:2016/12/29 17:19:26    Post IP:111.203.152.106[显示全部帖子]

 请教一个不会出错的保险解决办法,比如把位置一的平仓语句再复制到位置4之后,这样同时存在两个平仓语句会不会出问题?两个相同的平仓语句在不同通位置,官方推荐这么写么?(毕竟再上实盘测试还是得赔钱才能看出来,所以直接问版主)


或者准确开仓价的获取,能否用其他方式?这样能维持原来的代码顺序不变?

非常感谢
[此贴子已经被作者于2016-12-29 17:21:12编辑过]

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


加好友 发短信
等级:论坛游侠 帖子:293 积分:0 威望:0 精华:0 注册:2015/8/12 16:11:54
  发帖心情 Post By:2016/12/30 16:10:36    Post IP:111.203.152.106[显示全部帖子]

版主,这个问题我早上又测试了一下,我修改了代码(注释掉了ENTERPRICE,改为OPEN),也测试了在位置4后面多复制一个位置1的平仓,但是我看历史数据图形还是一样的第二根开
我想确认一下,这样上实盘,OPEN价入场后到收线这段时间是不是一定会当根止损,我担心下一次出现这情况不知道什么时候亏笔大的。


螺纹钢连续,15分钟K线图
2016年12月28号01:15这根是多单止损,没问题
2016年12月29号02:45这根是空单止损,只能第二根平


 

VARIABLE:空单止损=0,空单入场标记=0,多单止损=0,多单入场标记=0;


向上均线:=REF(MA(CLOSE,30),5)<REF(MA(CLOSE,30),4) AND REF(MA(CLOSE,30),4)<REF(MA(CLOSE,30),3) AND REF(MA(CLOSE,30),3)<REF(MA(CLOSE,30),2) AND REF(MA(CLOSE,30),2)<REF(MA(CLOSE,30),1),NOAXIS;
向上成交量:=REF(VOL,5)>REF(VOL,4) AND REF(VOL,4)>REF(VOL,3) AND REF(VOL,3)>REF(VOL,2) AND REF(VOL,2)>REF(VOL,1),NOAXIS;

向下均线:=REF(MA(CLOSE,30),5)>REF(MA(CLOSE,30),4) AND REF(MA(CLOSE,30),4)>REF(MA(CLOSE,30),3) AND REF(MA(CLOSE,30),3)>REF(MA(CLOSE,30),2) AND REF(MA(CLOSE,30),2)>REF(MA(CLOSE,30),1),NOAXIS;
向下成交量:=REF(VOL,5)>REF(VOL,4) AND REF(VOL,4)>REF(VOL,3) AND REF(VOL,3)>REF(VOL,2) AND REF(VOL,2)>REF(VOL,1),NOAXIS;





//位置1——平空
//平空1
IF CROSS(HIGH,空单止损) AND OPEN<=空单止损 AND HOLDING<0 AND 空单入场标记=1 THEN
BEGIN
SELLSHORT(1,1,LIMITR,空单止损);
DRAWTEXT(1,LOW*0.995,'    止损'+NUMTOSTR(空单止损,0)),COLORWHITE;
空单止损:=99999;
空单入场标记:=0;
END

//平空2
IF OPEN>空单止损 AND HOLDING<0 AND 空单入场标记=1 THEN
BEGIN
SELLSHORT(1,1,LIMITR,OPEN);
DRAWTEXT(1,LOW*0.995,'    开盘平'+NUMTOSTR(OPEN,0)),COLORWHITE;
空单止损:=99999;
空单入场标记:=0;
END




//位置2——开多
//开多:
IF REF(向上均线,1) AND CROSS(MA(CLOSE,10),MA(CLOSE,60)) AND HOLDING=0 THEN
BEGIN
BUY(1,1,LIMITR,OPEN);
//多单止损:=ENTERPRICE-20;
多单止损:=OPEN-20;
多单入场标记:=1;
END




//位置3——平多
//平多1
IF CROSS(多单止损,LOW) AND OPEN>=多单止损 AND HOLDING>0 AND 多单入场标记=1 THEN
BEGIN
SELL(1,1,LIMITR,多单止损);
DRAWTEXT(1,HIGH*1.005,'    止损'+NUMTOSTR(多单止损,0)),COLORWHITE;
多单止损:=0;
多单入场标记:=0;
END

//平多2
IF OPEN<多单止损 AND HOLDING>0 AND 多单入场标记=1 THEN
BEGIN
SELL(1,1,LIMITR,OPEN);
DRAWTEXT(1,HIGH*1.005,'    开盘平'+NUMTOSTR(OPEN,0)),COLORWHITE;
多单止损:=0;
多单入场标记:=0;
END




//位置4——开空
//开空:
IF REF(向下均线,1) AND CROSS(MA(CLOSE,60),MA(CLOSE,10)) AND REF(向下成交量,1) AND HOLDING=0  THEN
BEGIN
BUYSHORT(1,1,LIMITR,OPEN);
//空单止损:=ENTERPRICE+20;
空单止损:=OPEN+20;
空单入场标记:=1;
END





{

//位置5——平空
//平空1
IF CROSS(HIGH,空单止损) AND OPEN<=空单止损 AND HOLDING<0 AND 空单入场标记=1 THEN
BEGIN
SELLSHORT(1,1,LIMITR,空单止损);
DRAWTEXT(1,LOW*0.995,'    止损'+NUMTOSTR(空单止损,0)),COLORWHITE;
空单止损:=99999;
空单入场标记:=0;
END

}
[此贴子已经被作者于2016-12-30 16:11:03编辑过]

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


加好友 发短信
等级:论坛游侠 帖子:293 积分:0 威望:0 精华:0 注册:2015/8/12 16:11:54
  发帖心情 Post By:2016/12/30 16:43:59    Post IP:111.203.152.106[显示全部帖子]

不好意思我没听太明白
我这样问吧,我现在只是把开仓记录价格的ENTERPRICE,改为用OPEN;原来的1平空 2开多 3平多 4开空顺序位置不变也不复制1平空到4开空后面,并且图表交易设置固定时间间隔1秒执行,这个前提下——
2016 12 29 02:45 螺纹连续15分钟线,OPEN价入场开空,60秒后打了OPEN+20价格止损,在这一根K线走完前的时间里,是不是会每秒运行一次公式并且及时挂出OPEN+20平空止损,不用等下一根开盘才会平(即便事后走完这一根K线变成历史数据后还是会显示第二根开盘平空也OK)

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


加好友 发短信
等级:论坛游侠 帖子:293 积分:0 威望:0 精华:0 注册:2015/8/12 16:11:54
  发帖心情 Post By:2016/12/30 17:07:39    Post IP:111.203.152.106[显示全部帖子]

 可是,实盘时候每秒执行一次,应该会不断刷新开仓相关语句的变量值呀,这样下一秒执行的时候写在前面的语句不就能取到新的变量值了嘛图片点击可在新窗口打开查看
[此贴子已经被作者于2016-12-30 17:08:37编辑过]

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


加好友 发短信
等级:论坛游侠 帖子:293 积分:0 威望:0 精华:0 注册:2015/8/12 16:11:54
  发帖心情 Post By:2016/12/30 17:16:46    Post IP:111.203.152.106[显示全部帖子]

 谢谢耐心讲解,我明白了
后台交易能否规避这个问题,我考虑根据需求换后台了

 回到顶部