Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 419
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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++;
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++;
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.
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.
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.
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 sie nicht jedes Mal aus, sondern nach Bedarf.