bigzhang 发表于 2013-8-1 17:35:02

请问这两种表示方法有差别没?特别是实盘中

请教一下,这两种方法在实战中有什么差别吗?
Line =  Highest(Close, N);
if(open>Line) {...}

Line =  Highest(Close, N);
if(open>Line) {...}

从数据上看好像是一样的。但是我今天在开盘那一刻触发的交易中产生了一些问题,在排查中,现在就想问问:
- 第一种写法对的不?
- 这两种写法,实盘交易里有什么差别没?特别是开盘的时刻?

谢谢!

bigzhang 发表于 2013-8-2 09:45:45

今天实盘,第一种产生了信号消失的提示。。。
有点不好理解了,准备改成第二种再实盘看看,或者是其它哪里还有问题。

小米 发表于 2013-8-2 10:01:32

bigzhang 发表于 2013-8-2 09:45 static/image/common/back.gif
今天实盘,第一种产生了信号消失的提示。。。
有点不好理解了,准备改成第二种再实盘看看,或者是其它哪里 ...

仅你所写的部分内容,是没有信号消失的情况。
建议从整个公式来排查信号消失的原因。

bigzhang 发表于 2013-8-2 10:12:58

本帖最后由 bigzhang 于 2013-8-2 10:16 编辑

我的源码这部分就是个简单的浮板触发,上浮板是这样的,取一个固定周期的最高值:
  High_M = Highest(Close,MDay_T);
然后交易指令是这样的:
  If(MarketPosition == 0 And High>=High_M  And Time>=Time_StartTrading/10000 And time<Time_StopTrading/10000 )
     {
          Buy(Lots, High_M  );}  
     }       

今天早上9:06,Ru上涨触发了,但是跟着软件就提示信号消失。交易单子倒是发出去了。
图上看了半天确实没看出个问题来。
我继续观察中。
附图:图表上的显示

附图:出错告警

小米 发表于 2013-8-2 10:33:54

bigzhang 发表于 2013-8-2 10:12 static/image/common/back.gif
我的源码这部分就是个简单的浮板触发,上浮板是这样的,取一个固定周期的最高值:
  High_M = Highest(Clos ...

其它逻辑呢?有没有上层条件?

bigzhang 发表于 2013-8-2 10:39:10

前面就没有和交易相关的逻辑判断了,只是简单的计算个取样周期,就是上面那个MDay_T,不过这个就是固定数的计算。

因为在排查问题,所以几乎是能简化的都简化了。

我现在在程序里加了段数据记录的代码,把当前的价格啥的记录到个文件里去,等着出问题,然后看看是咋回事。

小米 发表于 2013-8-2 11:25:53

本帖最后由 小米 于 2013-8-2 11:27 编辑

bigzhang 发表于 2013-8-2 10:39 static/image/common/back.gif
前面就没有和交易相关的逻辑判断了,只是简单的计算个取样周期,就是上面那个MDay_T,不过这个就是固定数的 ...

不一定与交易相关的。
比如说你前面有某个条件判断 并return的。这个判断以及return也会导致此提示哟。
出现此提示,就一定是有信号消失的隐患啊,除了系统的分析代码排查问题,别无它法。而这个排查不能只看这一句的。

bigzhang 发表于 2013-8-2 12:20:40

谢谢版主提醒,这对我确实是个大隐患,只是这段指令被精简了很多,一时之间实在看不出哪里有问题,而且它只是出在信号突破的时候,今天另外测试的几个商品也有的产生了触发信号,但是都还没产生这样的出错提示,所以只好耐心等待它再次出错了。

你说return,倒是有一句,不过这个是开盘时候用的:
  //---防止开盘集合竞价----------
If(BarStatus==2 && Time==0.090000 && High==Low) return;  
感觉也不像,因为今天的问题是在9:06出的。

我准备把这套指令,分别用1楼的两种写法,加载在两台电脑上,然后同时运行。
假设同时出错,那可以排除是这个指令引起的,我就再查其它啥问题引起的。
假设其中一个出错,那可能就是这写法在哪里还是被系统认为是不同的。

bigzhang 发表于 2013-8-2 12:25:09

本帖最后由 bigzhang 于 2013-8-2 12:28 编辑

小米 发表于 2013-8-2 11:25 static/image/common/back.gif
不一定与交易相关的。
比如说你前面有某个条件判断 并return的。这个判断以及return也会导致此提示哟。
...

这是这段的完整代码,直到开仓,后面就是平仓的了。我尽量加了注释。麻烦帮我看看,谢谢!//---防止开盘集合竞价----------
If(BarStatus==2 && Time==0.090000 && High==Low) return;  
  //---初始化
  //---计算均线参数,转换天数到分钟数对应的均线取值------
If(BarType==0) {  MDay_T = MDay;   }
If(BarType==1)
  {
   If(Lower(SymbolType)=="if"){MinutesPerDay=270;} //如果是股指,一天270分钟交易时间
   Else {MinutesPerDay=225;}
   MDay_T = Round(MDay*MinutesPerDay/BarInterval,0); //计算当前采用的时间周期下按天折算,有多少根bar
  }  
  //---取得最近N、M日的最高最低
   High_M = Highest(Close,MDay_T);
   Low_M =  Lowest(Close,MDay_T);
  //---画线   
  PlotNumeric("High_M",High_M,0,LightGray);
  PlotNumeric("Low_M",Low_M,0,LightGray);
  //==========多头交易============
  //---多头开仓
  If(MarketPosition == 0 And High>=High_M  And Time>=Time_StartTrading/10000 And time<Time_StopTrading/10000 )
     {
          Buy(Lots, High_M); }
      }         
。。。。。。。。。。。

小米 发表于 2013-8-2 14:02:19

bigzhang 发表于 2013-8-2 12:25 static/image/common/back.gif
这是这段的完整代码,直到开仓,后面就是平仓的了。我尽量加了注释。麻烦帮我看看,谢谢! ...

嗯。这里的return不会导致 问题,原因不是这个。
从上述代码里,我也看不出有什么可导致信号消失的可能。
建议将公式里加上注释信息,对每一个条件下产生的信号加识别信息,从而定位出问题的出自的条件。
最好将条件所使用到的变量写入fileappend里,以便更进一步排查。
页: [1] 2
查看完整版本: 请问这两种表示方法有差别没?特别是实盘中