Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 72

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
Wenn man es mit dem Gleichgewicht vergleicht, dann ist es so:
Ich danke Ihnen.
OK, dann, wie ich es verstehe, erhalten wir drei verschiedene benutzerdefinierte Funktionen mit der Rückkehr der richtigen (wenn wir für drei verschiedene Parameter suchen)
ArraySort
dann
ArrayBsearch nach der richtigen Nummer
und wie geht man dann damit um?
Genau der Übergang von einem Array zu einem StrukturelementDu verstehst das nicht.
Sie müssen eine einzige Funktion erstellen, die das global deklarierte Array auffüllt und sortiert. Das Array muss als Referenz an die Funktion übergeben werden.
Und Sie brauchen zusätzliche Funktionen, die die benötigten Daten aus diesem Array herausnehmen.
Du verstehst das nicht.
Sie müssen eine einzige Funktion erstellen, die das global deklarierte Array füllt und sortiert. Das Array muss als Referenz an die Funktion übergeben werden.
Und Sie brauchen zusätzliche Funktionen, die die Daten, die Sie benötigen, aus diesem Array übernehmen.
Ok, können Sie demonstrieren, wie man etwas aus einem Array von Strukturen nimmt? sagen wir gefüllt und sortiert
wie man durch Verweis und Schreiben überträgt.
Bitte teilen Sie mir mit, wie der Zustand aussehen soll. Wenn ein Stop-Loss ausgelöst wird, wird das Lot mit 2 multipliziert, und wenn der nächste Auftrag einen Take-Profit auslöst, würde das Lot zum ursprünglichen Lot zurückkehren, das vor dem Stop-Loss lag.
Ich verstehe es so, aber ich weiß nicht, wie es weitergehen soll...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
Eine weitere Frage: Was habe ich im Block "Aufträge löschen" falsch geschrieben? Es werden nicht immer Aufträge gelöscht.
market order #1 cannot be deleted
{
for(int n=OrdersTotal()-1;n>=0;n--)
{
if(OrderSelect(n,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
bool del=OrderDelete(OrderTicket());
if (del==true)
{
otl_b=0; otl_s=0; //обнуляем переменные отложек
}
}
}
}
}
Noch eine Frage: Was habe ich falsch in den Block zum Löschen von Aufträgen geschrieben? Es werden nicht immer Aufträge gelöscht, im Log steht
market order #1 cannot be deleted
{
for(int n=OrdersTotal()-1;n>=0;n--)
{
if(OrderSelect(n,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
bool del=OrderDelete(OrderTicket());
if (del==true)
{
otl_b=0; otl_s=0; //обнуляем переменные отложек
}
}
}
}
}
Sie versuchen, einen Marktauftrag zu löschen. Diese werden nicht gelöscht, sondern mit der Funktion OrderClose() geschlossen. Damit die Schleife korrekt gelöscht oder geschlossen werden kann, müssen wir den Auftrag nach seinem Typ unterscheiden.
if(OrderType()<=OP_SELL) - für Marktaufträge, if(OrderType()>OP_SELL) - für schwebende Aufträge.
Es gibt eine Funktion namensCHARTEVENT_MOUSE_MOVE
Frage: Funktioniert das auch auf mobilen Geräten, die keine Maus haben?
Bitte teilen Sie mir mit, wie der Zustand aussehen soll. Wenn ein Stop-Loss ausgelöst wird, wird das Lot mit 2 multipliziert, und wenn der nächste Auftrag einen Take-Profit auslöst, würde das Lot zum ursprünglichen Lot zurückkehren, das vor dem Stop-Loss lag.
Ich verstehe es so, aber ich weiß nicht, wie es weitergehen soll...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
Bitte teilen Sie mir mit, wie der Zustand aussehen soll. Wenn ein Stop-Loss ausgelöst wird, wird das Lot mit 2 multipliziert, und wenn der nächste Auftrag einen Take-Profit auslöst, würde das Lot zum ursprünglichen Lot zurückkehren, das vor dem Stop-Loss lag.
Ich verstehe es so, aber ich weiß nicht, wie es weitergehen soll...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
Die Lösung dieses Problems hängt von der vollständigen Logik des Expert Advisors ab. Sie können das Auslösen von Stoploss oder Takeprofit anhand des Kommentars nachvollziehen.
if(StringFind(OrderComment(),"tp")>=0)// сработал тейкпрофит
...
Du verstehst das nicht.
Sie müssen eine einzige Funktion erstellen, die das auf globaler Ebene deklarierte Array füllt und sortiert. Das Array muss als Referenz an die Funktion übergeben werden.
Und Sie brauchen zusätzliche Funktionen, die die benötigten Daten aus diesem Array herausnehmen.