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

 
igrok333:
Gibt es eine Funktion, die den Typ der Variablen zurückgibt?

Sie schreiben zum Beispiel.

int a=10;

dann schreiben Sie:

functia(a);

und da steht: INT!

:)
string functia(int a) { return "INT!"; } // plötzlich
string functia(double a) { return "DABLE!"; } // auch unerwartet
 
igrok333:
Gibt es eine Funktion, die einen Variablentyp zurückgibt?

Sie schreiben zum Beispiel.

int a=10;

dann schreiben Sie:

functia(a);

und da steht: INT!

:)

Aus der Hilfe:

void OnStart() 
  { 
//---  
   CTrade trade;    
   double d_value=M_PI; 
   int i_value=INT_MAX; 
   Print("d_value: type=",GetTypeName(d_value), ",   value=", d_value); 
   Print("i_value: type=",GetTypeName(i_value), ",   value=", i_value); 
   Print("trade: type=",GetTypeName(trade)); 
//---  
  } 
//+------------------------------------------------------------------+ 
//| Возвращает в строковом виде тип                                  | 
//+------------------------------------------------------------------+ 
template<typename T> 
string GetTypeName(const T &t) 
  { 
//--- вернем тип в виде строки 
   return(typename(T)); 
//--- 
  }
 
WinProject:

Es ist viel einfacher. Erstellen Sie eine Anzeige-Schaltfläche (oder verwenden Sie eine der vorhandenen Schaltflächen). Weiteres Drücken - alle notwendigen Objekte werden auf allen TFs sichtbar gemacht. Wenn die Schaltfläche losgelassen wird, werden alle Objekte auf allen TFs auf die Anzeigeeigenschaft gesetzt (oder falls erforderlich). Es besteht keine Notwendigkeit, etwas zu löschen/umzuordnen. Das Einzige, was zu tun ist, ist, das Diagramm nach diesem Vorgang neu zu zeichnen.

Objekt-Eigenschaft OBJPROP_TIMEFRAMES.

 

Können Sie mir sagen, wie ich die Daten aus dem Indikator in ein Array bekomme? D.h. es ist klar, dass ich ein Array deklarieren muss

double num_array[];

Ich weiß nicht genau, was ich als nächstes tun soll...

num_array[0] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); // das Array mit dem Index [0] entspricht MA, aber wenn wir den Index in [1] ändern, dann stellt sich heraus, dass num_array[1] gleich ist

die gleichen Daten aus dem Indikator wie num_array[0]. Dies sollte nicht der Fall sein. Das Array sollte sequentiell gefüllt werden. Das Einzige, was mir einfällt, ist, den Tag in 24 Stunden zu unterteilen.

Stunden, deklarieren Sie ein zweidimensionales Array und weisen Sie jeder Stunde einen Index mit einer eigenen Zeichenfolge etc.... zu.

Vielleicht gibt es einen einfacheren oder weniger chaotischen Weg?

 
Corvin85:

Können Sie mir sagen, wie ich die Daten aus dem Indikator in ein Array bekomme? D.h. es ist klar, dass ich ein Array deklarieren muss

double num_array[];

Ich weiß nicht genau, was ich als nächstes tun soll...

num_array[0] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); // das Array mit dem Index [0] entspricht MA, aber wenn wir den Index in [1] ändern, dann stellt sich heraus, dass num_array[1] gleich ist

die gleichen Daten aus dem Indikator wie num_array[0]. Dies sollte nicht der Fall sein. Das Array sollte sequentiell gefüllt werden. Das Einzige, was mir einfällt, ist, den Tag in 24 Stunden zu unterteilen.

Stunden, deklarieren Sie ein zweidimensionales Array und weisen Sie jeder Stunde einen Index mit einer eigenen Zeichenfolge etc.... zu.

Vielleicht gibt es einen einfacheren oder weniger chaotischen Weg?


Ich sehe das so:

double num_array[];  

ArrayResize(num_array,24);

for(int i=0;i<24;i++)

{

 num_array[i] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);

}
 
Vladislav Andruschenko:

Ich sehe das folgendermaßen:

double num_array[];  

