以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  如何控制开仓次数  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=183113)

--  作者:sword8586
--  发布时间:2020/11/20 15:58:45
--  如何控制开仓次数
开仓次数  发帖心情 Post By:2018/4/4 9:13:52 [只看该作者]

我想请问一下
金字塔一句buy语句只能执行一次。
因为每次重新启动程序化的,语句都会重置,或者单根K线采用固定间隔时间轮询时,会应为tick数据反复出现而满足开平仓条件就会不停开平仓。
那有没有办法来限制开仓的次数?

采用以下方法,使用GETREGVAL()EXTGBDATASET()

mholding:=GETREGVAL\'mholding\');
IF HOLDING=0 THEN BEGIN //若持仓为0
 IF ENTRYLONGCOND&&mholding=0 THEN BEGIN //且满足开多条件
    mholding:=mholding+1;
    EXTGBDATASET(\'mholding\',mholding);
    BUY(1,手数,LIMITR,KDL),IGNORECHECKPRICE;//开多单  KPJ:=MAX(OPEN,UPPERBAND);
 END   
END
这样在5分钟K线下,即使采用固定1秒轮询(Tick)下反复满足ENTRYLONGCOND,也会因为开一次仓后mholding>=1而在一根K线下开一次仓!谢谢

--  作者:banzhuan
--  发布时间:2020/11/20 16:04:13
--  
1、在程序化运行中,5分钟周期K线上,一个buy语句无论触发多少次,只会开仓一次;

2、重新启动程序化后,建议勾选“重复信号交易检测”,如果该根K有信号则会弹出提示框,点否即可;

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

--  作者:sword8586
--  发布时间:2020/11/20 16:16:27
--  
开仓次数  发帖心情 Post By:2018/4/4 9:13:52 [只看该作者]

或者单根K线采用固定间隔时间轮询时,会应为tick数据反复出现而满足开平仓条件就会不停开平仓。
那有没有办法来限制开仓的次数?

采用以下方法,使用GETREGVAL()SETREGVAL()

mholding:=GETREGVAL(\'J8\',\'mholding\',0);
IF HOLDING=0 THEN BEGIN //若持仓为0
 IF ENTRYLONGCOND&&mholding=0 THEN BEGIN //且满足开多条件
    mholding:=mholding+1;
    SETREGVAL(\'J8\',\'mholding\',mholding);
    BUY(1,手数,LIMITR,KDL),IGNORECHECKPRICE;//开多单  KPJ:=MAX(OPEN,UPPERBAND);
 END   
END
这样在5分钟K线下,即使采用固定1秒轮询(Tick)下反复满足ENTRYLONGCOND,也会因为开一次仓后mholding>=1而在一根K线下开一次仓!谢谢


老师,我问的是5分钟K线,信号采用的是固定间隔1秒轮询下,而不是走完K。所以经常出现反复开仓,现在我才用上面的方法,老师看看能不能控制开仓次数。
[此贴子已经被作者于2020/11/20 16:18:00编辑过]

--  作者:banzhuan
--  发布时间:2020/11/20 16:26:19
--  
不用控制,图表的机制就是单根K上一个开仓语句,不管是不是固定轮询,都只会开仓一次,您可以用c>o试试,哪怕信号重复触发了N次,但是只会下单一次。
--  作者:sword8586
--  发布时间:2020/11/20 16:33:44
--  
那就有点奇怪了,为何我的实盘反复会开仓呢?金字塔版本5.21,我用IF HOLDING=0 THEN BEGIN //若持仓为0在K线走完模式下保证只能信号只要出现一次,不管以后K线出现多少次同向信号都只开一次仓,但是在固定轮询下却反复开仓呢?所以才想到限制
 IF ENTRYLONGCOND&&mholding=0 THEN BEGIN //且满足开多条件

--  作者:banzhuan
--  发布时间:2020/11/20 16:42:48
--  
1、不管哪个版本都不会同根K上反复开仓,也有可能代码里不止一个buy语句,有多个开多语句。

2、您可以在盘中用最简单的策略去测试下

--  作者:sword8586
--  发布时间:2020/11/20 16:45:12
--  
我是实盘喔,老师,我用的是holding=0限制只开一手,棉花同向开了24手!难道固定轮询holding起不了作用!
--  作者:banzhuan
--  发布时间:2020/11/20 17:02:18
--  
一般测试都建议用simnow模拟交易,等策略稳定后才上实盘
--  作者:sword8586
--  发布时间:2020/11/20 18:51:03
--  
谢谢老师提醒采用simnow模拟交易。但是为何holding=0在固定轮询中限制不了开仓呢?求解!
--  作者:wenarm
--  发布时间:2020/11/22 16:55:30
--  

图表不支持是用注册表这类没有历史值的函数,会造成历史信号闪烁。自然holding作为图表的历史理论持仓,自然无法有效控制,因为它一直在变化。