Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1197

 
Alexey Viktorov:

Für die Anzeige im Prüfgerät? Ja. Erstellen Sie eine Vorlage mit allen Indikatoren, die Sie benötigen, und speichern Sie sie unter dem EA-Namen oder dem Namen des Testers.

Auf den Charts des echten und des Demokontos.

 

Grüße!

Weiß jemand, wie man Maxim Gutman kontaktieren kann?

Trader, Entwickler eines automatischen Handelssystems

 
odyn:

Auf den Charts des echten und des Demokontos.

Hier ist zum Beispiel der MACD

Alle anderen sind identisch.

 

Guten Tag, bitte beraten Sie mich oder geben Sie mir einen Link, um zu sehen

Ich muss aus den offenen Stellen diejenigen auswählen, deren Lebensdauer einen bestimmten Zeitraum überschreitet.

Wie kann ich den Zeitpunkt, zu dem eine Position eröffnet wird, korrekt mit der aktuellen Uhrzeit vergleichen?

Ich warf diese Funktion, was als nächstes zu tun kann ich nicht denken (wenig Erfahrung), wie die Zeit zu vergleichen?

//+------------------------------------------------------------------+
bool Selected_Positions_Time_Life(datetime time_life, int &array_base[][observations])
{
int n = 0;
int size = ArrayRange(array_base,0);

for(int i=0; i<size; i++)
{
   int index  = Arr_Position[i][0];
   int ticket = m_position.SelectByIndex(index);
   datetime tl = m_position.Time();
   datetime tc = TimeCurrent();
 //Вот тут наверное нужно сравнить tl и tc 
 //и если разница превышает time_life, то это наша позиция
}

return(n>0);
}
//+------------------------------------------------------------------+
 
Sergey Voytsekhovsky:

Guten Tag, bitte beraten Sie mich oder geben Sie mir einen Link, um zu sehen

Ich muss aus den offenen Stellen diejenigen auswählen, deren Lebensdauer einen bestimmten Zeitraum überschreitet.

Wie kann ich den Zeitpunkt, zu dem eine Position eröffnet wird, korrekt mit der aktuellen Uhrzeit vergleichen?

Ich habe diese Funktion erstellt, aber ich habe keine Ahnung, was ich als Nächstes tun soll (mangelnde Erfahrung), wie kann ich Zeiten vergleichen?

Wählen Sie in der Schleife eine Position aus und rufen Sie deren Ticket ab.

ulong posTicket = PositionGetTicket(i);

Ermitteln Sie dann die Öffnungszeit der Position

PositionGetInteger(POSITION_TIME)
und vergleichen mit der Referenzzeit ±.
 
Alexey Viktorov:

Wählen Sie eine Position in der Schleife und erhalten Sie ein Ticket dafür

Dann erhalten Sie die Öffnungszeit der Position

Und vergleichen Sie mit der Referenzzeit ±.

Nur dieses Vergleichsverfahren bitte auskotzen, mit der Ticketposition, Öffnungszeit und Serverzeit, ich glaube ich habe es herausgefunden, kann ich nicht vergleichen. Ich habe mir den Kommentar durchgelesen, ich bekomme nur Daten.

 
Sergey Voytsekhovsky:

Dies ist genau das Vergleichsverfahren bitte, mit der Position Ticket, Öffnungszeit und Serverzeit ich denke, ich habe es herausgefunden, kann ich nicht vergleichen. Ich habe mir den Kommentar durchgelesen, ich habe nur die Daten bekommen.

Sie vergleichen also die Daten. Aber man muss die Diskrepanz berücksichtigen. Besser ist es, die Differenz zwischen der Öffnungszeit und der Referenzzeit mit einer zulässigen Abweichung zu vergleichen.

fabs(время_позиции - эталонное_время) < допустимого_отклонения // например 600 секунд
 
Alexey Viktorov:

Vergleichen Sie also die Daten. Aber man muss die Diskrepanz berücksichtigen. Besser ist es, die Differenz zwischen der Öffnungszeit und der Referenzzeit mit einer Toleranzabweichung zu vergleichen.

Alexey Viktorov:

Vergleichen Sie also die Daten. Aber man muss die Diskrepanz berücksichtigen. Es ist besser, die Differenz zwischen der Öffnungszeit und der Referenzzeit mit der Toleranz zu vergleichen.

Verstanden, danke, ich werde es ausprobieren, sobald ich an meinem Computer bin (ich bin im Moment am Handy).

 

Guten Tag.

Ich möchte die vertikalen Linien im Diagramm nach Zeit sortieren. Ich habe ein kleines Drehbuch geschrieben. Aber das Ergebnis ist nicht das, was ich will.

Bitte beraten Sie mich, was ich falsch mache.

void OnStart()
{
int      vlines            = 0;
string   vlines_name[];
string   vlines_name_sort[];
datetime tm[];

   vlines = ObjectsTotal(ChartID(),0,OBJ_VLINE);
   if(vlines < 20 * 2)
   {
      Print("вертикальных линий меньше необходимиого. (",vlines," < ",20 * 2,")");
      return;
   }
   ArrayResize(vlines_name,vlines);
   ArrayResize(vlines_name_sort,vlines);
   
   for(int i = 0; i < vlines; i++)
   {
      vlines_name[i] = ObjectName(ChartID(),i,0,OBJ_VLINE);
   }
   ArrayPrint(vlines_name);
   
   for(int i = 0, n = 0; i < 9000; i++)
   {
      ArrayFree(tm);
      CopyTime(Symbol(),Period(),i,1,tm);
      
      for(int a = 0; a < vlines - 1; a++)
      {
         datetime tml = (datetime)ObjectGetInteger(ChartID(),vlines_name[a],OBJPROP_TIME);
         if(tml == tm[0])
         {
            vlines_name_sort[n++] = vlines_name[a];
            break;
         }
      }
   }
   ArrayPrint(vlines_name_sort);
}

