MIR_KAZAN: Wie füge ich in OrderSend TP, Sl ein, so dass SL das Hoch der vorherigen Kerze und TP das Tief der vorherigen Kerze + TakeProfit ist?
Zum Beispiel so:
int ticet = 0;
double Stop =0;
double Take =0;
Stop = NormalizeDouble(Low[1]-StopLoss*Point,Digits);
Take = NormalizeDouble(High[1]+TakeProfit*Point,Digits);
ticet=OrderSend(Symbol(), OP_BUYLIMIT, Lots, High[1],10, Stop, Take,"Set bu ForexRobot",Magic,0,clrNone);
if (Ticet==0) Print("Ошибка открытия ордера BUY LIMIT");
Stop = NormalizeDouble(High[1]+StopLoss*Point,Digits);
Take = NormalizeDouble(Low[1]-TakeProfit*Point,Digits);
Ticet = OrderSend(Symbol(), OP_SELLLIMIT, Lots, Low[1],10, Stop, Take,"Set bu ForexRobot",Magic,0,clrNone);
if (Ticet==0) Print("Ошибка открытия ордера SELL LIMIT"); )
Bitte beachten Sie außerdem, dass der 4. Parameter der OrderSend()-Funktion, der Preis, zu dem die BUY LIMIT-Order gesetzt wird, niedriger sein muss als der aktuelle Preis. Und für einen SELL LIMIT-Auftrag sollte dieser Parameter höher sein als der aktuelle Preis. Wenn Sie eine schwebende BUY-Order über dem aktuellen Kurs einstellen möchten, sollten Sie den Auftragstyp OP_BUYSTOP verwenden. Lesen Sie in der Hilfe, wie sich STOP-Aufträge von LIMIT-Aufträgen unterscheiden.
Ich würde auch eine Prüfung hinzufügen, um zu sehen, wo der aktuelle Preis zum Zeitpunkt der Auftragserteilung liegt.
if (Bid>High[1])
ticet=OrderSend(Symbol(), OP_BUYLIMIT, Lots, High[1],10, Stop, Take,"Set bu ForexRobot",Magic,0,clrNone);
.....
if (Ask<Low[1])
Ticet = OrderSend(Symbol(), OP_SELLLIMIT, Lots, Low[1],10, Stop, Take,"Set bu ForexRobot",Magic,0,clrNone);
Wenn ich Ihre Idee richtig verstanden habe, sollte sie wie folgt aussehen
Wenn der aktuelle Kurs unter dem Minimum der vorherigen Kerze liegt, platzieren wir eine SELL LIMIT Order zum Minimum der vorherigen Kerze;
Wenn der aktuelle Kurs höher ist als das Maximum der vorherigen Kerze, dann BUY LIMIT auf das Maximum der vorherigen Kerze.
Bitte beachten Sie außerdem, dass der 4. Parameter der OrderSend()-Funktion, der Preis, zu dem die BUY LIMIT-Order gesetzt wird, niedriger sein muss als der aktuelle Preis. Und für einen SELL LIMIT-Auftrag sollte dieser Parameter höher sein als der aktuelle Preis. Wenn Sie eine schwebende BUY-Order über dem aktuellen Kurs einstellen möchten, sollten Sie den Auftragstyp OP_BUYSTOP verwenden. Lesen Sie in der Hilfe, wie sich STOP-Aufträge von LIMIT-Aufträgen unterscheiden.
Ich würde auch eine Prüfung hinzufügen, um zu sehen, wo der aktuelle Preis zum Zeitpunkt der Auftragserteilung liegt.
Wenn ich Ihre Idee richtig verstanden habe, sollte sie wie folgt aussehen
Wenn der aktuelle Kurs unter dem Minimum der vorherigen Kerze liegt, platzieren wir eine SELL LIMIT Order zum Minimum der vorherigen Kerze;
Wenn der aktuelle Kurs höher ist als das Maximum der vorherigen Kerze, dann BUY LIMIT auf das Maximum der vorherigen Kerze.
Wie bringe ich meinen EA dazu, nur am Montag zu funktionieren?
yakton: Wenn Sie eine gute Strategie haben und bereit sind, sie mit anderen zu teilen, kann ich einen EA schreiben. Ich lade Sie ein, entweder öffentlich oder in privaten Nachrichten darüber zu diskutieren.
Ich habe ein paar Gedanken zu einer automatisierten Strategie. Man muss es einfach durchdenken, und eine Version reicht nicht aus.
Vitalii Ananev: Sie benötigen die Funktion DayOfWeek(). Gibt die laufende Nummer des Wochentags zurück. Für Montag wird es die 1. Für weitere Einzelheiten lesen Sie bitte die Hilfe.
Warum ist der Expert Advisor am Anfang des Tests profitabel, aber am letzten Tag des Tests verliert er Geld?
Wie füge ich in OrderSend TP, Sl ein, so dass SL das Hoch der vorherigen Kerze und TP das Tief der vorherigen Kerze + TakeProfit ist?
Zum Beispiel so:
Bitte beachten Sie außerdem, dass der 4. Parameter der OrderSend()-Funktion, der Preis, zu dem die BUY LIMIT-Order gesetzt wird, niedriger sein muss als der aktuelle Preis. Und für einen SELL LIMIT-Auftrag sollte dieser Parameter höher sein als der aktuelle Preis. Wenn Sie eine schwebende BUY-Order über dem aktuellen Kurs einstellen möchten, sollten Sie den Auftragstyp OP_BUYSTOP verwenden. Lesen Sie in der Hilfe, wie sich STOP-Aufträge von LIMIT-Aufträgen unterscheiden.
Ich würde auch eine Prüfung hinzufügen, um zu sehen, wo der aktuelle Preis zum Zeitpunkt der Auftragserteilung liegt.
Wenn ich Ihre Idee richtig verstanden habe, sollte sie wie folgt aussehen
Wenn der aktuelle Kurs unter dem Minimum der vorherigen Kerze liegt, platzieren wir eine SELL LIMIT Order zum Minimum der vorherigen Kerze;
Wenn der aktuelle Kurs höher ist als das Maximum der vorherigen Kerze, dann BUY LIMIT auf das Maximum der vorherigen Kerze.
Vielleicht sollten Sie einen Dienstleistungsjob annehmen?
Das Thema ist also für Trittbrettfahrer).
Grüße, kann mir jemand sagen, wie ich eine Funktion schreiben kann, ich habe ein Thema erstellt und es ist still... Ich schätze, alle sind hier.
https://www.mql5.com/ru/forum/43095
Vielen Dank im Voraus.
Zum Beispiel so:
Bitte beachten Sie außerdem, dass der 4. Parameter der OrderSend()-Funktion, der Preis, zu dem die BUY LIMIT-Order gesetzt wird, niedriger sein muss als der aktuelle Preis. Und für einen SELL LIMIT-Auftrag sollte dieser Parameter höher sein als der aktuelle Preis. Wenn Sie eine schwebende BUY-Order über dem aktuellen Kurs einstellen möchten, sollten Sie den Auftragstyp OP_BUYSTOP verwenden. Lesen Sie in der Hilfe, wie sich STOP-Aufträge von LIMIT-Aufträgen unterscheiden.
Ich würde auch eine Prüfung hinzufügen, um zu sehen, wo der aktuelle Preis zum Zeitpunkt der Auftragserteilung liegt.
Wenn ich Ihre Idee richtig verstanden habe, sollte sie wie folgt aussehen
Wenn der aktuelle Kurs unter dem Minimum der vorherigen Kerze liegt, platzieren wir eine SELL LIMIT Order zum Minimum der vorherigen Kerze;
Wenn der aktuelle Kurs höher ist als das Maximum der vorherigen Kerze, dann BUY LIMIT auf das Maximum der vorherigen Kerze.
Wie bringe ich meinen EA dazu, nur am Montag zu funktionieren?
Wenn Sie eine gute Strategie haben und bereit sind, sie mit anderen zu teilen, kann ich einen EA schreiben. Ich lade Sie ein, entweder öffentlich oder in privaten Nachrichten darüber zu diskutieren.
Wie kann ich meinen EA nur montags arbeiten lassen?
Sie benötigen die Funktion DayOfWeek(). Gibt die laufende Nummer des Wochentags zurück. Für Montag wird es die 1. Für weitere Einzelheiten lesen Sie bitte die Hilfe.