金字塔决策交易系统

标题: 请教老师:我想限制最大买进股票个数,但没能成功,请您帮解决 [打印本页]

作者: 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。


作者: 105125    时间: 2023-3-27 12:11
好,谢谢老师!
作者: 105125    时间: 2023-3-27 15:11
老师,‘num’应该填写什么内容?

作者: 资深技术02    时间: 2023-3-27 15:12
不用填写。,这是一个全局变量,变量名是num用来每次开仓增加数字1的
https://www.weistock.com/docs/PE ... 8F%98%E9%87%8F.html
这里有一个有关全局变量的介绍,你可以看下了解下
作者: 105125    时间: 2023-3-27 15:31
谢谢老师

作者: 105125    时间: 2023-3-27 22:11
老师,这样改正确了吗?麻烦老师帮看看
kd:=
pd:=
HC:THOLDCOUNT('');
xj:TACCOUNT( 3);
xj19:TACCOUNT(19);
a:=xj19/(16-HC);

gushu:100*INTPART(4500/(close*100));
GLOBALVARIABLE:flag=0;

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);

gushu:100*INTPART(4500/(close*100));
GLOBALVARIABLE:flag=0;

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
非常感谢老师




欢迎光临 金字塔决策交易系统 (https://www.weistock.com/bbs/) Powered by Discuz! X3.4