Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 650

 

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen für Neulinge auf MQL4, Hilfe und Diskussion über Algorithmen und Codes

Taras Slobodyanik, 2018.10.07 09:47

Ich schreibe es nur als Beispiel)

wenn Sie sich das Symbol nicht merken müssen, können Sie es sich auch nicht merken

Wie kann ich unnötige Variablen löschen, wenn der Name nur eine Diagramm-ID ist?
(es gibt viele Variablen, wenn man sie oft benutzt)

Wenn kein Präfix - dasselbe, wie kann man unnötige Variablen löschen?


=(Ichschreibe dasnur als Beispiel).

Wenn Sie den einfachen Verstand erweitern wollen, ist das ein gutes Beispiel für Bildung :-)

=Wenn ichnur die Diagramm-ID benenne, wie entferne ich dann unnötige Variablen?

Warum sollten sie überhaupt entfernt werden? Wenn Sie z.B. nur den Punkt speichern wollen, dann reicht Name = Präfix+Symbol. Ich gehe davon aus, dass ich überhaupt mit einem GP auskomme - wenn ich nur einen Rahmenwechsel in einem Diagramm durchführe, ist es vorbei, bevor ich zum nächsten Diagramm gehe, und dort wird der Zeitraum erneut angefordert und der GP überschrieben. Gibt es in diesem Fall irgendwelche Fallstricke?

 
Taras Slobodyanik:

mein Code, mein Code funktioniert, ich kann Ihren Code nicht sehen.
bitte)

Ich habe also Ihr Skript in das Diagramm eingefügt, und die Liste der globalen Variablen ist 0.
 
inter78:
Ich habe also Ihr Skript in das Diagramm eingefügt, und die Liste der globalen Variablen ist 0.

Willst du nachsehen oder willst du fahren?)
Wenn man sich die Liste visuell ansieht, muss man sich lange Bits ansehen, z. B. Bits für die Synchronisation - es gibt Abrakadabra oder NaN

 
psyman:

Warum sollten sie überhaupt entfernt werden? Wenn Sie z. B. nur einen Punkt speichern müssen, genügt Name = Präfix + Symbol. Ich gehe davon aus, dass ich überhaupt mit einem GP auskomme - wenn ich nur einen Rahmenwechsel auf dem Diagramm durchführe, endet er, bevor ich zum nächsten Diagramm gehe, und dort wird der Zeitraum erneut abgefragt und der GP überschrieben. Gibt es in diesem Fall keine Fallstricke?

es kommt auf den Zweck an

Wenn der Indikator (oder was auch immer) nur in einem Fall, bei einem Symbol, funktioniert, und niemand sonst die gleichen Variablen macht, dann kann man sich natürlich nicht die Mühe machen

 
Taras Slobodyanik:

Willst du nachsehen oder fahren?)
Wenn man sich die Liste visuell ansieht, muss man sich die Longo-Bits ansehen, z. B. die Bits für die Synchronisation - da gibt es Abrakadabra oder NaN

Das ist, wenn ich jetzt verstehe, was Sie mir gerade geschrieben haben, würde ich mich nicht mit Ihnen abgeben. Es ist nur so, dass meine Kenntnisse im Programmieren gegen Null tendieren. Aber wenn ich ChartID ohne Verzerrung in globale Variablen schieben könnte, wäre ich glücklich. Ich danke Ihnen.
 

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen von Neulingen zu MQL4, Hilfe und Diskussion über Algorithmen und Codes

Taras Slobodyanik, 2018.10.06 21:47

      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      

Wie bekomme ich es so geschickt hin, dass der Variable name ein Textstring-Wert zugewiesen wird und dannLine_ALL[i].price dort auch geschrieben wird, aber als GP?

Theoretisch sollte Name sie einfach überschreiben.

UPD

Ich denke, ich habe es verstanden - ich brauche eine einfache Variable, um den Namen des GP zu speichern. Der Name der Variablen kann derselbe sein. Oder?

 
psyman:

Erklären Sie den kniffligen Teil: name wird ein Textstring-Wert zugewiesen und dann wirdLine_ALL[i].price dort geschrieben,aber als GP?

Theoretisch sollte der Name einfach überschrieben werden.

UPD

Ich denke, ich habe es verstanden - ich brauche eine einfache Variable, um den Namen des GP zu speichern. Der Name der Variablen kann derselbe sein. Oder?

ImVariablennamen wird ein Name (textuell) erstellt, dann wird eine globale Variable mit diesem Namen erstellt und ein Wert in diese GP geschrieben.
d.h. es wird eine Liste von GPs erstellt und ein Teil des Arrays wird darin gespeichert

1

 
inter78:
Wenn ich verstehen würde, was Sie gerade geschrieben haben, würde ich Sie nicht belästigen. Es ist nur so, dass meine Kenntnisse im Programmieren gegen Null tendieren. Aber wenn ich ChartID ohne Verzerrung in globale Variablen schieben könnte, wäre ich glücklich. Danke.

mein Code schreibt die longChartID in eine temporäre globale Variable.

Wenn Sie F3 drücken, wird dort Null (oder ein anderer Wert) angezeigt.
Das passiert, weil das Terminal denkt, dass es sich um einen doppelten Wert handelt und versucht, ihn anzuzeigen, aber wir haben ihm einen langen Wert untergeschoben - was ein völlig anderes Zahlenformat ist.

Wenn dieser Wert als normaler Double zurückgelesen wird, ist das ein Chaos.
Wenn sie von meinem Code gelesen wird, ist sie wieder lang (dieselbe, die wir gespeichert haben).
Wenn Sie manuell auf diese Variable im Terminalfenster klicken, wird sie zurückgesetzt, da das Terminal den Tausch erkennt.

 
Taras Slobodyanik:

Es wird ein Name imVariablennamen erstellt (textuell), dann wird eine globale Variable mit diesem Namen erstellt und ein Wert in diese GP geschrieben.
d.h. es wird eine Liste von GPs erstellt und ein Teil des Arrays wird darin gespeichert


Aber diese Bedingung.

GlobalVariableCheck(name) || GlobalVariableTemp(name)

wozu?

Schon die Definition "GlobalVariableTemp versucht, eine temporäre globale Variable zu erstellen" ist mir nicht klar.

Warum sollte man versuchen zu erstellen, wenn GlobalVariableSet es tut?

UPD

Ich habe es in OnInit geschrieben:

   string   GV_prefix="ZZ_";
   string   ctime=GV_prefix+_Symbol+"_"+ChartID();
   GlobalVariablesDeleteAll(NULL, 0);
    if (GlobalVariableCheck(ctime) || GlobalVariableTemp(ctime))
      GlobalVariableSet(ctime, Period());

Aufrufen in OnChartEvent:

if(GlobalVariableGet(ctime)!=Period()) 

Ich erhalte die Antwort 'ctime' - nicht deklarierter Bezeichner


 
psyman:

Aber diese Bedingung.

Warum?

GlobalVariableCheck()- prüft, ob eine solche Variable bereits existiert, falls nicht
GlobalVariableTemp()- erstellt eine temporäre Variable, die beim nächsten Start von selbst wieder gelöscht wird.

psyman:

UPD

Ich habe es in OnInit geschrieben:

Ich rufe es in OnChartEvent auf:

Als Antwort erhalte ich 'ctime' - nicht deklarierter Bezeichner

Die Zeichenkette muss oberhalb von OnInit in globale Codevariablen verschoben werden.

oder zuOnChartEvent hinzufügen

string   GV_prefix="ZZ_";
string   ctime=GV_prefix+_Symbol+"_"+ChartID();
Grund der Beschwerde: