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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 如何在条件A下限制开仓次数?

   

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


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

主题:如何在条件A下限制开仓次数?

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


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2020/1/16 0:55:47
如何在条件A下限制开仓次数?  发帖心情 Post By:2020/1/16 1:02:31    Post IP:59.42.28.140[只看该作者]

如何在条件下限制开仓次数?

例如:if cross(ma5,ma60) and 条件A, 开多仓一次,平仓后,只要Ma5没有再次下穿Ma60,那就不再开仓。也就是说在ma5上穿ma60和ma5下穿ma60之间,只开仓一次。

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


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

cross(ma5,ma60) 这个条件就已经限制了。他表示的是ma5上穿ma60那一刻时的状态。上穿和下穿都是交替出现的。当然你如果想逻辑更严谨表述加上限制也无所谓。

除非你用ma5>ma60这种表述方式,他代表 “ma5上穿ma60到ma5下穿ma60k线区间。这种情况下才可能需要限制。

限制次数也很简单,直接用holding就行。holding三种状态如下:

空头持仓:  holding<0

多头持仓:  holding>0

无持仓:    holding=0

 

如果cross(ma5,ma60) and 条件A,是开仓条件可以直接

if cross(ma5,ma60) and 条件A and holding=0 

 

如果是平仓反手操作

if cross(ma5,ma60) and 条件A then begin

sellshort(holding<0,1,MARKET);

buy(holding=0,1,MARKET);

end

 



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


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2020/1/16 0:55:47
  发帖心情 Post By:2020/1/16 9:37:16    Post IP:59.42.29.88[只看该作者]

我表述错误,应该是从cross(ma5,ma60)后的ma5》ma60,到Ma5《ma60之间,只能开仓一次!

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


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

确认下:
1.你这里的开仓条件其实应该是 ma5>ma60 and 条件A  对吧?因为如果用cross的判断,cross成立本身就只在第一次ma5>ma60时满足。
2.在死叉之前 能且只能开仓一次。即使死叉之前平仓了也只开仓一次?


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


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2020/1/16 0:55:47
  发帖心情 Post By:2020/1/16 10:56:35    Post IP:59.42.29.88[只看该作者]

确认下:
1.你这里的开仓条件其实应该是 ma5>ma60 and 条件A  对吧?因为如果用cross的判断,cross成立本身就只在第一次ma5>ma60时满足。//是的,ma5>ma60和条件A开仓,
2.在死叉之前 能且只能开仓一次。即使死叉之前平仓了也只开仓一次?//是的,在死叉之前平仓了,但又符合ma5》ma60和条件A,也不开仓了


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


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

 这样做:

ma5:ma(c,5);
ma60:ma(c,60);
条件A:C>O+5*MINDIFF;
cd:ma5>ma60 and 条件A;
cd1:BARSLAST(cross(ma5,ma60));//从0开始 所以下面count统计时候加1

cd2:count(cd,cd1+1)=1 and  cd;//当前满足开仓条件且是金叉以来的第一次


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


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2020/1/16 0:55:47
  发帖心情 Post By:2020/1/16 12:53:08    Post IP:59.42.29.88[只看该作者]

n1:=barslast(cross(c,mac))+1;
n2:=barslast(cross(mac,c))+1;

ee:=barslast(type(1)=2)<=15 or barslast(type(1)=4)<=15;
cc:=type(1)=2 and c>mac and 条件A and ee=0  ;
dd:=type(1)=4 and c<mac and 条件B and ee=0 ;

if cc and all(c>mac,6)=1 and count(cc,n1)=1 then begin
buy(1,oq,market);
end
if dd and all(c<mac,6)=1 and count(dd,n2)=1 then begin
buyshort(1,oq,market);
end

可是它不会开仓,是不是哪里写错了?

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


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

 你用到了type这类函数。这里函数参与第一次开仓时候都会有点问题。因为前面肯定是没有开平之类的。count(cc,n1)=1 这个条件就有问题了。所以如果是其他不依赖开平信号的条件可以,但是刚好你这里用了 就不行。



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


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

考虑下用全局变量处理吧。
VARIABLE:mark1:=0;
mac:ma(c,5);

ee:=barslast(type(1)=2)<=15 or barslast(type(1)=4)<=15;
cc:=(type(1)=2 or TYPE(1)=0) and c>mac and ee=0;

if cc and all(c>mac,6)=1 and mark1=0 then
begin
buy(1,1,market);
mark1:=1;
end

if c<mac then mark1:=0;//c<mac的时候重置下这个变量  接触对开仓的限制




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


加好友 发短信
等级:新手上路 帖子:8 积分:0 威望:0 精华:0 注册:2020/1/16 0:55:47
  发帖心情 Post By:2020/1/16 20:40:23    Post IP:59.42.29.88[只看该作者]

那做空时呢?你上面写的是做多的情况,

 回到顶部
总数 11 1 2 下一页