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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请教如何加入时间控制和逆回购操作

   

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


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

主题:请教如何加入时间控制和逆回购操作

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


加好友 发短信
等级:论坛游侠 帖子:103 积分:0 威望:0 精华:0 注册:2014/2/10 14:00:34
请教如何加入时间控制和逆回购操作  发帖心情 Post By:2021/4/27 6:23:21    Post IP:114.240.98.119[只看该作者]

你好!我正在写股票后台程序化,后台程序化A已经写好了。我想在上午9:30到下午2:50之间执行A,在下午2:50后,将账户中没有买成股票的资金,够10万的,买成上海1天期逆回购;不够10万但是够1000的,买成深圳1天期逆回购。不够1000的,就留在账户里。

后台程序化A已经写好了,后面的时间控制和逆回购操作,不知到如何实现。

请教。谢谢

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


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

 1.时间控制。
Timecd:time>=93000 and time<=145000;

这个条件放到程序A里作为开平的条件之一。这样过了时间程序自然就限制住了。也可以直接把这个作为if的条件,将所有代码嵌套进去。

2.相应的程序化B的代码。则是
Timecd:time>145000;
用这个条件作为下单的限制条件之一。

至于操作逆回购,你可以在代码里判断当前资金情况,这个好做。账户函数里面都有相应函数。

code:='';

if TACCOUNT( 3)>100000 then code:=逆回购代码1;//上海
if TACCOUNT( 3)<100000 and TACCOUNT( 3)>1000 then code:=逆回购代码2;//深圳

ss1:CEILING(100000 /c);//计算手数1
ss2:CEILING(1000 /c);//计算手数2
手数:=if(code=逆回购代码1,ss1,if(code=逆回购代码2,ss2,'') );//根据品种区分下单的手数
if code<>'' and Timecd  then tbuy(1,ss,mkt,0,0,'',code);//如果code 不为空,则下单。


但是有个问题,如果十万够了,买了上海还剩了。下个周期运行,可能会触发深圳的下单。简单的做法是你这个交易周期设置大些。这样没有新K,自然不会下深圳了。


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


加好友 发短信
等级:论坛游侠 帖子:103 积分:0 威望:0 精华:0 注册:2014/2/10 14:00:34
  发帖心情 Post By:2021/4/27 10:28:16    Post IP:123.119.43.143[只看该作者]

谢谢!但是有个问题,手动进行国债逆回购具体操作时,买入的操作是卖出,相当于借出资金,那么代码还是tbuy吗?

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


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

 哦。这个得用TBUYSHORT了 。不是tbuy.

另外关于这个交易规则,我不是很清楚。不知道你们实盘时候 是按照下面哪种方式来的

1.按照十万资金以及当前的价格计算手数,
2.手数直接填写100就表示使用10万资金了。(有看到说是这种的)

目前我是按照1写的。  因为我们模拟盘不能测试逆回购,所以这里有必要确认下。
[此贴子已经被作者于2021/4/27 10:54:08编辑过]


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


加好友 发短信
等级:论坛游侠 帖子:103 积分:0 威望:0 精华:0 注册:2014/2/10 14:00:34
  发帖心情 Post By:2021/4/27 13:13:40    Post IP:123.119.43.143[只看该作者]

在实盘的时候,逆回购在手机端都是一键操作,应该是第1种方式。

我按照你的指导,重新编辑了一下我的程序,请你帮我看看是否可行。

Timecd1:time>=093000 and time<=145000;
Timecd2:time>145000;

kd:= XXXXXX;
pd:= XXXXXX;

TBUY(kd and TBUYHOLDING(1)=0 and Timecd1,100000/c,MKT,0,0,'','');
TSELL(pd and TBUYHOLDING(1)>0 and Timecd1,TBUYHOLDING(1),MKT,0,0,'','');

code:='';

if TACCOUNT( 3)>100000 then code:=204001;//上海
if TACCOUNT( 3)<100000 and TACCOUNT( 3)>1000 then code:=131810;//深圳

ss1:CEILING(100000/c);//计算手数1
ss2:CEILING(1000/c);//计算手数2
手数:=if(code=逆回购代码1,ss1,if(code=逆回购代码2,ss2,'') );//根据品种区分下单的手数
if code<>'' and Timecd2  then tbuyshort(1,ss,mkt,0,0,'',code);//如果code 不为空,则下单。

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


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

 Timecd1:time>=093000 and time<=145000;
Timecd2:time>145000;


code:='';

if TACCOUNT( 3)>100000 then code:='204001';//上海
if TACCOUNT( 3)<100000 and TACCOUNT( 3)>1000 then code:='131810';//深圳


ss1:CEILING(100000/DYNAINFO2(7 , '204001'));//计算手数1
ss2:CEILING(1000/DYNAINFO2(7 , '131810'));//计算手数2
手数:=if(code='204001',ss1,if(code='131810',ss2,'') );//根据品种区分下单的手数
if code<>'' and Timecd2 then tbuyshort(1,手数,mkt,0,0,'',code);//如果code 不为空,则下单。


1.品种代码必须是字符串。
2.因为监控品种和下单品种未必一致。所以计算手数的地方,用到的价格需要引用到指定品种才行。
[此贴子已经被作者于2021/4/27 14:00:11编辑过]


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


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

 if code<>'' and Timecd2 then tbuyshort(1,手数,mkt,0,0,'',code);//如果code 不为空,则下单。

刚才这里我为了测试改成了Timecd1 。更正下。


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


加好友 发短信
等级:论坛游侠 帖子:103 积分:0 威望:0 精华:0 注册:2014/2/10 14:00:34
  发帖心情 Post By:2021/4/27 14:09:02    Post IP:123.119.43.143[只看该作者]

谢谢。我把完整的策略写出来了,并写了注释,加载在15分钟以上周期,请再帮我看看。

//此模型挂在15分钟以上周期,交易周期设置大于剩余做国债逆回购的最后10分钟。这样没有新K,自然不会下深圳了

Timecd1:time>=93000 and time<=145000;
Timecd2:time>145000;

kd:= "macd.macd1">0;
pd:= "macd.macd1"<0;

TBUY(kd and TBUYHOLDING(1)=0 and Timecd1,100000/c,MKT,0,0,'','');
TSELL(pd and TBUYHOLDING(1)>0 and Timecd1,TBUYHOLDING(1),MKT,0,0,'','');

code:='';

if TACCOUNT( 3)>100000 then code:='204001';//上海
if TACCOUNT( 3)<100000 and TACCOUNT( 3)>1000 then code:='131810';//深圳

ss1:CEILING(100000/DYNAINFO2(7 , '204001'));//计算手数1
ss2:CEILING(1000/DYNAINFO2(7 , '131810'));//计算手数2
手数:=if(code='204001',ss1,if(code='131810',ss2,'') );//根据品种区分下单的手数
if code<>'' and Timecd2  then tbuyshort(1,手数,mkt,0,0,'',code);//如果code 不为空,则下单。

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


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

 嗯差不多了。你搞个股票模拟测试下来吧。逆回购虽然不能在模拟成交,但是可以检查下信号是否正常出现,以及手数是否对。
[此贴子已经被作者于2021/4/27 14:16:14编辑过]


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


加好友 发短信
等级:论坛游侠 帖子:103 积分:0 威望:0 精华:0 注册:2014/2/10 14:00:34
  发帖心情 Post By:2021/4/27 14:17:08    Post IP:123.119.43.143[只看该作者]

多谢!我先测试下,有什么问题再请教。

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