Fehler, Irrtümer, Fragen - Seite 1035

 
A100:
Haben Sie jemals gesehen, dass es als "Wort Hallo" ausgegeben wird?

Lesen Sie noch einmal genau, was ich Ihnen geschrieben habe. Berechnung, nicht Ausgabe.

Dies ist ein i += ++i +++ Ausdruck

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

MetaDriver, 2013.08.03 17:55

"

Wenn Sie sicher sein wollen, dass Sie eine Eingabe auf der rechten Seite des Bildschirms haben.

Für meine Zwecke ist das nicht immer geeignet, aber im Allgemeinen würden damit viele "Wochenendprobleme" beseitigt werden.

FürExperten für Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien.

Wanzen, Wanzen, Fragen

MetaDriver, 2013.08.03 18:02

...

Es wäre auch nützlich "Befehl" programmatisch erzwungene Nullung aller prev_calculated für das ausgewählte Symbol. Mit anschließender Zeckenerzeugung wäre das eine gute Kombination.

Meine Herren, haben Sie etwas zu diesem Thema geplant?


 
TheXpert:

Lesen Sie noch einmal genau, was ich Ihnen geschrieben habe. Berechnung, nicht Abzug.


Sie haben recht, wenn Sie die Momente trennen: Berechnung der Funktionsargumente, Substitution dieser Argumente und Berechnung der Funktion selbst. Dieses Skript - zeigt, dass sowohl die Argumente von links nach rechts als auch der Ausdruck selbst von links nach rechts berechnet werden:

int f( int x )  { Print( __FUNCTION__ + "(" + x + ")" ); return ( x ); }

void OnStart()
{
        int a = 0x0;
        int b = f(a+=1) << f(a+=2) << f(a+=3);
	Print( "b=" + b );
}
Результат:
f(1)
f(3)
f(6)
b=512
 
Können Sie mir bitte den Unterschied zwischen extern und statisch erklären, was ist die globale Lebensdauer?
//Test.mqh
extern int e1;
static int s1;

#import "testLib.ex5"
        void f();
#import
//test.mq5
#include "Test.mqh"

void OnStart()
{
        e1 = 10;
        s1 = 10;
        f();
}

//testLib.mq5

#property library
#include "Test.mqh"

void f() export
{
        Print( "e1=" + e1 );
        Print( "s1=" + s1 );
}
Результат:
e1 = 0 //не понятно
s1 = 0 //нормально
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Silent:
Nicht das?

Nein - hier wird eine uninitialisierte Standardklasse verwendet.

Alle meine Kurse sind selbst geschrieben. Und ich verstehe nicht - warum innerhalb der Klasse Methode funktioniert gut, und in OnInit() - nicht.

Upd: sehr interessant... ;-) Wenn der Expert Advisor in MetaEditor unter dem Debugger ausgeführt wird, funktioniert alles einwandfrei. Außerdem funktioniert EX5 (1,5 mal größer als üblich), das unter dem Debugger kompiliert wurde, ebenfalls gut. Aber sobald EA im normalen Modus neu kompiliert wird, fängt es an zu stören. Offenbar muss ich in Service Desk eine neue Anwendung öffnen.

 
A100:
Können mir sachkundige Personen den Unterschied zwischen extern und statisch erklären, und was ist die globale Lebensdauer?

In Ihrem Fall haben Sie beschlossen, dass zwei Sätze von Variablen, die unabhängig voneinander in zwei verschiedenen Dateien beschrieben werden, in einer Darstellung zusammengeführt werden. Dies ist jedoch nicht der Fall.

Indem Sie eine mqh-Datei hinzufügen, definieren Sie explizit separate Variablensätze in jeder Include-Datei. Grob gesagt, sollten Sie keine Variablendefinitionen in die Headerdateien aufnehmen - sie werden gescoped.

 
Ich wollte eine (einzige) Variable in mehreren Modulen verwenden, weiß aber nicht, wie. .mqh wurde entfernt.
10 //testLib.mq5
20 #property library
30 extern int e1;
40 void f() export
50 {
60         Print( "e1=" + e1 );
70 }
10 //test.mq5
20 extern int e1;        
30 #import "testLib.ex5"
40          void f();
50 #import
60 void OnStart()
70 {
80         e1 = 10;
90         f();
100 }

Ausgabeergebnis: e1=0 hat sich nicht geändert. Wo ist e1=10 geblieben? Wenn e1 in verschiedenen Modulen unterschiedlich ist, bedeutet das, dass die statische und externe Funktionalität identisch ist? Und wenn nicht, wo liegt mein Fehler?
 
A100:
Ich wollte eine (einzige) Variable in mehreren Modulen verwenden, aber ich weiß nicht wie. Das Ergebnis der Ausgabe: e1=0 hat sich nicht geändert.
Es gibt eine externe Speicherklasse speziell für Ihren Fall. Versuchen Sie
 
stringo:
Es gibt eine externe Speicherklasse speziell für Ihren Fall. Versuchen Sie
Bitte geben Sie mir ein Beispiel - oder weisen Sie mich auf einen Fehler in meinem Modul hin - In einem Modul weise ich e1 = 10 zu, im zweiten Modul rufe ich e1 auf und es ist dort gleich Null
 
A100:
Ich wollte eine (einzige) Variable in mehreren Modulen verwenden, aber ich weiß nicht wie. Die .mqhP-Ausgabe wurde entfernt: e1=0 hat sich nicht geändert. Wo ist e=10 geblieben? Wenn e1 in verschiedenen Modulen unterschiedlich ist, bedeutet das, dass die statische und externe Funktionalität identisch ist? Und wenn nicht, wo liegt mein Fehler?
Nun, es sollte nur einmal initialisiert werden. Sie ist extern.