以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  不用K线结束做判断真的就不行吗?  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=89675)

--  作者:dualbridge
--  发布时间:2016/1/11 14:24:07
--  不用K线结束做判断真的就不行吗?
写一个海龟的修改版,不用K线结束做判断,跟踪多日,结果百思不得其解,特求救:

1.如果突破前高收盘也在最高点时,包括只开一手的持仓Done标志变化等变量一切正常,是我要的结果。
(同理,突破前低收在最低点时也正常,下面以破前高为例)
参考附图中的“开多”图标,相应的日志也正确记录了:
2016-01-11 09:59:37.617    【图表】IC13 运行完毕
2016-01-11 10:01:58.595    2016.01.11 10:01:58【图表】框架:Technic 触发下单 BUY 品种 RB05 下单K线 2016.01.11 15:00:00 公式:海鸥系统 〖SeaGull〗 窗格ID:0 代码行:16
2016-01-11 10:01:58.596    【图表】RB05 运行完毕

2.如果盘中突破前高但收盘没有收在最高点时,在盘中创新高时会有图标“开多”多次同步显示,证明触发开仓信号。但两点理解不了:

  (1)第一次显示图标“开多”后,Done置为1,下次轮询来临时,开仓条件不成立才对。为什么Done又变成0导致反复开仓呢? Done可是全局变量,只初始化一次才对!问题出在哪?
  (2)虽然盘中多次显示图标“开多”,但日志中没有任何记录,说明Buy语句没有执行!但屏幕上都显示了“多头成交变化:1” ,说明是Buy和Done语句都是执行了的?太奇怪了,怎么回事?

在K线内部,全局变量的机制有什么潜规则我们不知道?还是全局变量不能在K线内部用?不解!求大师解惑!


VARIABLE: Out_Long=0,Out_Short=0,Done=0;  //变量申明 
Clock:=currenttime,linethick0;          

成交:Done,linethick0;
多头止损价:Out_Long,linethick0;
空头止损价:Out_Short,linethick0;

Up:=ref(HHV(H,10),1),linethick0; 
Down:=ref(LLV(L,10),1),linethick0; 
Roof:max(up,H),linethick0;   
Base:min(down,L),linethick0;

If  Done=0   then  //空仓时   
    begin 
      if  C>=Roof then
          begin
             BUY(1,1,market);                       //开多
  
             Price_Long:enterprice;
             Out_Long:=enterprice-2;
            // 多头止损价:Out_Long,linethick0;
             // DRAWTEXT(1,LOW,\'开多\');
             Done:=1;
           多头成交变化:Done,linethick0;             
          end 
      if  C<=Base   then             
          begin
             BUYSHORT(1,1,market);                 //开空
 
             Price_Short:enterprice;
             Out_Short:=enterprice+2 ;             
             // 空头止损价:Out_Short,linethick0;
             // DRAWTEXT(1,H+1,\'开空\');
             Done:=-1;
            空头成交变化:Done,linethick0; 
          end
    End

If  Done>0  then             // 有多头仓位时
    begin

      if  C<=Out_Long  or  (CurrentTime <150000 and CurrentTime >144800)  then  
      begin
         SELL(1,1,market);           //平多
           //DRAWTEXT(1,H,\'平多\');
         Done:=0;
      end   
    end
       
if  Done<0  then            // 有空头仓位时
    begin

      if  C>=Out_Short   or  (CurrentTime <150000 and CurrentTime >144800) then     
      begin 
         SELLSHORT(1,1,market);     //平空
         // DRAWTEXT(1,L-1,\'平空\');
         Done:=0;
      end
    end

持仓:holding,linethick0;








--  作者:dualbridge
--  发布时间:2016/1/11 14:32:47
--  
图片点击可在新窗口打开查看抱歉,总说地址不对,发不了图:

C:\\fakepath\\QQ截图20160111143204.jpg

其实就是在K线下有一个箭头和“开多”两个字
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160111143204.jpg
图片点击可在新窗口打开查看

--  作者:jinzhe
--  发布时间:2016/1/11 14:34:07
--  

同一根k线上信号闪烁,当根k线没有结束时:如果当前信号满足,那么你的done就改了;如果当前的信号满足后就又消失了

那么改变的done,是要变回改变之前的。所以当前k线又出现了,这个时候done又改了。

所以:当一根k线没有完全走完时,done的值取决当前的信号:如果有信号,那么done会改变;如果没有或者信号消失了,那么done的直就是上个周期没有改变的值

[此贴子已经被作者于2016/1/11 14:35:39编辑过]

--  作者:dualbridge
--  发布时间:2016/1/11 15:13:17
--  
谢谢大师!

1. 即便是这样,当轮询满足条件执行时只是瞬间的事,所用时间应该远远小于两个Tick之间的空隙,在没有下一个Tick数据过来干扰的前提下,语句执行瞬间时的H和C应该是保持固定的(尽管这种固定的时间可能很短,会被后面的数据刷新,但这个很短的固定时间应该是足够的!),信号如何闪烁呢?

2. 退一步讲,当盘中创新高时,比方说,C有100次变成H时,即使运气不好轮询执行时漏掉50%的信号(漏掉和不漏掉的概率应该各占50%吧?),可只要有一次执行时被正好“撞”上了,那就应该执行相关语句才对!不会运气这么差满足条件的信号全部被漏掉???!

真的不好理解啊?!

有解决的办法吗?谢谢!

--  作者:jinzhe
--  发布时间:2016/1/11 15:22:58
--  

1.那就说明来新的tick了导致公式刷新了

2.也就是一根k线上反复闪烁就是没有开仓?你是不是用了走完k线的下单模式?


--  作者:dualbridge
--  发布时间:2016/1/11 15:33:45
--  
答复:
1. 从日志上看,整个程序执行一遍,所需时间在10MS以内,远小于一个TICK的500MS。所以新的TICK数据刷新一说难以成立!
2. 用的是固定时间间隔1秒。 我就是因为很抗拒用K线模式(理由暂且略去)才这样编写程序。

感觉大师也似乎站在我这一边了?

--  作者:jinzhe
--  发布时间:2016/1/11 15:41:19
--  
把你的日志发上来看看
--  作者:dualbridge
--  发布时间:2016/1/11 15:47:53
--  
好的,准确地说,整个程序执行一遍的时间才14毫秒。(间隔1秒)
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:pleaceorder.txt



--  作者:jinzhe
--  发布时间:2016/1/11 15:58:46
--  
从日志里面看,就一个对IC13下单触发,用户是对指数进行交易了?
--  作者:dualbridge
--  发布时间:2016/1/11 17:03:56
--  
嗯,虚拟盘交易,验证算法之用。

只要是突破的光头阳线或光脚阴线,结果是正确的,何预期一样。

如果不是,而是盘中突破的阳线或阴线,应该开仓,但结果没有!郁闷.....

发几张图供参考。

 
UploadFile/2016-1/2016111173119655.jpg[/upload]
UploadFile/2016-1/2016111173112197.jpg[/upload]
UploadFile/2016-1/2016111173182374.jpg[/upload]