Fehler, Irrtümer, Fragen - Seite 1429

 
Vladimir Pastushak:

Überlastung der Funktion

...und was dann?
 
Joo Zepper:
...und was dann?

Sie haben zwei identische Methoden deklariert, was nicht zulässig ist; im Falle von Überladung müssen die Methoden mit einem Satz interner Parameter aufeinander reagieren.

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

Sie haben zwei identische Methoden deklariert, was nicht zulässig ist; beim Überladen müssen die Methoden aufeinander mit einem Satz interner Parameter reagieren.

Ich bin mir der Überlastung bewusst. Aber das ist nicht das, was ich meinte - der ME-Compiler bemerkt den Fehler nicht, im Gegensatz zum Konsolen-Compiler.
 
Joo Zepper:
Ich bin mir der Überlastung bewusst. Aber das ist nicht das, was ich meinte - der ME-Compiler bemerkt den Fehler nicht, im Gegensatz zum Konsolen-Compiler.
Ja, das stimmt, das ist mir auch aufgefallen.
 
Joo Zepper:
Ich bin mir der Überlastung bewusst. Aber das ist nicht das, was ich meinte - der ME-Compiler bemerkt den Fehler nicht, im Gegensatz zum Konsolen-Compiler.
Der Fehler wird erst bemerkt, wenn Sie den Körper dieser Methode deklarieren. Das heißt, es hat keine Auswirkungen auf die Programmausführung.
 
Ilya Malev:
Es erkennt einen Fehler erst, wenn Sie den Körper der Funktion deklarieren. Das heißt, sie hat keine Auswirkungen auf die Programmausführung.
Das bedeutet jedoch nicht, dass es nicht notwendig ist, das Verhalten des ME-Compilers zu korrigieren.
 
Joo Zepper:
Das bedeutet jedoch nicht, dass es nicht notwendig ist, das Verhalten des ME-Compilers zu korrigieren.
In der Tat akzeptiert der Compiler das Prefetching - wird es behoben, wird ein Fehler ausgegeben.
 

Wie kann das sein?

Es gibt einen "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);
  }
//+------------------------------------------------------------------+

Und einen "Indikator", der im EA-Testfenster installiert ist:

//+------------------------------------------------------------------+
//|                                               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);
  }
//+------------------------------------------------------------------+

Das Ergebnis der Arbeit auf dem Bildschirm:

TickTest01

Das Ergebnis der Arbeit in Protokollen (Fragment):

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

Die im EA und im Indikator angezeigten Werte sind unterschiedlich.

Es scheint, dass der EA die Daten des Testers und der Indikator die aktuellen Daten des Instruments nimmt, auf dem der EA getestet wird.

Freigabe 902.

Dateien:
 
Yury Kirillov:

Wie kann das sein?

Es gibt einen "EA":

Und einen "Indikator", der im EA-Testfenster installiert ist:

Das Ergebnis wird auf dem Bildschirm angezeigt:

Das Ergebnis der Arbeit in Protokollen (Fragment):

Die im EA und im Indikator angezeigten Werte sind unterschiedlich.

Es sieht so aus, als ob der EA Daten vom Tester übernimmt und der Indikator aktuelle Daten des Instruments, an dem der EA getestet wurde.

Freigabe 902.

Vielen Dank für Ihr Feedback! Behoben.
 

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

Vielen Dank für Ihre Antwort!

Wurde das Problem bereits behoben?

Oder ist sie in der nächsten Version enthalten?