エラー、バグ、質問 - ページ 1429

 
Vladimir Pastushak:

機能の過負荷

...で、どうする?
 
Joo Zepper:
...で、どうする?

同じメソッドを2つ宣言していますが、これは許されません。オーバーロードの場合、メソッドは 内部パラメータのセットで互いに応答しなければなりません。

class C_A
{
  void B(int a);
  void B(double a);
};
 
Vladimir Pastushak:

同じメソッドを2つ宣言していますが、これは許されません。オーバーロードの場合、メソッドは 内部パラメータのセットで互いに応答しなければなりません。

過負荷を意識している。しかし、そういうことではありません。MEコンパイラは、コンソールコンパイラとは違って、エラーに気づきません。
 
Joo Zepper:
過負荷を意識している。しかし、そういう意味ではなく、MEコンパイラはコンソールコンパイラと違って、エラーに気づかないのです。
そうですね、それは私も気づきました。
 
Joo Zepper:
過負荷を意識している。しかし、そういうことではありません。MEコンパイラは、コンソールコンパイラとは違って、エラーに気づきません。
このメソッドのボディを宣言するまで、エラーに気づきません。つまり、プログラムの実行に 影響を与えない。
 
Ilya Malev:
その関数の本体を宣言するまで、エラーを検出しない。つまり、プログラムの実行には 何の影響も及ぼさない。
しかし、これはMEコンパイラの挙動を修正する必要がないことを意味するものではありません。
 
Joo Zepper:
が、これはMEコンパイラの挙動を修正する必要がないことを意味するものではありません。
実際、コンパイラはプリフェッチを許容しており、修正するとエラーが発生します。
 

どうしてでしょう?

EA」があります。

//+------------------------------------------------------------------+
//|                                               Exp_TickTest01.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Comment("Exp Ask>>",Ask);
   Print("Exp Ask>>",Ask);
  }
//+------------------------------------------------------------------+

そして、EAのテストウィンドウにインストールされた「インジケーター」。

//+------------------------------------------------------------------+
//|                                               Ind_TickTest01.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   IndicatorShortName("Ind Ask>>"+DoubleToString(Ask,_Digits));
   Print("Ind Ask>>"+DoubleToString(Ask,_Digits));   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

スクリーンに映し出される仕事の成果。

ティックテスト01

過去ログの作業結果(断片)。

2015.11.12 10:07:50.801 2015.11.11 02:17  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.801 2015.11.11 02:17  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.07429
2015.11.12 10:07:50.737 2015.11.11 02:17  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.737 2015.11.11 02:17  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.0743
2015.11.12 10:07:50.673 2015.11.11 02:16  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.673 2015.11.11 02:16  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.0743
2015.11.12 10:07:50.609 2015.11.11 02:16  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.609 2015.11.11 02:16  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.07429
2015.11.12 10:07:50.545 2015.11.11 02:16  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.545 2015.11.11 02:16  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.07428
2015.11.12 10:07:50.481 2015.11.11 02:16  Ind_TickTest01 EURUSD,M1: Ind Ask>>1.07496
2015.11.12 10:07:50.481 2015.11.11 02:16  Exp_TickTest01 EURUSD,M1: Exp Ask>>1.07427

EAとインジケーターで表示される数値が違う。

EAはテスターから、インジケータはEAがテストされているインストゥルメントの現在のデータを取得するようです。

リリース902号

ファイル:
 
Yury Kirillov:

どうしてでしょう?

EA」があります。

そして、EAのテストウィンドウにインストールされた「インジケーター」。

その結果が画面に表示されます。

過去ログの作業結果(断片)。

EAとインジケーターで表示される値が異なる。

EAがテスターからデータを取得し、インジケーターがEAがテストされた計測器の現在のデータを取得しているように見えます。

リリース902号

ご感想をお寄せいただきありがとうございました。固定されています。
 

Alexander:
Спасибо за обращение! Исправлено.

ご返信ありがとうございました

もう直ったのでしょうか?

それとも次のリリースにあるのでしょうか?