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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]请老师帮忙编写

   

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


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

主题:[求助]请老师帮忙编写

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


加好友 发短信
等级:论坛游侠 帖子:139 积分:0 威望:0 精华:0 注册:2016/12/13 9:40:24
[求助]请老师帮忙编写  发帖心情 Post By:2020/12/8 13:39:01    Post IP:121.232.13.226[只看该作者]

请老师帮忙更改一下下面的代码:
大概思路是满足开仓和加仓条件后分别进场(最多进场5次),进场之后,再根据每次的进场价设置对应的止损位;


input:num(5,1,10,1),ZS(0.009,0.001,0.02,0.001);
VARIABLE : TURTLEUNITS=0 ;
VARIABLE : POSITION=0 ;
IF POSITION=0 THEN BEGIN
//开仓
IF  B_COND  THEN BEGIN
BUY(HOLDING=0,CW%,MARKET);
POSITION=1;
TURTLEUNITS=1;
END
IF POSITION=1  THEN BEGIN
//加仓
WHILE JD AND  TURTLEUNITS<=NUM DO BEGIN
BUY(HOLDING>0,CW%,MARKET);
TURTLEUNITS=TURTLEUNITS+1;
END
//止损
WHILE TURTLEUNITS>0  AND ( ENTERPRICE-C)>C*ZS DO BEGIN
SELL(1,ENTERVOL,MARKET);
TURTLEUNITS=TURTLEUNITS-1;
END
IF TURTLEUNITS=0 THEN BEGIN
POSITION=0;
END
END

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/12/8 13:49:07    Post IP:58.246.57.26[只看该作者]

上面的这段代码实现不了的。循环里面的信号虽然可以在同一个K的同一个下单语句下出多个,但实际交易时候只会下一次,其他信号直接被忽略掉的。目前只有后台程序化才能在同一个K内在同一个下单语句上执行多次下单。


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/12/8 13:56:44    Post IP:58.246.57.26[只看该作者]

 你不要参考上面那个代码,你直接回退一步 提出你的原始需求,从你原始需求出发思路解决方案。


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


加好友 发短信
等级:论坛游侠 帖子:139 积分:0 威望:0 精华:0 注册:2016/12/13 9:40:24
  发帖心情 Post By:2020/12/8 14:04:30    Post IP:121.232.13.226[只看该作者]

不需要在同一根K线上实现,而且我是K线走完模式下的;

以多头突破为例:第一次突破开仓,第二次突破加仓....第五次突破加仓;

再根据每次的开仓价设置对应的止损价,分别触及止损后逐个离场;( ENTERPRICE-C)>C*ZS 

请老师帮忙编写一下,我写的实现不了。

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


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

 1.那你这个最多限制五次是怎么限制的。同一个交易日限制五次?日内收盘时候是否需要清仓?不清仓的话,可能影响次日开仓加仓逻辑的。
2.没办法分别止损的。只能根据持仓均价去止损平仓。上面那个代码里面的方式只能体现思路,不能实际奏效。



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


加好友 发短信
等级:论坛游侠 帖子:139 积分:0 威望:0 精华:0 注册:2016/12/13 9:40:24
  发帖心情 Post By:2020/12/8 15:02:18    Post IP:121.232.13.226[只看该作者]


通过TURTLEUNITS去定义可以循环的次数,来限制可以开仓的机会,并不局限开仓次数,不需要考虑日内清仓;

有没有其它办法或者数组去存每次开仓的价格呢?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/12/8 15:35:03    Post IP:58.246.57.26[只看该作者]

1.循环不能实现限制开仓次数的,还额外消耗不必要的资源消耗。原因很简单,上面那个循环每次执行都是在一个K上的。它不是跨K线的。如果是一个完整的策略,这个循环的结果就是在一个K上出五个信号。而且这五个信号,仅仅能执行一个。


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

限制交易次数只能用全局变量去控制,但是每次限制次数达到了,你如果不选择时机进行重置,那么这个策略后续就没有信号了。也就是下面这个例子里的做法,这个是日内限制次数的,也可以拓展下的。比如在全部止损完成之后,重新运行开仓。

http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=173541&page=2

2.这个真没有办法。数组也不行,逻辑太复杂,需要考虑的情况太多了。很难有个稳健的解决方式。这个问题很早就有人提过的,当时也尝试过,最后发现是个爬不出来的坑。主要是我们的数值目前其实只能做些简单的需求,复杂的都只能pass.



命数如织,当如磐石。
 回到顶部