Das Ergebnis:

(GBPUSD,H6)     [ 0] "H6 Vertical Line 10771" "H6 Vertical Line 10884" "H6 Vertical Line 12743" "H6 Vertical Line 1371"  "H6 Vertical Line 14306"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 16501" "H6 Vertical Line 17907" "H6 Vertical Line 20277" "H6 Vertical Line 23365" "H6 Vertical Line 28358"
(GBPUSD,H6)     [10] "H6 Vertical Line 28756" "H6 Vertical Line 29445" "H6 Vertical Line 30340" "H6 Vertical Line 31840" "H6 Vertical Line 32885"
(GBPUSD,H6)     [15] "H6 Vertical Line 33779" "H6 Vertical Line 34048" "H6 Vertical Line 38532" "H6 Vertical Line 38756" "H6 Vertical Line 39075"
(GBPUSD,H6)     [20] "H6 Vertical Line 39458" "H6 Vertical Line 39649" "H6 Vertical Line 40385" "H6 Vertical Line 41116" "H6 Vertical Line 4150" 
(GBPUSD,H6)     [25] "H6 Vertical Line 41900" "H6 Vertical Line 42820" "H6 Vertical Line 43071" "H6 Vertical Line 46245" "H6 Vertical Line 48196"
(GBPUSD,H6)     [30] "H6 Vertical Line 50258" "H6 Vertical Line 50374" "H6 Vertical Line 55171" "H6 Vertical Line 56003" "H6 Vertical Line 56400"
(GBPUSD,H6)     [35] "H6 Vertical Line 57565" "H6 Vertical Line 59075" "H6 Vertical Line 59881" "H6 Vertical Line 59969" "H6 Vertical Line 63122"
(GBPUSD,H6)     [40] "H6 Vertical Line 63540" "H6 Vertical Line 63904" "H6 Vertical Line 64359" "H6 Vertical Line 64420" "H6 Vertical Line 65200"
(GBPUSD,H6)     [45] "H6 Vertical Line 6695"  "H6 Vertical Line 7743"  "H6 Vertical Line 8707"  "H6 Vertical Line 9491"  "H6 Vertical Line 9662" 

(GBPUSD,H6)     [ 0] "H6 Vertical Line 46245" "H6 Vertical Line 39075" "H6 Vertical Line 40385" "H6 Vertical Line 55171" "H6 Vertical Line 31840"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 63904" "H6 Vertical Line 6695"  "H6 Vertical Line 59075" "H6 Vertical Line 28358" "H6 Vertical Line 10884"
(GBPUSD,H6)     [10] "H6 Vertical Line 38532" "H6 Vertical Line 29445" "H6 Vertical Line 23365" "H6 Vertical Line 64420" "H6 Vertical Line 7743" 
(GBPUSD,H6)     [15] "H6 Vertical Line 30340" "H6 Vertical Line 39649" "H6 Vertical Line 38756" "H6 Vertical Line 34048" "H6 Vertical Line 42820"
(GBPUSD,H6)     [20] "H6 Vertical Line 64359" "H6 Vertical Line 50374" "H6 Vertical Line 14306" "H6 Vertical Line 48196" "H6 Vertical Line 57565"
(GBPUSD,H6)     [25] "H6 Vertical Line 20277" "H6 Vertical Line 41116" "H6 Vertical Line 12743" "H6 Vertical Line 50258" "H6 Vertical Line 41900"
(GBPUSD,H6)     [30] "H6 Vertical Line 17907" "H6 Vertical Line 4150"  "H6 Vertical Line 59881" "H6 Vertical Line 56400" "H6 Vertical Line 10771"
(GBPUSD,H6)     [35] "H6 Vertical Line 63540" "H6 Vertical Line 65200" "H6 Vertical Line 9491"  "H6 Vertical Line 16501" "H6 Vertical Line 63122"
(GBPUSD,H6)     [40] "H6 Vertical Line 32885" "H6 Vertical Line 1371"  "H6 Vertical Line 33779" null                     null                    
(GBPUSD,H6)     [45] null                     null                     null                     null                     null                    
 
Сергей Таболин:

Guten Tag.

Ich möchte die vertikalen Linien im Diagramm nach Zeit sortieren. Ich habe ein kleines Drehbuch geschrieben. Aber das Ergebnis ist nicht das, was ich will.

Bitte beraten Sie mich, was ich falsch mache.

Das Ergebnis:

Logischerweise müssen Sie zunächst alle Zeilen in einem Array zu sammeln, würde ich sofort tun, zweidimensionale, gut, oder Array-Struktur, in der ersten Dimension fügen Sie eine Zeit der Erstellung, in der zweiten - der Name der Zeile.

In der Schleife für einen Durchlauf wird das Array gefüllt, außerhalb der Schleife nach dem Füllen wird das Array nach der ersten Dimension, d.h. der Zeit, sortiert.

Das Ergebnis wird in der zweiten Schleife gedruckt.

Folglich haben wir 2 Zyklen und eine Sortierung zwischen ihnen.

Das ist alles, wenn ich das Problem richtig verstanden habe :)

Grund der Beschwerde: