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
die These: Bewegung=Leben, Ruhe=Tod. Was steht im Protokoll? Unten rechts befinden sich zwei Registerkarten
wenn ich einen hätte, würde ich ihn überprüfen und reparieren ...
Forum für Handel, automatisierte Handelssysteme und Strategietests
Fragen von Anfängern MQL4 MT4 MetaTrader 4
Ilya Prozumentov, 2017.06.11 13:53
Es gibt eine Klassenvorlage für die Arbeit mit einem Array.Für diese Vorlagenklasse müssen wir eine Sortierung implementieren, da das Array komplexe Datentypen speichern kann. Zum Beispiel:
ArrayList<PP*> *dde; // PP - класс
Ich kann verschiedene Funktionen für einfache und komplexe Typen schreiben, aber der Compiler versteht nicht, dass Funktionen starr durch den Datentyp abgegrenzt sind und flucht weiter:
<' - unzulässige Operation ArrayList.mqh verwenden
Deshalb habe ich beschlossen, die Schnittstelle einzubetten:
Alle Teile des Konstrukts sind kompilierbar. Aber wenn Sie versuchen, es zu deklarieren:
ArrayList<PP*> *dde; // PP - класс
dann werden beim Kompilieren der Datei diese Fehler angezeigt:'QuickSorts' - Vorlage stimmt nicht überein varQSort.mqh /*Fehler 1*/
'=' - Typ-Fehlanpassung ArrayList.mqh /*Fehler 2*/
P.S.Was sollte ich im Code korrigieren, um diese Typinkongruenz zu beseitigen? Ich verstehe nicht, warum es überhaupt dazu gekommen ist.
<' - unzulässige Operation varQSort.mqh verwenden
spukt mir auch in diesem Konstrukt im Kopf herum. Genau diesen Fehler wollte ich loswerden. Aber ich verstehe diesen Fehler, und ich verstehe diese beiden nicht.
Ich brauche, z.B. am Montag, wenn ich 2 oder 3 Trades eröffnen muss, die Funktion vergleicht die Zeit und sendet die Pipe, aber ich habe bisher eine Zeit verglichen.
Denn wenn Sie auf die Schaltfläche "Herunterladen" klicken, werden 6 000 000 Kurse heruntergeladen. Nicht jeder möchte die Festplatte mit Kursdaten füllen, lange warten, bis sie heruntergeladen sind, und dann unnötige Daten aus der Kurstabelle entfernen.
Hallo Lieber ... Können Sie mir sagen, warum der angegebene Trailing-Stop-Code für BUY-Aufträge korrekt funktioniert ...
... ... aber der gleiche für SELL-Aufträge setzt keinen SL...
... Der Grund dafür ist höchstwahrscheinlich in der Bedingung(Ask+8*D*Point)<OrderStopLoss(), wenn wir sie entfernen, wird SL gesetzt, aber Trailing Stop funktioniert falsch ohne die angegebene Bedingung ...
FürBUY-Orders wirddie Bedingung(Bid-8*D*Point)>OrderStopLoss(), wennOrderStopLoss()==0, korrekt akzeptiert(d.h. irgendein Wert > 0) ...
... Aberdie Bedingung(Ask+8*D*Point)<OrderStopLoss(),OrderStopLoss()==0 ist nichtkorrekt ( d.h. irgendeinWert ist< 0
) ...Ich bitte um Ratschläge, wie man im Code die erforderliche Bedingung(Ask+8*D*Point)<OrderStopLoss()für die korrekte Arbeit vonTrailing Stop mitSELL-Orderskorrekt formuliert.
Ich danke allen, die im Voraus geantwortet haben
.Guten Tag: Es gibt eine Funktion, bei der der Indikator dieTick History Datei liest. Sie wird jedoch nur einmal gelesen, wenn der Indikator geladen oder aktualisiert wird. Wie kann ich erreichen, dass jedes Mal, wenn der erste Tick des Nullbalkens erscheint, dieser gelesen wird?
void ProcessOldCandles(int limit, TickStruct &lastTick)
{
int hTicksFile = FileOpen(Symbol() + ".tks", FILE_BIN | FILE_READ | FILE_SHARE_READ | FILE_SHARE_WRITE);
if (hTicksFile < 1)
return;
TickStruct tick;
while (!IsStopped())
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (tick.time >= Time[limit])
break;
}
lastTick = tick;
int barIndex = iBarShift(NULL, 0, tick.time);
while (barIndex >= 0)
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (!IsTickBelongToBar(tick, barIndex))
barIndex = iBarShift(NULL, 0, tick.time);
ProcessOneTick(barIndex, tick, lastTick);
}
FileClose(hTicksFile);
Hallo Lieber ... Können Sie mir sagen, warum dieser Trailing-Stop-Code für BUY-Aufträge korrekt funktioniert ...
... ... aber der gleiche für SELL-Aufträge setzt keinen SL...
... Der Grund dafür ist höchstwahrscheinlich in der Bedingung(Ask+8*D*Point)<OrderStopLoss(), wenn wir sie entfernen, wird SL gesetzt, aber Trailing Stop funktioniert falsch ohne die angegebene Bedingung ...
FürBUY-Aufträge wirddie Bedingung(Bid-8*D*Point)>OrderStopLoss(), wennOrderStopLoss()==0korrekt angenommen(d.h. irgendein Wert > 0) ...
... Aberdie Bedingung(Ask+8*D*Point)<OrderStopLoss(), wennOrderStopLoss()==0 wird nicht alskorrekt angesehen(d.h. irgendein Wert ist< 0
) ...Ich bitte um Ratschläge, wie man im Code die erforderliche Bedingung(Ask+8*D*Point)<OrderStopLoss()für die korrekte Arbeit desTrailing Stop mitSELL-Orderskorrekt formuliert.
Ich danke allen, die im Voraus geantwortet haben
.Hallo alle ... etwas sehr geringe Aktivität in diesem Forum Zweig ... das Problem wird auf diese Weise gelöst ...
... Es ist ein bisschen lang, aber es funktioniert... Wer weiß, wie man es kürzer machen kann, kann es kürzen, ich würde es zu schätzen wissen... der Rest von uns kann es so nutzen, wie es ist.
die Funktion eingeben
OrderCloseByTicket (542534564)
Schließen Sie den Auftrag nach Ticket mit vollem Lot.
so dass Sie keine Angaben zu Lots, Preis und Slippage machen müssen.
ähnlich wie das Anklicken eines Kreuzes auf der Bestellung im Terminal.
die Funktion eingeben
OrderCloseByPos (0)
Schließen Sie den Auftrag nach Position ab.
und dann ist es nicht mehr nötig, diese umständlichen Konstruktionen vorzuschreiben.
Hallo! Die beiden Minuszahlen q und w werden falsch verglichen, wenn sie gleich sind, denkt der if-Operator, dass die eine größer ist als die andere.Worin liegt der Fehler? Wenn q = -0,0002 und w ebenfalls -0,0002 ist, ist res12=falsch, warum?