VARIABLE p1:=0,p2:=0;
AA:=.......;//指定价AA
if kd then
BEGIN
开多:BUY(r1 AND HOLDING=0 and kd,1,LIMITR,aa),IGNORECHECKPRICE;
p1:=aa;
end
结果发现P1没有锁住,还是每根K游动,怎么回事
AA:=ref(C,1)-ref(c,1)*0.02;
当开仓时,锁定这个开仓的价
用 MMM:p1;查看
但是发现P1还是移动的,并没有锁锭这个价
用 MMM:p1;查看
但是发现P1还是移动的,并没有锁锭这个价
这个p1的赋值在开仓条件情况下就会触发,所以p1肯定在变了啊。 p1在被重新赋值之前都会保持上一次赋值的值。还要考虑历史上的开仓条件触发次数的影响,起始K位置也要固定下最好。
怎么固定呢
怎么固定呢
如果你要给P1赋值一次之后不再赋值,那么可以添加一个条件 :
if p1=0 then p1:=aa;
或者呢这样
N:BARSSINCE(buycond);
定位第一次开仓的位置,然后取得那个时候的P1值。
ref(p1,n);
if kd then
BEGIN
开多:BUY(r1 AND HOLDING=0 and kd,1,LIMITR,aa),IGNORECHECKPRICE;
p3:=BARPOS;
if BARPOS=p3 then
BEGIN
p1:=aa;
end
end
还是不好锁锭
if kd then
BEGIN
开多:BUY(r1 AND HOLDING=0 and kd,1,LIMITR,aa),IGNORECHECKPRICE;
if p1:=0 then p1:=aa;
end
if r1 and holding>0 and pd and aa>p1 then
BEGIN
平多:SELL(r1 and holding>0 and pd and aa>p1 ,1,LIMITR,aa),IGNORECHECKPRICE;
if p1>0 then p1:=0;
end
好像还不行
VARIABLE p1:=0;
if C>O and HOLDING=0 then
BEGIN
开多:BUY( 1,1,LIMITR,c),IGNORECHECKPRICE;
p1:=c;
end
aaaaa:p1;
类似上面的处理,把你的开仓条件全部放到if中,这样就不会每次都进入到判断语句内,造成p1被改变。