ArrayResize(num_array,24);

for(int i=0;i<24;i++)

{

 num_array[i] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);

}
Ah, es stellt sich heraus, um die maximale Anzahl von Indizes in das Array überArrayResize setzen und führen Sie sie durch eine Schleife. Vielen Dank, aber dann gibt es eine Frage, wenn alle Indizes mit Daten aus dem Indikator gefüllt sind, sollten Sie durchArrayFree gelöscht werden, oder wird es selbst neu schreiben? Oder nach 24x alle überhaupt aufhören? Entschuldigung für die dumme Frage, aber Arrays sind eine Art dunkles Pferd mit unbekannten Funktionen.
 
Corvin85:
Oh, ich kann die maximale Anzahl von Indizes im Array überArrayResize festlegen und sie durch die Schleife laufen. Vielen Dank, aber dann gibt es eine Frage, wenn alle Indizes mit Daten aus dem Indikator gefüllt sind, sollte ich löschen Sie durchArrayFree, oder wird es selbst neu schreiben? Oder nach 24. alle stoppen? Entschuldigen Sie die unverblümte Frage, aber Arrays sind eine Art dunkles Pferd mit unbekannten Funktionen.
Nun, das hängt davon ab, welches Ziel Sie verfolgen. Ich habe den Code geschrieben , um das Array mit mA-Daten der letzten 24 Balken zu füllen. Sie wird laufend aktualisiert.
 
Corvin85:
Oh, ich kannArrayResize verwenden, um die maximale Anzahl von Indizes im Array festzulegen und sie durch die Schleife laufen zu lassen. Vielen Dank, aber dann gibt es eine Frage, wenn alle Indizes mit Daten aus dem Indikator gefüllt sind, sollte ich löschen Sie durchArrayFree, oder wird es selbst neu schreiben? Oder nach 24. alle stoppen? Entschuldigen Sie die unverblümte Frage, aber Arrays sind eine Art dunkles Pferd mit unbekannten Funktionen.

Array = eine Reihe von einfachen Variablen, die in einer Reihe angeordnet sind, um einen bequemen Indexbezug zu ermöglichen. Der Index ist eine Integer-Variable für den Zugriff auf Array-Elemente nach Nummern, um eine Schleife zu organisieren. Index = Nummernzähler. ArrayFree = Array-Zerstörung - wie Bulldozer über baufälligen Häusern. Es kann aber mit ArrayResize wiederhergestellt werden. Nun ,ArrayResize ist ein Zaun um ein Wohn-Array. Unserer ist hier, aber Fremde sind hinter dem Zaun, es ist verboten, dort hineinzugehen. Sie können jedes Haus mehrmals eingeben ( einem Array-Element einen neuen Wert zuweisen). Ein Array ist sehr einfach und für viele Zwecke geeignet. Und diejenigen, die Angst vor Arrays haben - die ... Es ist also besser, sich mit ihnen auseinander zu setzen.

 
//+------------------------------------------------------------------+ 
//| Проверка массива                                                 | 
//+------------------------------------------------------------------+ 
#property strict
int m[10];
int n;

void OnStart() 
{ 
  ArrayInitialize(m,7);          Вывод();  // Заполнить семерками
  ArrayResize(m,7);              Вывод();  // Удалить 3 последних элемента
  ArrayResize(m,9);              Вывод();  // Увеличить размер
  m[1]=1;  m[7]=1;               Вывод();  // Изменить 2 элемента
  for(n=0; n<9; n++) m[n]=n*n;   Вывод();  // Заполнить квадратами номеров
  ArrayCopy(m,m,0,2,7);          Вывод();  // Копирование со сдвигом
  ArrayResize(m,ArraySize(m)-2); Вывод();  // Удалить 2 последних элемента
} 

void Вывод()
{
  string s="";
  for(n=0; n<ArraySize(m); n++)
  s+="  " + string(m[n]);
  Alert(ArraySize(m), ":", s);
}
Versuchen Sie, ein Skript wie dieses auszuführen - und üben Sie
 
Artyom Trishkin:

Aus der Referenz:

cp
Grund der Beschwerde: