[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 53
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ich habe eine solche Nuance festgestellt, wenn ich in meinem EA einen Druck vorschreibe, nämlich:
double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1);
Drucken ("+++++++++++++", Up);
zeigt der Expert Advisor das folgende Ergebnis an: ++++++++++++++ 2147483647. Die gleiche Zahl kann ich auch für Aufwärts- und Abwärtspuffer sehen. Bitte teilen Sie mir mit, um welche Art von Code es sich handelt? Und wie bekommt man den Wert von Ikastom genau dann, wenn der Pfeil erscheint?
Ich bitte um ein wenig Hilfe von sachkundigen Personen: Bitte geben Sie den korrekten Code an, um einen Expert Advisor/Utility zu erstellen, dessen Algorithmus wie folgt ist:
- Eröffnung eines Doppelgeschäfts in EINER Richtung (Lots 0,1 und 0,1) erfolgt im Moment der Kreuzung Tief (Verkauf)/Hoch (Kauf) der zuletzt gebildeten Kerze im aktuellen Chart / aktuellen Zeitrahmen mit einem Stopp in der Nähe des Hochs / Tiefs der Kerze, bei der Kreuzung von denen die Transaktion eröffnet und Platzierung im gleichen Punkt der anhängigen Bestellung ein Doppelgeschäft in einer Richtung mit Lots, wie 0,2 und 0,1.
Frage:
Es gibt einen Code
int start()
if (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==ZeitSekunden(TimeCurrent())
{+ einige Bedingungen
Dann wird die Bestellung geöffnet
Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alert ("Buy order opened ",Ticket);
return;}
Wenn aber zu diesem Zeitpunkt kein Häkchen vorhanden ist, wird es nicht ausgelöst.
Aber wenn ich ihm mehr Zeit zum Nachdenken gebe, kann er mehrere Aufträge eröffnen.
Ich sollte nur einen Auftrag haben, ohne auf bereits offene Aufträge zu achten.
Bitte beraten Sie mich, was zu tun ist
Ich habe eine solche Nuance festgestellt, wenn ich in meinem EA einen Druck vorschreibe, nämlich:
double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1);
Drucken ("+++++++++++++", Up);
zeigt der Expert Advisor das folgende Ergebnis an: ++++++++++++++ 2147483647. Die gleiche Zahl kann ich auch für Aufwärts- und Abwärtspuffer sehen. Bitte teilen Sie mir mit, um welche Art von Code es sich handelt? Und wie bekommt man den Wert von Ikastom genau dann, wenn der Pfeil erscheint?
Versuchen Sie, die Indikatorwerte nicht über iCustom(), sondern über die globalen Variablen des Terminals zu übergeben. Das sind die, die Sie bei F3 sehen können. Es ist nämlich nicht ungewöhnlich, dass dies die einzige normale Art der Datenübertragung ist. Ich habe solche Fälle erlebt.
Es ist durchaus möglich, dass in Ihrem Indikator einige Arten von Pfeilen durch den Indikatorpuffer gezeichnet werden, während andere als Objekte erstellt werden. Dies ist der einzige Grund, warum im Datenfenster möglicherweise keine Pfeilpreise angezeigt werden - die Daten werden in diesem Fenster aus den Indikatorpuffern ausgegeben.
Frage:
Es gibt einen Code
int start()
if (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==ZeitSekunden(TimeCurrent())
{+ einige Bedingungen
Dann wird die Bestellung geöffnet
Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alert ("Buy order opened ",Ticket);
return;}
Wenn aber zu diesem Zeitpunkt kein Häkchen vorhanden ist, wird es nicht ausgelöst.
Aber wenn ich ihm mehr Zeit zum Nachdenken gebe, kann er mehrere Aufträge eröffnen.
Ich sollte nur einen Auftrag haben, ohne auf die bereits offenen Aufträge zu achten.
Bitte beraten Sie mich, was zu tun ist
Der EA-Code wird NUR ausgelöst, wenn ein neuer Tick eintrifft. Es wird mehr als ein Auftrag eröffnet, da beim nächsten Tick das Setup-Signal ebenfalls wahr ist und die Anzahl der Aufträge nicht überprüft wird. Wir müssen die Aufträge neu kalkulieren.
Versuchen Sie, Indikatorwerte nicht über iCustom(), sondern über Variablen der globalen Terminalebene zu übergeben. Diese können mit F3 eingesehen werden. Es ist nämlich nicht ungewöhnlich, dass dies die einzige normale Art der Datenübertragung ist. Ich habe solche Situationen schon erlebt.
Es ist möglich, dass in Ihrem Indikator einige Pfeiltypen durch einen Indikatorpuffer gezeichnet werden und andere als Objekte erstellt werden. Dies ist der einzige Grund, warum im Datenfenster möglicherweise keine Pfeilpreise angezeigt werden - die Daten werden in diesem Fenster aus Indikatorpuffern ausgegeben.
Herzlichen Dank! Ich werde jetzt das Rezept ausprobieren, wie Sie gesagt haben.
Wenn aber zu diesem Zeitpunkt kein Häkchen vorhanden ist, wird sie nicht ausgelöst.
und wenn Sie ihm mehr Zeit zum Nachdenken geben, kann es mehrere Aufträge eröffnen.
Aber ich brauche nur einen, und ich möchte nicht, dass er sich um bereits offene Aufträge kümmert.
Können Sie mir sagen, was ich tun soll
?
1. der globale Zeitpunkt last_dt;
2. die richtige Zeit einstellen
datetime dt=StrToTime(H+": "+M+": "+S);
3.
if (TimeCurrent()>=dt && last_dt<dt) // die richtige Zeit ist gekommen und es ist der nächste Tag
{
// den Auftrag öffnen
if (ticket>0) last_dt=TimeCurrent(); // Erinnerung an den Zeitpunkt der Öffnung
}
dann liefert der EA das folgende Ergebnis: ++++++++++++++ 2147483647. Und die gleiche Zahl für die Aufwärts- und Abwärtspuffer.
Ich verstehe das.
Ich muss die Neuberechnung von Aufträgen genauer beschreiben. Vielleicht ein Beispiel (in Codeform) oder einen Link.
Ich habe es folgendermaßen versucht
if (Ticket > 0)
Alert ("Opened Buy order ",Ticket);
sleep (10000)
return;}
aus irgendeinem Grund fehlgeschlagen
Der EA-Code wird NUR ausgelöst, wenn ein neuer Tick eintrifft. Es wird mehr als ein Auftrag eröffnet, da beim nächsten Tick das gesetzte Signal ebenfalls wahr ist und die Anzahl der Aufträge nicht überprüft wird. Wir müssen die Aufträge neu kalkulieren.
Ich möchte, dass die Software das Datum ignoriert, nur die Uhrzeit ist wichtig.
Wird Ihr Rat in diesem Fall funktionieren?
1. global datetime last_dt;
2. die Zeit richtig einstellen
datetime dt=StrToTime(H+": "+M+": "+S);
3.
if (TimeCurrent()>=dt && last_dt<dt) // es ist die richtige Zeit und es ist der nächste Tag
{
//Offener Auftrag
if (ticket>0) last_dt=TimeCurrent(); // Erinnerung an die Öffnungszeit
}