以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- 此种手数情况如何编写? 如下图: 请问该如何编写,才能使每次建仓的手数相同? |
-- 作者: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 -- 好的,谢谢 |