以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  此种手数情况如何编写?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=150022)

--  作者:jjjfk
--  发布时间:2017/4/5 9:15:46
--  此种手数情况如何编写?

如下图:


此主题相关图片如下:图片1.jpg
按此在新窗口浏览图片


请问该如何编写,才能使每次建仓的手数相同?



--  作者:yukizzc
--  发布时间:2017/4/5 9:20:40
--  

buy(1,1,marketr)

这样就是1手


--  作者:jjjfk
--  发布时间:2017/4/5 10:18:21
--  
不是这样。我第一次建仓的手数是通过资金的2%/ATR倍数得出来的,比如算出来手数是a1,我可以做到让第二次建仓的手数也是a1,即ref(a1,enterbars); ,但是第二次开仓之后的手数却不是固定为a1,而是变化的。我想把我随后所有的加仓的手数都固定为第一次开仓的手数,就像上图那样,该如何编写?
--  作者:wenarm
--  发布时间:2017/4/5 10:31:59
--  

你这种算法处理,每次开仓是时都会根据当前的资金去计算手数、

你如果只想在第一次计算时计算手数,后面统一按这个数量开仓,用全局变量标记计算

VARIABLE:flag=0;

 

if flag= 0 then  begin

  2%/ATR;

  flag:= 1;

end


--  作者:jjjfk
--  发布时间:2017/4/5 13:30:45
--  
我知道以下这样写应该是错的,按照你的意思,应该怎样写呢?

a1:0.01*valuewhen(barpos=1,asset);        //初始资金的1%
a2:floor(a1/(2*atr));                         //开仓手数

//第一次建仓
if cond1 
then begin 
buy(1,a2,marketr);

//第n次建仓
b1:ref(a2,enterbars);
variable:n=0; flag=0;
if cond2
then begin
buy(1,b1,marketr);
n:=n+1;
flag:=1;
end

--  作者:yukizzc
--  发布时间:2017/4/5 13:33:39
--  

if holding=0 and cond then

begin

n:=你计算出的手术;

buy();

end

 

用n记录第一次空仓开仓的数量就可以了


--  作者:jjjfk
--  发布时间:2017/4/5 15:04:49
--  
真的可以了,谢谢!
--  作者:jjjfk
--  发布时间:2017/4/5 15:21:10
--  
再请问一下,如何编写 “保证金占用不超过总资金的50%”?
--  作者:qq代人发帖
--  发布时间:2017/4/5 15:23:20
--  

保证金占用:TACCOUNT(28)

总资金:tasset


--  作者:jjjfk
--  发布时间:2017/4/5 15:35:31
--  
好的,谢谢