以文本方式查看主题

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

--  作者:chyhao
--  发布时间:2014/10/28 13:25:57
--  策略没有开仓信号

BUY(C>O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
sell(C=LLV(C,3)&&HOLDING>0,HOLDING,THISCLOSE);
BUYSHORT(C<O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
SELLSHORT(C=HHV(C,3)&&HOLDING<0,HOLDING,THISCLOSE);

 

简单写了个测试策略,限定一根K线只能够出一个信号,但是加载到主图没有信,麻烦老师们帮忙看看什么问题,谢谢


--  作者:jinzhe
--  发布时间:2014/10/28 13:37:05
--  

variable:n=0;

if n=0 and holding=0 and c>o then begin

    buy(1,1,market);

    n:=1;

end

if n=0 and holding=0 and c<o then begin

    buyshort(1,1,market);

    n:=1;

end

if n=1 then begin

  BUY(C>O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
  sell(C=LLV(C,3)&&HOLDING>0,HOLDING,THISCLOSE);
  BUYSHORT(C<O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
  SELLSHORT(C=HHV(C,3)&&HOLDING<0,HOLDING,THISCLOSE);

end


--  作者:chyhao
--  发布时间:2014/10/28 14:28:51
--  
老师能否解释下为什么上边要用到全局变量,谢谢
--  作者:jinzhe
--  发布时间:2014/10/28 14:30:39
--  

先写第一次开仓,后面的是后续开仓

 

你那样写不觉得逻辑有问题吗?开仓条件是平仓周期,而没有开仓,那么平仓周期哪里来呢?


--  作者:chyhao
--  发布时间:2014/10/28 14:53:25
--  
哈哈,明白了,谢谢
--  作者:chyhao
--  发布时间:2014/10/28 14:54:46
--  

LLV 函数在逐K线模式下不能直接在IF控制语句之内引用。请参阅帮助公式部分的解决方案。

 

上边的策略出现这个问题,请问该怎么解决?


--  作者:jinzhe
--  发布时间:2014/10/28 15:05:52
--  

variable:n=0;

l3:=llv(c,3);

h3:=hhv(h,3);

if n=0 and holding=0 and c>o then begin

    buy(1,1,market);

    n:=1;

end

if n=0 and holding=0 and c<o then begin

    buyshort(1,1,market);

    n:=1;

end

if n=1 then begin

  BUY(C>O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
  sell(C=l3 and HOLDING>0,HOLDING,THISCLOSE);
  BUYSHORT(C<O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
  SELLSHORT(C=h3 and HOLDING<0,HOLDING,THISCLOSE);

end


--  作者:chyhao
--  发布时间:2014/10/29 17:42:02
--  

我增加一个条件,平多后超过5个周期才能开空,平空后超过5个周期才能开多,代码如下:

 

variable:n=0;

l3:=llv(c,3);

h3:=hhv(h,3);

D1:=VALUEWHEN(EXITBARS=0&&HOLDING=0,REF(HOLDING,1))>0 and EXITBARS>5;//平多后超过5个周期才开空
D2:=VALUEWHEN(EXITBARS=0&&HOLDING=0,REF(HOLDING,1))<0 and EXITBARS>5;//平空后超过5个周期才开多

if n=0 and holding=0 and c>o then begin

    buy(1,1,market);

    n:=1;

end

if n=0 and holding=0 and c<o then begin

    buyshort(1,1,market);

    n:=1;

end

if n=1 then begin

  BUY(C>O&&EXITBARS>0&&HOLDING=0&&D2,1,THISCLOSE);
  sell(C=l3 and HOLDING>0,HOLDING,THISCLOSE);
  BUYSHORT(C<O&&EXITBARS>0&&HOLDING=0&&D1,1,THISCLOSE);
  SELLSHORT(C=h3 and HOLDING<0,HOLDING,THISCLOSE);

end

 

但是加载在主图上没有信号,是不是哪里写错了,麻烦老师检查一下,谢谢


--  作者:jinzhe
--  发布时间:2014/10/30 8:56:59
--  

variable:n=0;

l3:=llv(c,3);

h3:=hhv(h,3);

 

if n=0 and  holding=0 and  c>o then begin

    buy(1,1,market);

    n:=1;

end

if n=0 and  holding=0 and  c<o then begin

    buyshort(1,1,market);

    n:=1;

end

if n=1 then begin
  SELLSHORT(C=h3 and  HOLDING<0,HOLDING,THISCLOSE);
  BUY(C>O and EXITBARS>5 and HOLDING=0 ,1,THISCLOSE);
  sell(C=l3 and  HOLDING>0,HOLDING,THISCLOSE);
  BUYSHORT(C<O and EXITBARS>5 and HOLDING=0 ,1,THISCLOSE);
 

end


--  作者:chyhao
--  发布时间:2014/10/30 13:08:27
--  

上边的这种写法,只是平仓后超过5个周期才开仓,并没有区分平多或者平空啊