以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  如何启动时从1手开始执行?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=171692)

--  作者:der4788
--  发布时间:2019/8/19 9:09:48
--  如何启动时从1手开始执行?
老师你好,我的模型是逐渐加仓模型,代码如下;  我想当我启动的时候从1手开始,逐渐的加到10手;  现在的情况是,加载后一开仓就是10手,对吗?如何设置?

A1:=开多;
B1:=开空 ;

VARIABLE:ss:=1;

if A1 and holding=0 then 
begin 
buy(holding=0,ss,market);    //开多
end 

if B1 and holding>0 then 
begin 
sell(holding>0,holding,market);    //平多
ss:=if(ss<xx1,ss+1,ss);
end 

--  作者:FireScript
--  发布时间:2019/8/19 9:20:53
--  
 是不是历史K太多了,历史上交易了很多次了。因此在在最新K上它早就递增了很多次了吧。
--  作者:der4788
--  发布时间:2019/8/19 9:29:56
--  
是啊,就是问怎么解决这个问题啊?
--  作者:wenarm
--  发布时间:2019/8/19 9:37:03
--  

你全局变量只累加,没有复位,当然到10后,就不变了。下面这段逻辑有问题吧

你平图表全部持仓,平完之后SS应该是重置为1.

if B1 and holding>0 then 
begin 
sell(holding>0,holding,market);    //平多
ss:=if(ss<xx1,ss+1,ss);
end 

--  作者:FireScript
--  发布时间:2019/8/19 9:46:22
--  
 这个不行。你如果要从程序化启动时候再从1开始逐渐加仓这个是做不到的。或者你可以在策略里面定期对这个ss进行重置。比如每日收盘重置开仓手数。