[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 628
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
Problem mit Symbol() MT4:
2 Funktionen zur Veranschaulichung:
Die Ausführung der ersten gibt einen leeren String aus:
Aber die zweite Funktion gibt eine String-ID "EURUSD" aus (naja, hängt vom Chart ab, aber gibt aus, obwohl es nach der Logik der Funktion ein leerer String sein sollte):
Helfen Sie mir zu verstehen, was los ist? Dankeschön
Sie haben keinen Auftrag in der Funktion Handel () ausgewählt.
Im Übrigen. Welchen Sinn hat die Auswahl eines Auftrags in der Funktion Trade()? Ich rufe die Funktion OrdersModifying() auf, in der die Bestellung ausgewählt und dort geändert wird. D.h., die ursprüngliche Variante war richtig!
Das ist es. Hier ist die Lösung.
Und die Änderungsfunktion ist hier:
Seltsam Aber es gibt keine Stopps und Takes auf dem Ausgang wieder.
OrderSelect(g_ticket,SELECT_BY_TICKET) vor der Zeile if(OrderStopLoss() == 0 || OrderTakeProfit() == 0)
History, History_Draw - sie funktionieren wie Expert Advisors während des Testens.
So etwas brauchen Sie, um Korrekturen in der Historie anhand bestimmter Parameter zu beobachten
In der Geschichte oder in der Tabelle? Wenn ja, welche Art von Daten möchten Sie im Chart-Fenster sehen, in einem separaten Fenster, als Tabelle gedruckt, in Form von verschiedenfarbigen Kerzen oder als Linie, die den Beginn und das Ende der Bewegung verbindet?
OrderSelect(g_ticket,SELECT_BY_TICKET) vor der Zeile if(OrderStopLoss() == 0 || OrderTakeProfit() == 0)
Genau das habe ich getan:
Es gibt keine Stopps und Übernahmen. Im Protokoll wird der Fehler 130 angezeigt, der besagt, dass die Haltestellen falsch sind. Ich sehe den Grund dafür nicht.
Genau das habe ich getan:
Es gibt keine Stopps und Übernahmen. Im Protokoll wird der Fehler 130 angezeigt, der besagt, dass die Haltestellen falsch sind. Ich sehe keinen Grund dafür.
Ohne ifs, nurOrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES);, und Sie können es in OrdersModifying() lassen
//+------------------------------------------------------------------+
void AufträgeÄndern()
{
OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES);
if(g_type == OP_BUY)
{
if(i_sl != 0)sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt,Digits); // Wenn der Eingabeparameter für den Stop Loss nicht 0 ist
// Ermittelt den Wert des Stop Loss für den ausgewählten Auftrag
if(i_tp != 0)tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,Digits); // Wenn der Eingabeparameter TakeProfit ungleich 0 ist, dann...
// Erhalten Sie den TakeProfit-Wert für den ausgewählten Auftrag
}
if(g_type == OP_SELL)
{
if(i_sl != 0)sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,Digits); // Wenn der Eingabeparameter des Stop Loss nicht 0 ist
// Ermittelt den Wert des Stop Loss für den ausgewählten Auftrag
if(i_tp != 0)tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,Digits); // Wenn der Eingabeparameter TakeProfit ungleich 0 ist, dann...
// Erhalten Sie den TakeProfit-Wert für den ausgewählten Auftrag
}
if(sl != 0 || tp != 0) // Wenn die ermittelten Werte von sl und tp ungleich 0 sind, dann..
{
OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime); // Änderung der Bestellung
}
}
Problem mit Symbol() MT4:
2 Funktionen zur Veranschaulichung:
Die Ausführung der ersten gibt einen leeren String aus:
Aber die zweite Funktion gibt eine String-ID "EURUSD" aus (naja, hängt vom Chart ab, aber gibt aus, obwohl es nach der Logik der Funktion ein leerer String sein sollte):
Helfen Sie mir zu verstehen, was los ist? Dankeschön
Sie können keine reservierten Namen (Wert) verwenden, wenn Sie Ihre Variablen deklarieren, rufen Sie _Wert
Genau das habe ich getan:
Es gibt keine Stopps und Übernahmen. Im Protokoll wird der Fehler 130 angezeigt, der besagt, dass die Haltestellen falsch sind. Ich sehe keinen Grund dafür.
Und das werden sie nicht!
Vitaly, ich habe getan, was Sie gesagt haben, aber es hat sich nichts geändert. Offenbar liegt der Fehler irgendwo anders begraben.
Vorher hatte ich alles (Eröffnung von Aufträgen - Änderung und Übertragung auf b.w., wenn das festgelegte Preisniveau erreicht ist) und alles hat funktioniert. Es war folgendermaßen:
Jetzt, wo ich alles in spezifische, spezialisierte Funktionen aufgeteilt habe, funktioniert das alles nicht mehr soooo sehr. Ich habe es auf beide Arten versucht, nichts funktioniert.
Und das werden sie nicht!
Wo ist da die Logik? Ich würde gerne verstehen... Hier ist die Funktion:
Wenn die Eingangsvariablen i_sl und i_tp ungleich Null sind, erhalten wir die Stopp- und Take-Kurse, die bereits in der Order enthalten sind - sl undtp. Danach werde ich prüfen, ob wirhiersl undtp berechnet haben(wenn für Shorts):
Wenn die Werte erhalten werden, können sie nicht Null sein, denn sie werden geändert! Dies sind Variablen, die wir sequentiell durch den Codekontext erhalten.
Und hier habe ich überprüft, ob wir die Werte von Stop und Take gefunden haben. Wie können sie nach all den Bedingungen gleich Null sein?