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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]怎样控制日内多品种交易总次数

   

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


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

主题:[求助]怎样控制日内多品种交易总次数

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


加好友 发短信
等级:新手上路 帖子:69 积分:0 威望:0 精华:0 注册:2018/11/2 17:55:37
[求助]怎样控制日内多品种交易总次数  发帖心情 Post By:2018/12/19 11:44:51    Post IP:125.77.105.242[只看该作者]

老师:
       交易程序日内多品种怎样控制交易总次数?比如3次以内

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


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


这个帖子下面 2.2条。有代码范例的。


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


加好友 发短信
等级:新手上路 帖子:69 积分:0 威望:0 精华:0 注册:2018/11/2 17:55:37
  发帖心情 Post By:2019/1/2 14:03:49    Post IP:120.40.36.151[只看该作者]

老师:您好!

      前些天请教限制当天开仓次数,我查了
2.2的帖子,

我编写成这样:

variable:num=0;// 全局变量,来控制当天交易次数

cs:=1;//限定一天最多交易1次

ma5:=ma(close,5);

ma20:=ma(close,20);

cond1:=cross(ma5,ma20);

cond2:=cross(ma20,ma5);

if cond2 and holding>0 then sell(1,1,market);

     

if cond1 and holding=0 and num<cs  then

  begin

  buy(1,1,market);

  num:=num+1;

  end


abb:=(time0-timetot0(dynainfo(207))<=60) or not(islastbar);//提前60s下单

if abb and time=150000 then BEGIN 

    收盘平多:sell(1,1,LIMITR,C-mindiff);

    收盘平空:sellshort(1,1,LIMITR,C+mindiff);

    NUM:=0;

end


//if time=closetime(0) then num:=0;

  

测试的结果还是有开仓2-3次的,为什么?


如果要编写(1)买入平仓后再开仓,代码怎么写?


                   (2)或者限定保证金数额  开仓,代码又怎么写?


有点啰嗦,谢谢老师!谢谢!

 


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


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

 我简单加载了下代码

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
看图表信号的话,这个应该是满足当日只开平一次的需求的啊。你说的测试是回测还是说实际模拟交易的情况呢?


买入平仓后再开仓,代码怎么写?”这个什么意思?是指空仓情况下才允许开仓吗?这个图表上应该也是已经控制过了得啊。


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


加好友 发短信
等级:新手上路 帖子:69 积分:0 威望:0 精华:0 注册:2018/11/2 17:55:37
  发帖心情 Post By:2019/1/2 15:13:51    Post IP:120.40.36.151[只看该作者]

老师:那是根据2.2贴模仿的。

我这样写对吗?

variable:num=0;// 全局变量,来控制当天交易次数
cs:=1;//限定一天最多交易1次
ma5:=ma(close,5);
ma20:=ma(close,20);
cond1:=cross(ma5,ma20);
cond2:=cross(ma20,ma5);
if cond1 and holding<0 then begin
   sellshort(1,1,market);
   num:=0;
   end
     
if cond1 and holding=0 and num<cs  then
  begin
  buy(1,1,market);
  num:=num+1;
  end

if cond2 and holding>0 then begin 
  sell(1,1,market);
  num:=0;
  end
if cond2 and holding=0 and num<cs  then
  begin
  buyshort(1,1,market);
  num:=num+1;
  end

abb:=(time0-timetot0(dynainfo(207))<=60) or not(islastbar);//提前60s下单
if abb and time=150000 then BEGIN 
    收盘平多:sell(1,1,LIMITR,C-mindiff);
    收盘平空:sellshort(1,1,LIMITR,C+mindiff);
    NUM:=0;
end

//if time=closetime(0) then num:=0;
  
还是回测有2-3次的,是不是又是错的?

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


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

那你看下

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

这里是不是勾了。


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


加好友 发短信
等级:新手上路 帖子:69 积分:0 威望:0 精华:0 注册:2018/11/2 17:55:37
  发帖心情 Post By:2019/1/2 15:23:48    Post IP:120.40.36.151[只看该作者]

这里打勾后同一天不同时间还是有多于一次的开仓

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


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

 你这个交易一次是开多平多算一次,开空平空也算一次是吗?

variable:num=0;// 全局变量,来控制当天交易次数
cs:=1;//限定一天最多交易1次
ma5:=ma(close,5);
ma20:=ma(close,20);
cond1:=cross(ma5,ma20);
cond2:=cross(ma20,ma5);
if cond1 and holding<0 then begin
   sellshort(1,1,market);
   num:=0;
   end
     
if cond1 and holding=0 and num<cs  then
  begin
  buy(1,1,market);
  num:=num+1;
  end

if cond2 and holding>0 then begin 
  sell(1,1,market);
  num:=0;
  end
if cond2 and holding=0 and num<cs  then
  begin
  buyshort(1,1,market);
  num:=num+1;
  end

abb:=(time0-timetot0(dynainfo(207))<=60) or not(islastbar);//提前60s下单
if abb and time=150000 then BEGIN 
    收盘平多:sell(1,1,LIMITR,C-mindiff);
    收盘平空:sellshort(1,1,LIMITR,C+mindiff);
    NUM:=0;
end

上面代码我调整了下把num重置只放在最后一个K。你看下是否满足需求。还有6楼那个我意思是不要打钩。


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


加好友 发短信
等级:新手上路 帖子:69 积分:0 威望:0 精华:0 注册:2018/11/2 17:55:37
  发帖心情 Post By:2019/1/2 15:41:02    Post IP:120.40.36.151[只看该作者]

我把NUM重置只放在平多、或只放在收盘平仓两种都回测,还是不能一天开仓一次(含开多或开空)

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


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

我知道怎么回事了。

variable:num=0;// 全局变量,来控制当天交易次数

if  TODAYBAR=1 or BARPOS=1 then num:=0;
cs:=1;//限定一天最多交易1次
ma5:=ma(close,5);
ma20:=ma(close,20);
cond1:=cross(ma5,ma20);
cond2:=cross(ma20,ma5);
if cond1 and holding<0 then begin
   sellshort(1,1,market);
   end
    
if cond1 and holding=0 and num<cs  then
  begin
  buy(1,1,market);
  num:=num+1;
  end

if cond2 and holding>0 then begin
  sell(1,1,market);
  end
if cond2 and holding=0 and num<cs  then
  begin
  buyshort(1,1,market);
  num:=num+1;
  end
abb:(time0-timetot0(dynainfo(207))<=60) or not(islastbar);//提前60s下单
if abb and time=150000 then BEGIN
收盘平多:sell(1,1,LIMITR,C-mindiff);
收盘平空:sellshort(1,1,LIMITR,C+mindiff);
end

num的重置放在当天第一个K最合理。
[此贴子已经被作者于2019/1/2 15:50:58编辑过]


命数如织,当如磐石。
 回到顶部
总数 16 1 2 下一页