Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 490
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
Guten Tag!
Ich habe einen EA, der bestimmte Berechnungen durchführt. Es werden verschiedene mathematische Operationen, Arrays und Schleifen verwendet. Es speichert das Ergebnis in einer Datei. Es muss alles wieder von vorne beginnen, nachdem es alle Aktionen durchgeführt hat. Es hat alle Berechnungen einmal durchgeführt und hängt sich dann zum zweiten Mal auf, ohne dass eine weitere Aktion erfolgt. Können Sie mitteilen, ob es notwendig ist, Variablen auf Null zu setzen, Arrays zu löschen oder etwas anderes, bevor eine neue Berechnung gestartet wird?
Haben Sie versucht, die Datei zu schließen?
Wie programmiert man eine Krücke/Indikator/Skript (als Indikator mit Tabs "about, general, input parameters, colors, display") für MT4 so, dass es die Daten aus einer .csv-Datei übernimmt, z.B. das Format derQuelldatei:
D.h.der Indikator nimmt die aufgezeichneten Daten aus einer Datei und stellt sieals Liniensegment (TF, TA) oder als farbiges Band(EA) mit den Parametern des Umfangs gleich "ein Tag"dar.(von der Umrandung bis zur Umrandung der vertikalen Trennlinien der Tage auf МТ4), für die Zeilen Auswahl der Zeilenfarbe, des Zeilentyps, Auswahl der Textfarbe und der Kommentargröße und Ersetzung der Kommentarzeile als "TF - 1,192" durch die zweite Zeile "TF - 1,1733", die aus den entsprechenden Zeilen der Datei übernommen werden. Der Bereich ist rein horizontal und nimmt von der Zeile EUR;TF;1.192;1,1733 die erste Ziffer für einen Slot und die zweite Ziffer für den zweiten als Beginn des Slots 1.192 und das Ende des Slots 1.192.
Es gibt auch Bereiche, zum Beispiel EA, das Prinzip ist das gleiche von Anfang bis Ende des Tages, aber der Preis ist anders und die Linie beginnt und endet mit CHF;AB1;1.03484132734247;1.02549513556164 Anfang ist1.03484132734247 Ende des Bereichs1.02549513556164. Er läuft beim Einschalten von MT4 (als üblicher Indikator auf dem Gafik), jeden Tag auf dem Chart und fügt alle Daten genau für den aktuellen Tag einmal hinzu, alle früher angelegten Linien werden nicht aus dem Chart gelöscht und duplizieren ihn nicht. Dabei wählt er alle Segmente und Bereiche für den Tag aus und zeigt sie an, und zwar nur dort, wo sich das aktive Fenster gerade befindet, und in anderen aktiven Fenstern (d.h. dort, wo er gerade läuft) (d.h. er öffnete ein Paar und der Indikator zeichnete alle Segmente und Bereiche des aktuellen Tages und beruhigte sich usw. für die Paare).
Zum Beispiel, wie sollte die Registerkarte des IndikatorsEingabeparameteraussehen:
versucht, mich zu kritzeln, aber nicht bekommen eine verdammte Sache, obwohl schien einfach (aber ich bin ein Menschenfreund, was kann man tun....) Hilfe bitte ertrinken !!!!!!!!
Hallo!
Bitte helfen Sie mir, einen Fehler im folgenden Programm zu finden!!!
//+------------------------------------------------------------------+
//|Test.mq4 |
//| Copyright 2018, MetaQuotes Software Corp.
//|https://www.mql5.com ||
//+------------------------------------------------------------------+
#property copyright "365_MA"
#property link "https://www.mql5.com"
#Eigenschaft Version "1.00"
#Eigenschaft streng
extern Periode_MA = 365; //Periode MA 1
extern double Delta = 0.0010; //Der Abstand, bei dem der Auftrag geöffnet werden kann
string Symb; //Name des Handelsinstruments
//int Gesamt; //Anzahl der Aufträge
//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion|
//+------------------------------------------------------------------+
int init()
{
//----
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion|
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("Obj_Label");
ObjectDelete("Obj_Label2");
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Expertenstartfunktion|
//+------------------------------------------------------------------+
int start()
{
double prise = Bid;//aktueller Preis
double CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); //der Wert des gleitenden Durchschnitts
double Price2MA = Preis - CurrMAValue;//Abstand zwischen MA und Preis
datetime NextClose = Time(0) + Period()*60*2;//Zeit zum Schließen
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1; //Zeit bis zum Schließen in Minuten
//int err;
//Auffrischung der Textinformationen im Diagramm
ObjectSetText ("Obj_Label", "TF" + Period() + ", " + DoubleToStr(price, 4) + ", tick " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10,
ObjectSetText ("Obj_Label2", "Delta " + DoubleToStr(Delta,4) + ", MA-Wert " + DoubleToStr(CurrMAValue, 4) + ", Abstand zum MA " + DoubleToStr(Price2MA, 4), 10, "Arial", DarkGreen );
//Berücksichtigung des Preises und Erzeugung von Warnmeldungen
wenn ((MathAbs(Price2MA) < Delta) && // wenn der Abstand zu МА kleiner als Delta ist
(Preis > CurrMAValue) && // und der Preis ist höher als MA
(Open(0) > CurrMAValue+Delta) // und die aktuelle Kerze öffnete höher als MA+Delta
(
Alert ("Preis nähert sich dem MA von oben;)
)
wenn ((MathAbs(Price2MA) < Delta) && // wenn der Abstand zum MA kleiner als das Delta ist
(Preis < CurrMAValue) && // und der Preis liegt unter dem MA
(Open(0) < CurrMAValue-Delta)) // und die aktuelle Kerze öffnete unterhalb des MA-Deltas
(
Warnung ("Der Kurs hat sich unter den MA bewegt;)
)
zurück(0);
//+------------------------------------------------------------------+
Nach dem Kompilieren tritt folgender Fehler auf
Hallo!
Bitte helfen Sie mir, einen Fehler im folgenden Programm zu finden!!!
Nach dem Kompilieren tritt der folgende Fehler auf.
Es wurde eine geschweifte Klammer ausgelassen.
Ich muss Zigzag in meinen eigenen Indikator integrieren (jetzt zählt er nach Griff)
Die Sache ist die, dass mein Indikator OnCalculate() nicht verwendet.
Wie kann ich also den Zickzackkurs realisieren und wie erhalte ich rates_total und prev_calculated?
rates_total ist die Anzahl der Balken im Diagramm. Sie wird mit Hilfe der Funktion Balken ermittelt.
prev_calculated - erstellen Sie selbst ein Analogon, deklarieren Sie es global (oder statisch) und schreiben Sie dort die tatsächlich berechnete Anzahl der Balken in der aktuellen Iteration. Das bedeutet, dass wir nach erfolgreicher Berechnung der Indikatorwerte die Anzahl der aktuellen Balken in den Indikator eintragen müssen. Wenn die Berechnungen nicht erfolgreich sind, ist es besser, sie zu annullieren, um bei der nächsten Iteration die Indikatorwerte für jeden Balken in der Historie neu zu berechnen.
Re: Alekseu Fedotov
Was ist eine Klammer, sorry
Re: Alekseu Fedotov
Was ist eine Klammer, sorry
In eckigen Klammern der Index des Feldes x[25].
void start()
{
In geschweiften Klammern Operator-Block
}
In Klammern das Argument der Funktion sin(30)
in eckigen Klammern der Index des Feldes x[25]
void start()
{
In geschweiften Klammern Operator-Block
}