金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2983|回复: 4

请教:为何后台买单有时能发出来,有时不能发出?

[复制链接]

7

主题

13

帖子

13

积分

Rank: 1

等级: 新手上路

注册:
2022-6-29
曾用名:
发表于 2023-4-10 16:04 | 显示全部楼层 |阅读模式
本段后台程序,用于实现当60分钟跌破JZT指标线后,自动买入10万元股票。
实际运行中,一大半触发点可以自动下单买入,一小半触发点没有任何反应,检查交易日志中没有任何记录,检查ini文件中已正常写入,检查各变量均正常。

麻烦指点一下,是何原因?

下单金额:=10;
止盈比例:=3;
止损比例:=-3;
VARIABLE:str(30):=0;VARIABLE:股票代码[30]:=0;VARIABLE:状态[30]:=0;VARIABLE:买价目标[30]:=0;VARIABLE:止盈目标[30]:=0;VARIABLE:止损目标[30]:=0;VARIABLE:持有日数[30]:=0;VARIABLE:原有仓位[30]:=0;
GLOBALVARIABLE:下单时间:=0;GLOBALVARIABLE:告警时间:=0;

MAXN:=25;
股票代码[1]:='SZ300033';
……

下单金额:=100000;
现在时间:=CURRENTTIME();
现在日期:=CURRENTDATE();
IF ISLASTBAR()=1 THEN BEGIN
        FOR n=1 TO MAXN DO BEGIN
                状态[n]:=GETINIFILE('D:\JZT.INI',NUMTOSTR(n,0),'状态');
                买价目标[n]:=STKINDIEX(股票代码[n],'JZT指标.R',0,5,0,50);
                最低价:=STKINDIEX(股票代码[n],'个股盘口.最低价',0,5,0,50);
                最高价:=STKINDIEX(股票代码[n],'个股盘口.最高价',0,5,0,50);
                买一价:=DYNAINFO2(20,股票代码[n]);
                卖一价:=DYNAINFO2(21,股票代码[n]);

                IF 状态[n]=1 AND 最低价<=买价目标[n] THEN BEGIN
                        买量计算:=INTPART(下单金额*10000/买价目标[n]/100)*100;
                        买量:=IF(买量计算>=200,买量计算,IF(STRFIND(股票代码[n],'SH688',1)=1,IF(下单金额*10000/买价目标[n]>=100,200,0),IF(下单金额*10000/买价目标[n]>=50,100,0)));
                        IF 买量>0 AND 买一价>0 AND ((现在时间>93002 AND 现在时间<112958) OR (现在时间>130002 AND 现在时间<145958)) THEN BEGIN
                                原有仓位[n]:=TBUYHOLDINGEX('xxxxxxxx',股票代码[n],2);
                                TBUY(1,买量,LMT,买一价+0.01,0,'xxxxxxxx',股票代码[n]);
                                WRITEINIFILE('D:\MOYU.INI',NUMTOSTR(n,0),'状态',1.5);
                                WRITEINIFILE('D:\MOYU.INI',NUMTOSTR(n,0),'买价',买一价+0.01);
                                WRITEINIFILE('D:\MOYU.INI',NUMTOSTR(n,0),'买量',买量);
                                WRITEINIFILE('D:\MOYU.INI',NUMTOSTR(n,0),'买日',CURRENTDATE());
                                WRITEINIFILE('D:\MOYU.INI',NUMTOSTR(n,0),'代码',STRTONUM(STRRIGHT(股票代码[n],6)));
                                DEBUGFILE('D:\LOGFILE.TXT', FORMULANAME&':  开仓:'&股票代码[n]&' 最低价 '&NUMTOSTR(最低价,2)&' 买价目标 '&NUMTOSTR(买价目标[n],2)&' 买量 '&NUMTOSTR(买量,0)&' 买一价 '&NUMTOSTR(买一价,2),0);
                                下单时间:=现在时间;
                        END
                END
        END
END

回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-4-10 16:11 | 显示全部楼层
1.你怎么确定它应该触发,却没有触发的。这种只能通过debug输出,分析当时的执行结果才能确定产生现象的原因。
2.上面的代码根本不符合PEL的特性。pel策略都是运行在当前品种中,压根不需要你自己指定和循环和数组。软件内部就是轮询计算当前监控的所有品种。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

13

帖子

13

积分

Rank: 1

等级: 新手上路

注册:
2022-6-29
曾用名:
 楼主| 发表于 2023-4-11 10:16 | 显示全部楼层
谢谢解答。
1.应该触发是通过debug文件看到的,从图形上也可验证。比如今天上午有一条策略的debug输出为:
2023-04-11 10:03:30.323    做多-开平仓:  开仓:SZ300383 最低价 12.70 买价目标 12.84 买量 7700 买一价 13.07
但交易日志上没有任何记录,也没有执行买入操作。

是否TBUY语句使用不当?
TBUY(1,买量,LMT,买一价+0.01,0,'xxxxxxxx',股票代码[n])

2.由于一般只有20多个股票需要纳入策略,更换起来直接录代码比较方便,所以使用了数组+循环。
根据软件特性,是否建议改为:只针对当前股票编写后台交易程序,在启动预警时的监控品种里录入这一堆股票?这样改后有何好处?是否性能或稳定性提升?

谢谢指导。
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-4-11 10:41 | 显示全部楼层
1、循环语句内,tbuy报单语句只会触发一次的,并不会多次触发。
2、不建议你的后台程序化使用这种循环结构,后台程序化直接监控多品种,本身就是一个循环执行的逻辑了。可以直接在后台上监控多个品种,代码编写也更简单啊,没必要用在这种循环、数组的结构。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

13

帖子

13

积分

Rank: 1

等级: 新手上路

注册:
2022-6-29
曾用名:
 楼主| 发表于 2023-4-11 19:17 | 显示全部楼层
谢谢指导。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-8-25 20:46 , Processed in 0.185066 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表