以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  价格没有锁住  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=157200)

--  作者:haizxj
--  发布时间:2017/8/23 15:03:47
--  价格没有锁住

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游动,怎么回事


--  作者:FireScript
--  发布时间:2017/8/23 15:07:49
--  
锁住?你要的效果是什么样的呢?可否详细说下。
--  作者:haizxj
--  发布时间:2017/8/23 15:13:16
--  

AA:=ref(C,1)-ref(c,1)*0.02;

 

当开仓时,锁定这个开仓的价


--  作者:haizxj
--  发布时间:2017/8/23 15:22:49
--  

用 MMM:p1;查看

但是发现P1还是移动的,并没有锁锭这个价


--  作者:FireScript
--  发布时间:2017/8/23 15:31:04
--  
以下是引用haizxj在2017/8/23 15:22:49的发言:

用 MMM:p1;查看

但是发现P1还是移动的,并没有锁锭这个价

这个p1的赋值在开仓条件情况下就会触发,所以p1肯定在变了啊。 p1在被重新赋值之前都会保持上一次赋值的值。还要考虑历史上的开仓条件触发次数的影响,起始K位置也要固定下最好。


--  作者:haizxj
--  发布时间:2017/8/23 16:32:04
--  

怎么固定呢


--  作者:FireScript
--  发布时间:2017/8/23 16:36:42
--  
以下是引用haizxj在2017/8/23 16:32:04的发言:

怎么固定呢

如果你要给P1赋值一次之后不再赋值,那么可以添加一个条件 :

if p1=0 then p1:=aa; 

 

或者呢这样

N:BARSSINCE(buycond);

定位第一次开仓的位置,然后取得那个时候的P1值。

ref(p1,n);

 


--  作者:haizxj
--  发布时间:2017/8/23 16:39:33
--  

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

 

还是不好锁锭


--  作者:haizxj
--  发布时间:2017/8/23 16:45:48
--  

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

好像还不行

 


--  作者:wenarm
--  发布时间:2017/8/23 17:06:19
--  

VARIABLE p1:=0;

if C>O and HOLDING=0 then
 BEGIN
  开多:BUY(  1,1,LIMITR,c),IGNORECHECKPRICE;
      p1:=c;   
 end
aaaaa:p1;
类似上面的处理,把你的开仓条件全部放到if中,这样就不会每次都进入到判断语句内,造成p1被改变。