在后面的测试中发现问题,找不到根本原因!

 

请参考下面回测后的屏幕截图。

图片中也显示了3个关于奇怪事情的问题。

我阅读了iCustom的使用方法,并反复检查我的EA和指标,最终没有找到根本原因。

请紧急帮助,非常感谢!

(*.你可以点击屏幕截图打开并放大,以便更清楚地看到问题)

这是 "反向 "指标的关键代码(其他代码用"...... "代替,以便明确关键代码的内容)。

int OnInit()
  {
   IndicatorBuffers(8);
   ....
   SetIndexBuffer(6,ExtBuffer1);
   ....
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   ...
   ...

   for(i=limit-1; i>=0; i--)
     {
      ...
      Value=...;
      ExtBuffer0[i]=MathLog((1+Value)/(1-Value));
      if(ExtBuffer0[i]>0) ExtBuffer1[i]=10;
      else ExtBuffer1[i]=-10;
     }

   ...
   ...
  }

这是EA中使用该指标的关键代码(其他代码用"...... "代替,以便明确关键代码)。

...
...

void Reverse()
  {
   Joy1=iCustom(Symbol(),0,"Reverse",6,1);
   Joy2=iCustom(Symbol(),0,"Reverse",6,2);
  }

void openPosition()
  {
   ...
   if(Joy2<=-10 && Joy1>=10) 
    {
    r=OrderSend(Symbol(),OP_BUY,lotSize,Ask,slippage,0,0,TradeComment,MAGIC,0,clrMediumBlue);
    ...
    }
   else if(Joy2>=10&& Joy1<=-10) 
    {
    r=OrderSend(Symbol(),OP_SELL,lotSize,Bid,slippage,0,0,TradeComment,MAGIC,0,clrMediumVioletRed);
    ...
    }
   ...
   }
void closePosition()
  {
   ...
    if(openType==OP_BUY && Joy2>=10 && Joy1<=-10)
     for(i=OrdersTotal();i>=1; i--)
         if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==MAGIC)
           {
            r=OrderClose(OrderTicket(),OrderLots(),Bid,slippage,clrDodgerBlue);
            ...
            }
   else if(openType==OP_SELL && Joy2<=-10 && Joy1>=10) 
    for(i=OrdersTotal();i>=1; i--)
         if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==MAGIC)
           {
            r=OrderClose(OrderTicket(),OrderLots(),Ask,slippage,clrDeepPink);
            ...
            }
   ...  
  }
void OnTick()
  {
   ...
   Reverse();
   openPosition();
   closePosition(); 

}

 

现在我重新创建了指标文件,黄线绘制 问题得到了解决。

但是,另外两个问题仍然没有任何头绪。请帮帮我吧!

 

问题可能来自于你的指标

 if(ExtBuffer0[i]>= 0) ExtBuffer1[i]=10;
      else ExtBuffer1[i]=-10;

同时检查 你的EmptyValue

 
ffoorr:

问题可能来自于你的指标

也请检查你的EmptyValue

亲爱的ffoorr,应该没有空值,你可以看到黄线。

 

如果如果(ExtBuffer0[i]==0)

按照你的SetIndexEmptyValue中的内容,你会有一个洞,一个空洞。

该行将不会被打印出来,直到下两个数据。


否则,检查 你的指标的指数,看起来信号是晚了一格。

否则,在没有看到指标代码的情况下,没有人能够知道。


你是否在使用一些Fisher指标?

 

亲爱的ffoorr,非常感谢你的帮助。但我用代码检查了 该指标,可以确认没有空值。

我重新安装了tick story和MT4,问题仍然存在。所以我还在检查。

 

jollydragon

如果没有SetindicatorEmptyValue,那么空值就是EMPTY_VALUE

那么如果你的代码if( ExtBuffer1[i]!= 10 ) Open_Order()

如果ExtBuffer1[i]是==EMPTY_VALUE,你就会有一个订单。


但我也不知道这是否是问题的原因。

 

亲爱的ffoorr,我添加了一些代码来显示ExtBuffer1[i] 的数据,如果ExtBuffer1不是10或-10。最后我什么也没得到,它证明ExtBuffer1在每个柱子上都是10或-10

我还将指标更新为只有2个缓冲区的2行。你可以看到一个是白色的,一个是黄色的。我在我的EA中使用黄线的数据。

请参考下面的数据,你可以看到当订单发生变化时,正是因为黄线的数据在变化。下面的'1'意味着订单打开或关闭前的黄线数据,'2'意味着'1'之前的黄线数据。这也是我处理订单打开和关闭的方式。

我也反复检查了指标代码,所以我可以确认该指标是根据它之前的条形图计算的,因此不是一个渔夫指标。

然而,你可以看到订单的变化仍然与黄线(信号)不一致。

这真是太奇怪了!可能的根本原因是什么?谁能帮助我,我将非常感激?

2013.04.30 04:00:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 08:30:01:    1:  10.0, 2: -10.0-error:       0

2013.04.30 08:30:02:    1:  10.0, 2: -10.0-error:       0

2013.04.30 09:30:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 09:30:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 16:30:00:    1:  10.0, 2: -10.0-error:       0

2013.04.30 16:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 18:00:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 18:00:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 22:00:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 22:00:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 22:30:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 22:30:00:    1: -10.0, 2:  10.0-error:       0

2013.05.02 15:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.02 15:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.02 16:03:26:    1:  10.0, 2:  10.0-error:       0

 
哦,我的上帝。我还是没有任何想法。怎么了?
 
jollydragon: 哦,我的上帝。我还是不知道这个问题。怎么了?
  1. 我们怎么会知道呢?你还没有公布所有的 代码。(没有指标,没有iCustom,没有循环)。
  2. 你说,指标仍有10,但(第一张)图片显示有空隙。我们不知道你的光标在哪里。它是在缺口上吗?
  3. 你不知道,因为你没有信息。在包括变量值的if 之前和里面添加打印 语句,然后追踪它。
 

亲爱的,事实上我已经为你减去了关键代码,以节省你的时间。

然而,我们非常感谢您的帮助,在此让我附上EA和指标的文件。

请注意,文件名在附上后自动改变。在两个词之间插入了一个随机的字母。在我的电脑中,它们是 "Trade Joy "和 "Solar Joy"。

期待您的解答。)

附加的文件:
tradebjoy.mq4  12 kb
trademjoy.ex4  17 kb
solarxjoy.mq4  7 kb
solarcjoy.ex4  8 kb
原因: