Fehler, Irrtümer, Fragen - Seite 2816

 
fxsaber:

Ich erinnere mich, dass es, als ich mich mit diesem Thema beschäftigte, viele Nuancen gab. Je nach der Funktion OnTester* wurde etwas richtig oder falsch angezeigt. Versuchen Sie, es in verschiedenen On-Funktionen aufzurufen.

Was meinen Sie mit anders? Ich brauche es in OnTesterInit - es gibt keine anderen Optionen.

 
Stanislav Korotky:

Was meinen Sie mit anders? Ich brauche es in OnTesterInit - keine anderen Optionen.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wanzen, Wanzen, Fragen

fxsaber, 2017.08.15 17:49

ParameterGetRange funktioniert nicht in OnTesterInit.
sinput int Range = 5;

#define  PRINT(A) Print(#A + " = " + (string)(A));

void PrintParameter( const string Name, const string From )
{
  PRINT(From)
  
  bool Enable;
  long Value, Start, Step, Stop;
  
  if (ParameterGetRange(Name, Enable, Value, Start, Step, Stop))
  {
    PRINT(Start)
    PRINT(Step)
    PRINT(Stop)
    PRINT(Value)
    PRINT(Enable)
  }   
}

void OnTesterInit()
{
  ParameterSetRange("Range", true, 5, 1, 2, 3); // Задали ненулевыми все значения
  
  PrintParameter("Range", __FUNCTION__); // Возвращает одни нули
}

void OnTesterDeinit()
{
  PrintParameter("Range", __FUNCTION__); // Работает нормально
  
  ChartClose();
}

void OnTesterPass()
{
  PrintParameter("Range", __FUNCTION__); // Работает нормально
}

int OnInit()
{
  uchar Data[];
  
  FrameAdd(NULL, 0, 0, Data);
  
  return(INIT_FAILED);
}
 
fxsaber:

Dies bestätigt nur meinen Testfall: Das Setzen eines Parameters in MQL hat keine Auswirkung auf sein anschließendes Lesen in OnTesterInit. Bei den anderen Handlern ist es zu spät, etwas zu ändern, da die Durchgänge durch die Anfangseinstellungen festgelegt sind.

 
In Kürze
#import "z.ex5" //(1) Error: '#import' - #import was not closed
#import
/*
.
.
.
*/
#import "z.ex5" //(2)

Der 2. #import ist nicht geschlossen, aber der Fehler ist auf dem 1. - daher wird der tatsächliche Fehlerort falsch angezeigt - ich habe lange gebraucht, um herauszufinden, was falsch war

 
Kompilierungsfehler:
class A {};
class B {
public:
    static A a;
} b;  //Error: unresolved static variable 'B::a'
A B::a;
void OnStart() {}
 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von Neulingen zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes" verschoben.
 

Funktion:

CopyTicksRange(_Symbol, _ticks, COPY_TICKS_ALL);

im Tick-Erzeugungsmodus gibt maximal 131072 Ticks zurück. Handelt es sich dabei um einen Fehler, eine Funktion oder ist in der Dokumentation etwas darüber zu finden?

Im Modus "Echte Ticks" gibt es keine solche Einschränkung.

 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von MQL4 MT4 MetaTrader 4 Anfängern" verschoben.
 
Ist das aktuelle Verhalten korrekt, wenn der Expert Advisor im Frame-Modus auf dem Terminal-Chart mit den Standard-Eingabeparametern startet und nicht mit denen, die auf der Registerkarte "Tester-Parameter" eingestellt sind?
 
Ist es möglich, das Diagramm vor Zeitrahmen- und Symboländerungen zu schützen?