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

 
-Aleks-:
Zwei Jahre - in der Testphase :) Nun, es läuft schon seit einem Jahr auf der Demo... Eine Menge Bugs, wenn ich es wegen externer Klassen anschließen musste... Und jetzt gibt es einen solchen Fehler, von dem ich nicht weiß, wie er zu beheben ist - ich werde einfach die Größe des Arrays um eine Stelle erhöhen. Warum gibt es keine automatische Größenanpassung wie bei einem Grafikpuffer, oder gibt es eine?

Versuchen Sie es so.

Initialisieren Sie das Array OrderBU[1].

Erhöhen Sie zunächst die Größe des Arrays ( ArrayResize(OrderBU,NorderBU+1) ), dann OrderBU[NorderBU]=OrderTicket();NorderBU++;

 
new-rena:

Versuchen Sie es so.

Initialisieren Sie das Array OrderBU[1].

Erhöhen Sie zunächst die Größe des Arrays ( ArrayResize(OrderBU,NorderBU+1) ), dann OrderBU[NorderBU]=OrderTicket();NorderBU++;

Danke - ich werde in aller Ruhe experimentieren.
 
Bitte beraten Sie mich, wie ich das Folgende in den Code implementieren kann.
Es gibt eine Basisvariable A, wenn diese kleiner als Null ist, dann werden fünf weitere Variablen verwendet - die Werte werden von der Indikatoraufruffunktion - iCustom - zugewiesen.
Nachdem wir die Werte erhalten haben, sollten wir sie in eine Rangfolge bringen - Werte über und unter der A-Variablen finden und aus den beiden Gruppen Maximal-, Minimal- und Durchschnittswert bestimmen.
Ich denke, dass es notwendig ist, ein Array zu verwenden, aber ich verstehe nicht ganz wie.
 

Könnten Sie uns bitte zu diesem Punkt beraten?

Wir haben zum Beispiel einen Williams Percent Range (%R) Indikator in einem Diagramm und ziehen den On Balance Volume (OBV) Indikator aus dem Navigator in sein Fenster.

https://charts.mql5.com/8/675/xauusd-h4-metaquotes-software-corp.png

Der %R arbeitet im Bereich 0 -100%, der OBV hat keinen spezifischen Bezug.

Wenn sich das OBV im %R-Fenster befindet, sehen wir visuell, dass es über -20 oder -80 % hinausgeht.

Wie können wir OBV über -20% oder unter -80% in unserem EA bekommen?

Wie bindet man den OBV im benutzerdefinierten Indikator an den Bereich von 0-100%? Normalisieren Sie ihn auf ihn (Bereich)? Wie lässt sich das bewerkstelligen?

Soweit ich weiß, brauchen Sie das OBV nicht auf %R zu normalisieren (das Bild wird anders sein).

Vielleicht ist es elementar, ich habe es nur noch nicht erlebt.

 
-Aleks-:
Bitte teilen Sie mir mit, wie ich das Folgende in den Code implementieren kann.
Es gibt eine Basisvariable A, wenn diese kleiner als Null ist, dann werden fünf weitere Variablen verwendet - die Werte werden von der Indikatoraufruffunktion - iCustom - zugewiesen.
Nachdem wir die Werte erhalten haben, sollten wir sie in eine Rangfolge bringen - Werte über und unter der A-Variablen finden und aus den beiden Gruppen Maximal-, Minimal- und Durchschnittswert bestimmen.
Ich denke, dass wir das Array verwenden sollten, aber ich verstehe nicht ganz, wie.

if (p1>p2&&p1>p3) , if (p2>p1&&p2>p3) , if (p3>p2&&p3>p1)

Ich mache es so,

 

Ich benötige einen Floating-Lot-Parameter, das erste Lot wird vom Benutzer gesetzt, dann wird dieser Parameter nicht mehr benötigt und der EA arbeitet selbst und im Falle eines Verlustes wird er um das im Programm (oder eine externe Variable) angegebene maximale Lot erhöht, im Falle eines Gewinns wird er um den angegebenen Betrag verringert.

Wenn ich den Parameter in der "Init" schreibe, wird der EA aufhören, auf die externe Variable Lot zuzugreifen?

oder wie kann ich das tun?

Dies ist ein ungefährer Ausdruck.

 
Hallo. Können Sie mir bitte sagen, wie ich Nachrichten in meinem EA verwenden kann? Brauche ich dafür einen Indikator, oder kann der EA wichtige Nachrichten auch selbst finden?
 
Leanid Aladzyeu:

if (p1>p2&&p1>p3) , if (p2>p1&&p2>p3) , if (p3>p2&&p3>p1)

Ich mache es so,

Das ist unpraktisch, besonders bei einer großen Anzahl von Parametern...

Die Lösung mittels Array ist interessant. Besonders interessant ist, wie man den nächstgelegenen Wert einer Variablen findet, wenn man die Gesamtzahl der Werte mittelt.

 
first_may:

Guten Abend. Ich versuche, einen einfachen EA auf Tenkan und Kinjun Crossing zu schreiben. Hier ist der Code:

void OnTick()

void OnTick()

{

TradeSignal_20();

}


int TradeSignal_20()

{

int sig=0;


if(h_ich==INVALID_HANDLE)

{

h_ich=iIchimoku(Symbol(),Zeitraum(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);

zurück(0);

}

sonst

{

if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE

if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE

if (!ArraySetAsSeries(ich1_buffer,true)) return(0);

if (!ArraySetAsSeries(ich2_buffer,true)) return(0);

}

//--- Bedingung prüfen und Wert für sig einstellen

if(ich1_buffer[1]>ich2_buffer[1]) sig=1;

else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;

sonst sig=0;

if (ich1_buffer[1]>ich2_buffer[1])

if (ich1_buffer[2]<ich2_buffer[2])

Alert(Symbol()+": Kauf");

if (ich1_buffer[1]<ich2_buffer[1])

if (ich1_buffer[2]>ich2_buffer[2])

Alert(Symbol()+": sale");

//--- Rückgabe des Handelssignals

zurück (sig);

}

//+------------------------------------------------------------------+

Wie kann ich erreichen, dass der Alarm nur einmal und nicht ständig aufgerufen wird?

Führen Sie ihn nicht jedes Mal aus, sondern nur bei Bedarf.
 
Vasiliy Smirnov:
Führen Sie sie nicht jedes Mal aus, sondern nach Bedarf.
Und wie sollte es sein? Wenn sich ein neuer Balken öffnet - dann machen Sie einen Check für einen neuen Balken...
Grund der Beschwerde: