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

 
Valeriy Yastremskiy:

Mir gefallen die booleschen Optionen besser

Ich bin mir nicht ganz sicher, inwiefern das hier zutrifft.

Könnten Sie meinen Code verbessern, wenn es Ihnen nichts ausmacht?

      string symbol;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart); Print(symbol);
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
Aber Vitaly hat doch guten Code geschrieben. Er hat i++ an der richtigen Stelle. Wie funktioniert dieser Code?
 
MakarFX:

Können Sie mir sagen, wie ich Print() dazu bringen kann, einmal bei einer Wertänderung zu drucken?

Wann wird welcher Wert geändert?

 
MakarFX:

Ich bin mir nicht ganz sicher, wie dies hier angewendet werden kann

Kann mein Code noch verbessert werden, wenn Sie nichts dagegen haben?

string symbol, printsimbol="";
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart);if(printsimbol!=symbol) Print(symbol);printsimbol=symbol;
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
MakarFX:

Ich bin mir nicht ganz sicher, wie dies hier angewendet werden kann

Kann mein Code korrigiert werden, wenn das nicht zu viel Aufwand ist?

Sie geben nicht im Detail an, wo und wie dieses Konstrukt aufgerufen wird.

In diesem Fall, wenn Sie die notwendige Karte gefunden haben und es die einzige ist, dann machen Sie eine Pause; sofort, so dass Sie das Terminal nicht erzwingen.

Sie finden die Karte, merken sie sich und rufen das Konstrukt nicht mehr auf. Es ist wahrscheinlich am besten, sie bei einem Ereignis aufzurufen, aber das hängt von der Aufgabe ab.

 
Aleksei Stepanenko:

wenn sich welcher Wert ändert?

Wenn sich das aktive Diagrammfenster ändert, druckt die Funktion das aktive Diagrammsymbol.

Vitaly Muzichenko:

Sie geben nicht im Detail an, wo und wie dieses Konstrukt aufgerufen wird.

In diesem Fall, wenn Sie die erforderliche Karte gefunden haben und es nur eine Karte gibt, machen Sie eine Pause, damit Sie das Terminal nicht erzwingen.

Sie finden die Karte, merken sie sich und rufen das Konstrukt nicht mehr auf. Wahrscheinlich der beste Weg, um es auf ein Ereignis zu rufen, obwohl es von der Aufgabe abhängt.

Entschuldigung, die Funktion wird in der...

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
      string symbol01;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            symbol01=ChartSymbol(currChart);      Print(symbol01);
           } 
         currChart=ChartNext(currChart);  i++;
        }
//--- 
  }
Valeriy Yastremskiy:

Leider funktioniert das auch nicht. Druckt endlos(

 
MakarFX:

Wenn sich das aktive Diagrammfenster ändert, druckt die Funktion das aktive Diagrammsymbol.

Entschuldigung, die Funktion wird in der...

Leider funktioniert es auch nicht. Er druckt unendlich(

Wie wäre es damit? - wird nur einmal im Druck ein Signal gegeben

//+------------------------------------------------------------------+
//|                                                         0001.mq5 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
int ticks_to_close=1; // количество тиков
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   if(!EventSetTimer(1))
      Alert("Error create timer!");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   string symbol01;
   long currChart=ChartFirst();
   int i=0;
   while(currChart>=0)
     {
      if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true)
        {
         symbol01=ChartSymbol(currChart);
           {
            if(ticks_to_close>0)
              {
               ticks_to_close--;
               Print(symbol01);
              }
           }
        }
      currChart=ChartNext(currChart);
      i++;
     }
//---
  }
//+------------------------------------------------------------------+
 
SanAlex:

Wie wäre es damit? - wird nur einmal im Druck ein Signal gegeben

Falsch. Er druckt einmal beim Start. Beim Ändern des Zeitplans wird nichts unternommen.
 
MakarFX:

Wenn sich das aktive Diagrammfenster ändert, druckt die Funktion das aktive Diagrammsymbol.

Entschuldigung, die Funktion wird in der...

Leider funktioniert es auch nicht. Er druckt unendlich(

Oder sollten Sie vielleicht die Dokumentation genauer lesen?

CHART_BRING_TO_TOP

Diagramm über allen anderen Diagrammen anzeigen

bool w/o


Dies bedeutet, dass diese Eigenschaft schreibgeschützt ist. Und Sie versuchen, es zu lesen.........

Außerdem geben Sie keine vollständige Antwort auf die Frage

Es ist ein Skript oder ein Indikator.
 
MakarFX:

Wenn sich das aktive Diagrammfenster ändert, druckt die Funktion das aktive Diagrammsymbol.

Entschuldigung, die Funktion wird in der...

Leider funktioniert es auch nicht. Er druckt endlos(

Wenn ich nicht verstehe, was los ist, drucke ich alles aus, was ich habe, manchmal hilft das. Und ich verstehe nicht, was das Wesen des Schleiers ist. Die Bedingung ist immer erfüllt.

string symbol, printsimbol="";
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart);if(printsimbol!=symbol) Print(symbol," ",ChartSymbol(currChart)," ",printsimbol,
" ",currChart," ",ChartFirst()," ",ChartNext(currChart)," ",ChartGetInteger(currChart,CHART_BRING_TO_TOP,0));
printsimbol=symbol;
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
Grund der Beschwerde: