标题: 请教老师:我想限制最大买进股票个数,但没能成功,请您帮解决 [打印本页] 作者: 105125 时间: 2023-3-27 10:02 标题: 请教老师:我想限制最大买进股票个数,但没能成功,请您帮解决 请教老师:我想限制最大买进股票个数为16,但没能成功,不知道哪里出问题,请您帮解决,谢谢
开多:(KD5 or 开多1 and not(kd5)); //开多信号
平多:PD5 or (平多1 and not(kd5) ); //平多信号
kd:开多;
pd:平多;
HC:THOLDCOUNT('');
xj:TACCOUNT( 3);
xj19:TACCOUNT(19);
a:=xj19/(16-HC);
gushu:100*INTPART(45000/(close*100));
GLOBALVARIABLE:flag=0;
if kd and tbuyholding(1)<gushu and HC<=16 then
begin
作者: 105125 时间: 2023-3-27 10:03
限制最大持有股票数量为16个作者: 资深技术02 时间: 2023-3-27 10:11
开多:(KD5 or 开多1 and not(kd5)); //开多信号
平多:PD5 or (平多1 and not(kd5) ); //平多信号
kd:开多;
pd:平多;
HC:THOLDCOUNT('');
xj:TACCOUNT( 3);
xj19:TACCOUNT(19);
a:=xj19/(16-HC);
gushu:100*INTPART(45000/(close*100));
GLOBALVARIABLE:flag=0;
//用一个全局变量记录,每次有开仓记录+1
if kd and tbuyholding(1)<gushu and EXTGBDATA('num')+HC<=16 then
begin
EXTGBDATASET( 'num',EXTGBDATA('num')+1);
tbuy();
END
if currenttime>093000 and currenttime<093100 then
BEGIN
EXTGBDATASET( 'num',0);
END作者: 资深技术02 时间: 2023-3-27 10:12
因为同时下单时候,持仓数量并不会买到,所以此时判断上是没办法精准的
一个替代方案就是自己用一个全局变量作为已开仓的记录,开仓后变量+1。
if kd and tbuyholding(1)<gushu and EXTGBDATA('num')+HC<=16 then
begin
EXTGBDATASET( 'num',EXTGBDATA('num')+1);
tbuy(1,gushu-tbuyholding(1),lmt,DYNAINFO(28)+0.03);
END
if pd and tbuyholding(1)>0 then
begin
tsell(1,tbuyholding(1),lmt,DYNAINFO(34));
END
if flag=0 and 100*TOPENPROFIT/(close*tbuyholding(1)*MULTIPLIER)>=4 and tbuyholding(1)>0 then
begin
tsell(1,50%,lmt,DYNAINFO(34)),PERTRADER;
flag:=1;
END
if currenttime>093000 and currenttime<093100 then
BEGIN
EXTGBDATASET( 'num',0);
END 作者: 资深技术02 时间: 2023-3-28 09:06
kd:=
pd:=
HC:THOLDCOUNT('');
xj:TACCOUNT( 3);
xj19:TACCOUNT(19);
a:=xj19/(16-HC);
if kd and tbuyholding(1)<gushu and EXTGBDATA('num')+HC<=16 then
begin
EXTGBDATASET( 'num',EXTGBDATA('num')+1);
tbuy(1,gushu-tbuyholding(1),lmt,DYNAINFO(28)+0.03);
END
if pd and tbuyholding(1)>0 then
begin
tsell(1,tbuyholding(1),lmt,DYNAINFO(34));
EXTGBDATASET( 'num',EXTGBDATA('num')-1);
END
if flag=0 and 100*TOPENPROFIT/(close*tbuyholding(1)*MULTIPLIER)>=4 and tbuyholding(1)>0 then
begin
tsell(1,50%,lmt,DYNAINFO(34)),PERTRADER;
flag:=1;
END
if currenttime>093000 and currenttime<093100 then
BEGIN
EXTGBDATASET( 'num',0);
END作者: 资深技术02 时间: 2023-3-28 09:08
平仓时候也要把变量减1,相当于num这个变量你需要自己非常注意的去管理好。
所以这类全举报对于客户自己编程逻辑理解非常需要,你一定要自己很清楚什么时候给他加1,什么时候给他减1
这方面逻辑上的考虑周全很多时候您一定自己要了解透彻作者: 105125 时间: 2023-3-28 10:11
老师您好!如果9:30开盘有符合条件买进,以下“currenttime<093100”会有影响吗?
if currenttime>093000 and currenttime<093100 then
BEGIN
EXTGBDATASET( 'num',0);
END作者: 资深技术02 时间: 2023-3-28 10:26
有影响,那你把时间改成小于093000,这里主要起初始化作用
在每天开盘前进行初始化作者: 105125 时间: 2023-3-28 11:57
非常感谢老师