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

 
Artyom Trishkin:

2. Was bedeutet "mehr als Null"?

Bedeutet, dass ein Preis im Puffer vorhanden ist, andernfalls ist kein Preis im Puffer vorhanden.

Artyom Trishkin:

Was wird in den Pufferwerten dieses Indikators im Datenfenster angezeigt?

Preis oder nichts.
 
Ghabo:

Bedeutet, dass ein Preis im Puffer vorhanden ist, andernfalls ist kein Preis im Puffer vorhanden.

EMPTY_VALUE ist ein "leerer" Pufferwert, den viele Indikatoren standardmäßig verwenden, hat einen Wert von DBL_MAX - und dieser ist sehr viel größer als Null. Das ist der Grund für meine Frage.

Versuchen Sie zu prüfen, ob(M_A > 0 && M_A < EMPTY_VALUE)

 
Artyom Trishkin:

Der Wert EMPTY_VALUE, der "leere" Pufferwert, den viele Indikatoren standardmäßig verwenden, hat einen Wert von DBL_MAX, der sehr viel größer als Null ist. Das ist der Grund für meine Frage.

Versuchen Sie zu prüfen, ob(M_A > 0 && M_A < EMPTY_VALUE)

Die Signale sind also da. Ist es das?

void OnInit() {
  time=Time[0];
}
//////////////////////////////
if(М_А>0 && M_A < EMPTY_VALUE)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

Es wird also beim Start kein Alarm ausgelöst, aber beim Auftreten eines Signals auf dem Balken, an dem der Indikator angebracht wurde?

Dasbezweifle ich, denn bei der Initialisierungist die Zeit bereits gleich der Öffnungszeit des Balkens.

Wie soll man sich entscheiden?

 
Ghabo:

Die Signale sind also da. Ist das alles?

Es wird also beim Start kein Alarm ausgelöst, wohl aber, wenn das Signal auf dem Balken erscheint, an dem der Indikator angebracht wurde?

Dasbezweifle ich, denn bei der Initialisierung ist dieZeit bereits gleich der Öffnungszeit der Bar.

Wie kann man das lösen?

Initialisierungszeit in OnInit() entfernen

void OnCalculate()
  {
   static datetime time=0;
//---
   if(М_А>0 && M_A < EMPTY_VALUE)  
     {
      if(time!=Time[0])
        {
         time=Time[0]; 
         AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
        }
     }
  }
 
Taras Slobodyanik:

Es ist also alles vorbereitet, es muss nur noch das Schreiben/Lesen hinzugefügt werden.

Funktioniert dieser Code oder sollte er funktionieren? Ich habe eine Divergenz nach dem Abrufen von globalen Variablen mit echter ID. Und wenn Sie können, ein Beispiel in Form eines Indikators. Ich danke Ihnen.
 
inter78:
Funktioniert dieser Code oder sollte er funktionieren? Ich habe eine Divergenz nach dem Abruf von einer globalen Variablen mit einer echten ID. Und wenn möglich ein Beispiel in Form eines Indikators. Ich danke Ihnen.

Mein Code funktioniert bei mir, ich kann Ihren Code nicht sehen.
bitte)

 

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.05 11:01

Nun, es gibt nichts Kompliziertes an globalen Variablen:
- Variablenname ist Präfix+Symbol+Periode, Wert = Diagramm-ID
- Wenn Sie beginnen, suchen Sie nach Variablen mit Ihrem Präfix und vergleichen Sie die aidi
- Wenn wir kein Diagramm haben, prüfen wir, ob ein solches Diagramm existiert; wenn nicht, löschen wir die Variable
- Wenn ein Diagramm unseres ist, nehmen wir ein Symbol und einen Punkt aus dem Namen und löschen auch die Variable (oder schreiben sie um)



Ich versuche, meinen Lesern zu helfen, die Bedeutung der Vorsilbe für Variable und ihre Verwendung zu verstehen. Bitte geben Sie mir ein Beispiel, wie man eine solche globale Variable erstellt.

Es heißt, dass GPTs 4 Wochen lang gespeichert werden. Gilt das auch, wenn das Terminal ausgeschaltet ist?

 
psyman:

Ich kann in der Hilfe nichts darüber finden, was ein Variablenpräfix ist oder warum es benötigt wird. Bitte geben Sie mir ein Beispiel, wie man eine solche globale Variable erstellt.

Es heißt, dass GPT 4 Wochen lang gespeichert werden, auch wenn das Terminal ausgeschaltet ist?

Ich meinte das Präfix im Namen, um erkennen zu können, wo eine Variable die eigene ist und wo sie von jemand anderem stammt, und das Präfix kann alle Variablen auf einmal löschen:

int  GlobalVariablesDeleteAll( 
   string     prefix_name=NULL,     // все глобальные переменные, чьи имена начинаются с префикса 
   datetime   limit_data=0          // все глобальные переменные, которые изменялись ранее ранее указанной даты 
   );

zum Beispiel:

string   GV_prefix="ZZ_";                                               //префикс имени для всех своих
string   prefix_gv=GV_prefix+_Symbol+"_"+TFtoStr(ind_period)+"_";       //префикс имени для конкретного символа и периода

GlobalVariablesDeleteAll(prefix_gv); //удалить все переменные со своим префиксом


   //создание и запись глобальных переменных в цикле
   int num=0;
   for(int i=lines_all-1;i>=end;i--)
      {
      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      
      name=prefix_gv+"TimeBeg_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_start);
      
      name=prefix_gv+"TimeEnd_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_end);
      
      name=prefix_gv+"Visible_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].visible);
      
      name=prefix_gv+"Direction_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].direct);
      
      num++;
      }


ps. Sie können auch Informationen im Namen speichern/extrahieren

 

Jetzt wissen wir, wovon wir sprechen.

=Variablenname ist Präfix+Symbol+Periode, Wert = Diagramm-ID

Warum so kompliziert? Wenn Sie nur den Zeitraum speichern wollen, können Sie ihn mit derID des Diagramms benennen.

 
psyman:

Jetzt wissen wir, wovon wir sprechen.

=Variablenname ist Präfix+Symbol+Periode, Wert = Diagramm-ID

Warum ist es so kompliziert? Wenn Sie nur einen Zeitraum speichern möchten, können Sieeine Diagramm-ID angeben.

ich schreibe es nur als Beispiel)

Wenn Sie sich das Symbol nicht merken müssen, brauchen Sie es sich auch nicht zu merken.

Wenn der Name nur eine Diagramm-ID ist, wie löschen Sie dann unnötige Variablen?
(bei häufigem Gebrauch gibt es eine Vielzahl von Variablen)

Wenn Sie kein Präfix benötigen, wie löschen Sie dann unnötige Variablen?