Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共35 条记录, 每页显示 10 条, 页签: [1] [2][3][4]
[浏览完整版]

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

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

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

请教。谢谢
2楼
FireScript 发表于:2021/4/27 9:22:12
 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,自然不会下深圳了。
3楼
drliang680 发表于:2021/4/27 10:28:16
谢谢!但是有个问题,手动进行国债逆回购具体操作时,买入的操作是卖出,相当于借出资金,那么代码还是tbuy吗?
4楼
FireScript 发表于:2021/4/27 10:42:11
 哦。这个得用TBUYSHORT了 。不是tbuy.

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

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

目前我是按照1写的。  因为我们模拟盘不能测试逆回购,所以这里有必要确认下。
[此贴子已经被作者于2021/4/27 10:54:08编辑过]
5楼
drliang680 发表于:2021/4/27 13:13:40
在实盘的时候,逆回购在手机端都是一键操作,应该是第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 不为空,则下单。
6楼
FireScript 发表于:2021/4/27 13:27:46
 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编辑过]
7楼
FireScript 发表于:2021/4/27 14:00:53
 if code<>'' and Timecd2 then tbuyshort(1,手数,mkt,0,0,'',code);//如果code 不为空,则下单。

刚才这里我为了测试改成了Timecd1 。更正下。
8楼
drliang680 发表于:2021/4/27 14:09:02
谢谢。我把完整的策略写出来了,并写了注释,加载在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 不为空,则下单。
9楼
FireScript 发表于:2021/4/27 14:15:52
 嗯差不多了。你搞个股票模拟测试下来吧。逆回购虽然不能在模拟成交,但是可以检查下信号是否正常出现,以及手数是否对。
[此贴子已经被作者于2021/4/27 14:16:14编辑过]
10楼
drliang680 发表于:2021/4/27 14:17:08
多谢!我先测试下,有什么问题再请教。
共35 条记录, 每页显示 10 条, 页签: [1] [2][3][4]


Powered By Dvbbs Version 8.3.0
Processed in .04688 s, 3 queries.