[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 131
bool initFinished=false; // Fügen Sie eine Variable hinzu, die den Status der Initialisierung speichert. // false - die Initialisierung ist noch nicht erfolgt. // wahr - wurde initialisiert //+------------------------------------------------------------------+ //| Benutzerdefinierte Initialisierungsfunktion für Indikatoren | //+------------------------------------------------------------------+ int init() { //---- Indikatoren SetIndexStyle(0,DRAW_LINE); SetIndexPuffer(0,ExtMapPuffer1); SetIndexStyle(1,DRAW_LINE); SetIndexPuffer(1,ExtMapPuffer2); SetIndexStyle(2,DRAW_NONE); SetIndexPuffer(2,topPuffer);
bool initFinished=false; // Fügen Sie eine Variable hinzu, die den Status der Initialisierung speichert. // false - die Initialisierung ist noch nicht erfolgt. // wahr - wurde initialisiert //+------------------------------------------------------------------+ //| Benutzerdefinierte Initialisierungsfunktion für Indikatoren | //+------------------------------------------------------------------+ int init() { //---- Indikatoren SetIndexStyle(0,DRAW_LINE); SetIndexPuffer(0,ExtMapPuffer1); SetIndexStyle(1,DRAW_LINE); SetIndexPuffer(1,ExtMapPuffer2); SetIndexStyle(2,DRAW_NONE); SetIndexPuffer(2,topPuffer);
Guten Tag bitte helfen. Ich bin ein Neuling und installiert MetaFX und Expert Advisor auf der Demo alles funktioniert und will nicht auf das Original zu arbeiten will nicht nur stehen
Ich erhalte N externe Variablen desselben Typs. Wie wählt man den Maximalwert aus, ohne den Code zu überladen - MathMax gibt den Maximalwert von zwei Werten zurück, aber wenn es, sagen wir, 20 ?
Oder wie kann man ein Array aus diesen Daten erstellen, das dann ArrayMaximum anwendet?
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0) Suche nach dem Element mit dem maximalen Wert. Die Funktion gibt die Position des maximalen Elements im Array zurück. Parameter: array[] - Numerisches Array, das durchsucht wird. count - Anzahl der zu durchsuchenden Elemente. Start - Der Startindex für die Suche.
Beispiel: double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9}; int maxValueIdx=ArrayMaximum(num_array); Print("Maximalwert = ", num_array[maxValueIdx]);
Aber in Form von
int Max [N] = {A,.....,N};
wird das Array nicht erstellt.
Dabei sind: A,......N die angegebenen Variablen desselben Typs. Anzahl der Variablen = N
topBuffer[i] hinter der Schleife und Zeichnung, versuchen Sie es auf diese Weise:
Ihre Option funktioniert nicht, aber ein GROSSES DANKESCHÖN für Ihre Aufmerksamkeit, Ihre harte Arbeit und Ihr Verständnis für die Probleme anderer Menschen.
hat win_idx das richtig verstanden?
win_ind erweist sich als richtig.
ObjectCreate("max",OBJ_HLINE,win_idx,0,top); zeichnet im richtigen Fenster,
ObjectSet("max",OBJPROP_COLOR,Yellow); zeichnet in der richtigen Farbe,
ObjectSet("max",OBJPROP_WIDTH,0); zeichnet die richtige Linie,
definiert aber nicht den obersten Parameter in
double top=WindowPriceMax(win_idx);
und topBuffer[] ist leer.
Der Code
#property indicator_separate_window
#Eigenschaft indicator_buffers 3
#Eigenschaft indicator_color1 Lime
#Eigenschaft indicator_color2 Rot
//--- Puffer
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double topBuffer[];
bool initFinished=false; // Fügen Sie eine Variable hinzu, die den Status der Initialisierung speichert.
// false - die Initialisierung ist noch nicht erfolgt.
// wahr - wurde initialisiert
//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int init()
{
//---- Indikatoren
SetIndexStyle(0,DRAW_LINE);
SetIndexPuffer(0,ExtMapPuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexPuffer(1,ExtMapPuffer2);
SetIndexStyle(2,DRAW_NONE);
SetIndexPuffer(2,topPuffer);
IndicatorDigits(5);
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Iterationsfunktion |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),
Grenze;
if(gezählte_Balken>0)
gezählte_Balken--;
limit=Balken-gezählt_Balken;
//----
for(int i=0;i<limit;i++)
{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);
if(initFinished==false)
{
IndikatorKurzname("MACD_max-min");
int win_idx=WindowFind("MACD_max-min");
// Ermitteln der Nummer des Teilfensters unseres Indikators
if(win_idx<0)
{
// Wenn die Nummer des Unterfensters -1 ist, liegt ein Fehler vor.
Print("Fenster nicht gefunden");
zurück(0);
}
double top=WindowPriceMax(win_idx);
//Ermittelt den maximalen Wert der vertikalen Skala des angegebenen Unterfensters des aktuellen Diagramms
ObjectCreate("max",OBJ_HLINE,win_idx,0,top);
// Zeichnen einer horizontalen Linie in einem Unterfenster unseres Indikators
ObjectSet("max",OBJPROP_COLOR,Yellow);
ObjectSet("max",OBJPROP_WIDTH,0);
WindowRedraw();
// Das Fenster neu zeichnen, um die Linie zu sehen
initFinished=true;
// Zeichnung ist beendet
}
topPuffer[i]=top;
}
//----
zurück(0);
}
//+------------------------------------------------------------------+
win_ind erweist sich als richtig.
ObjectCreate("max",OBJ_HLINE,win_idx,0,top); zeichnet im richtigen Fenster,
ObjectSet("max",OBJPROP_COLOR,Yellow); zeichnet in der richtigen Farbe,
ObjectSet("max",OBJPROP_WIDTH,0); zeichnet die richtige Linie,
definiert aber nicht den obersten Parameter in
double top=WindowPriceMax(win_idx);
und topBuffer[] ist leer.
Code
#property indicator_separate_window
#Eigenschaft indicator_buffers 3
#Eigenschaft indicator_color1 Lime
#Eigenschaft indicator_color2 Rot
//--- Puffer
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double topBuffer[];
bool initFinished=false; // Fügen Sie eine Variable hinzu, die den Status der Initialisierung speichert.
// false - die Initialisierung ist noch nicht erfolgt.
// wahr - wurde initialisiert
//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int init()
{
//---- Indikatoren
SetIndexStyle(0,DRAW_LINE);
SetIndexPuffer(0,ExtMapPuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexPuffer(1,ExtMapPuffer2);
SetIndexStyle(2,DRAW_NONE);
SetIndexPuffer(2,topPuffer);
IndicatorDigits(5);
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Iterationsfunktion |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),
Grenze;
if(gezählte_Balken>0)
gezählte_Balken--;
limit=Balken-gezählt_Balken;
//----
for(int i=0;i<limit;i++)
{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);
if(initFinished==false)
{
IndikatorKurzname("MACD_max-min");
int win_idx=WindowFind("MACD_max-min");
// Ermittlung der Nummer des Teilfensters unseres Indikators
if(win_idx<0)
{
// Wenn die Nummer des Unterfensters -1 ist, liegt ein Fehler vor.
Print("Fenster nicht gefunden");
zurück(0);
}
double top=WindowPriceMax(win_idx);
//Ermittelt den maximalen Wert der vertikalen Skala des angegebenen Unterfensters des aktuellen Diagramms
ObjectCreate("max",OBJ_HLINE,win_idx,0,top);
// Zeichnen einer horizontalen Linie in einem Unterfenster unseres Indikators
ObjectSet("max",OBJPROP_COLOR,Yellow);
ObjectSet("max",OBJPROP_WIDTH,0);
WindowRedraw();
// Das Fenster neu zeichnen, um die Linie zu sehen
initFinished=true;
// Zeichnung ist beendet
}
topPuffer[i]=top;
}
//----
zurück(0);
}
//+------------------------------------------------------------------+
Entschuldigung für die Einmischung.
topBuffer[i] hinter der Schleife und Zeichnung, versuchen Sie dies:
Hallo!
Bitte weisen Sie mir die richtige Richtung:
Ich erhalte N externe Variablen desselben Typs. Wie wählt man den Maximalwert aus, ohne den Code zu überladen - MathMax gibt den Maximalwert von zwei Werten zurück, aber wenn es, sagen wir, 20 ?
Oder wie kann man ein Array aus diesen Daten erstellen, das dann ArrayMaximum anwendet?
extern int A = 10;
extern int .......;
extern int N = 1253;
Vielen Dank im Voraus!
https://docs.mql4.com/ru/array/ArrayMaximum
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)Suche nach dem Element mit dem maximalen Wert. Die Funktion gibt die Position des maximalen Elements im Array zurück.
Parameter:
array[] - Numerisches Array, das durchsucht wird.
count - Anzahl der zu durchsuchenden Elemente.
Start - Der Startindex für die Suche.
double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int maxValueIdx=ArrayMaximum(num_array);
Print("Maximalwert = ", num_array[maxValueIdx]);
Aber in Form von
int Max [N] = {A,.....,N};
wird das Array nicht erstellt.
Dabei sind: A,......N die angegebenen Variablen desselben Typs. Anzahl der Variablen = N
Beispiel für die Erstellung eines String-Arrays aus externen Variablen (Skript):
Beispiel für die Erstellung eines String-Arrays aus externen Variablen (Skript):
Ich danke Ihnen!
Es funktionierte, allerdings mit einer Korrektur: statt
int init(){sym[1]=sym1;............
Folgendes tun
int init(){sym[0]=sym1;.......
und dann werden alle Elemente gezählt.
Entschuldigung für die Störung.
topBuffer[i] hinter der Schleife und Zeichnung, versuchen Sie es auf diese Weise: