以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  关于仓位管理问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=173641)

--  作者:rao7310152
--  发布时间:2019/12/20 11:51:31
--  关于仓位管理问题
请问如何写 
第一次开仓后,符合平仓条件不平仓,等到第二次开仓后,符合第二次平仓条件再把第一次和第二次开仓的都平仓

--  作者:FireScript
--  发布时间:2019/12/20 13:54:26
--  
 如果是固定手的开仓。其实直接加一个对仓位的判断就行了。

--  作者:rao7310152
--  发布时间:2019/12/20 14:21:16
--  
不知道怎么描述,,
我每次开仓总仓位5%,如何描述
第一次开仓后,符合平仓条件不平仓,等到第二次开仓后,符合第二次平仓条件再把第一次和第二次开仓的都平仓

--  作者:FireScript
--  发布时间:2019/12/20 15:00:37
--  
 用全局变量可以做到的。
用下面代码做例子。你直接加载看信号。
input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6),n(9,1,100,10),p1(3,2,40,4),p2(3,2,40,4);//参数设置
VARIABLE:mark:=0;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
J:3*K-2*D;

DIFF : =EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  := EMA(DIFF,M);
MACD1 := 2*(DIFF-DEA), COLORSTICK;

macdjc:cross(diff,dea);//多头买入条件
macdsc:cross(dea,diff);//多头卖出条件
kdjjc:cross(k,d);//kdj金叉 空头卖出条件
kdjsc:cross(d,k);//空头买入条件

if macdjc   then
begin
mark:=mark+1;
buy(1,1,market);     
end

if macdsc and holding>0 and mark=2 then
begin
sell(holding>0 and macdsc,holding,market);
mark:=0;
end

DRAWICON(macdsc,l,2);


--  作者:FireScript
--  发布时间:2019/12/20 15:01:10
--  
笑脸位置就是符合平仓条件的K,都标识出来了。
--  作者:rao7310152
--  发布时间:2019/12/20 15:19:03
--  
全局变量只要把我的代码全部声明一下可以吗?有跨周期引用数据不要紧把
--  作者:FireScript
--  发布时间:2019/12/20 15:22:44
--  
就只需要申明一个全局变量就行了。不是把全部代码都申明一遍。
上面的简化下就这样,你自己替换成你的开仓,平仓条件进去就行了。
 VARIABLE:mark:=0;

if 开仓条件 then
begin
mark:=mark+1;
buy(1,1,market);     
end

if 平仓条件  and holding>0 and mark=2 then
begin
sell(holding>0,holding,market);
mark:=0;
end

--  作者:rao7310152
--  发布时间:2019/12/20 16:05:42
--  
if sd then sell(holding>0,0,market); //卖信号
sd2:日中<REF(日中,1);
if sd2 then sell(holding>0,0,market); //卖信号
LL10:ref(llv(l,10),ENTERBARS+1);
sd1:C<LL10;//卖出条件2
//交易系统
if kd   then
begin
mark:=mark+1;
buy(holding=0,5%,market),PERTRADER;   
end
if sd1 and holding>0 and mark=2 then
begin
sell(holding>0 and sd1,holding,market);
mark:=0;
end
DRAWICON(sd1,l,2);

这样写后,出现一个问题是,第一次开仓后,出现第一次平仓条件sd1确实没有平仓,但后面再出现第二个开仓信号没有开仓5%仓位,只有第一次的5%持仓

--  作者:FireScript
--  发布时间:2019/12/20 16:22:03
--  
 //交易系统
if kd   then
begin
mark:=mark+1;
buy(holding=0,5%,market),PERTRADER;   
end
--  作者:rao7310152
--  发布时间:2019/12/20 16:22:35
--  
该怎么改