Hilfe bei der Codierung - Seite 245

 
mladen:
macerina

Nur der erste Teil (der Rest ist nur eine Variation davon):

wenn ema(7) < ema(21) und vorheriges ema(7) < vorheriges ema(21) dann wenn ema(von rsi(14),9) < rsi(14) Signal für Kauf

Sie können es auch so sagen:

wenn macd(7,12) < und vorheriges macd(7,12) < 0 dann wenn ema(von rsi(14),9) < rsi(14) Signal für Kauf

Danke für die Antwort mladen ist es möglich, einen mt4 Indikator mit diesen Kriterien zu codieren

Vielen Dank im Voraus

 
macerina:
Vielen Dank für die Antwort mladen ist es möglich, einen mt4-Indikator mit diesen Kriterien Code Danke im Voraus

macerina

Das ist ein einfaches macd + rsi System. Ich glaube, dass es bereits ein solches System gibt. Wenn es kein solches gibt, ist es einfach, einen Indikator zu machen und dann wird es gemacht werden

 
mladen:
Bitte posten Sie den Teil des Codes, in dem Sie versuchen, das zu erreichen, was Sie hier beschrieben haben: https: //www.mql5.com/en/forum/174385/page162 (nicht die 3 Take Profits, die auf Orders platziert werden, und die 3 Trailing Stops, die verwaltet werden, sondern den Teil, der versucht, genau das zu tun, was Sie beschrieben haben), und dann kann Ihnen vielleicht jemand bei der Codierung helfen.

//Zählung der offenen Kaufaufträge.

iOpenOrders_Buy = CntOrd(iOrderType_Buy,MagicNumber,Symbol());

//Zahl der offenen Verkaufsaufträge.

iOpenOrders_Sell = CntOrd(iOrderType_Sell,MagicNumber,Symbol());

if (iOpenOrders_Buy==3 || iOpenOrders_Sell==3)

{

if(TrailingStop>0 && TrailingStart > 0) TrailOrder (TrailingStart, TrailingStop);

}

if (iOpenOrders_Buy==1 || iOpenOrders_Sell==1)

{

if(TrailingStop_2>0 && TrailingStart_2 > 0) TrailOrder_3 (TrailingStart_2, TrailingStop_2);

}

//////////////////////////////////////////////////////////////////////////////////////////////

Dies war der Teil, in dem der EA nach der Anzahl der offenen Aufträge für das angehängte Paar sucht.

Wenn er 3 Aufträge findet, wird er die übliche Trailing Stop-Funktion ausführen. Und wenn er feststellt, dass nur ein Handel läuft, dann folgt er der zweiten Trailing-Stop-Funktion.

Für ein einzelnes Paar läuft dies 'OK', aber wenn ich diesen EA an mehrere Charts (Paare) anhänge, funktioniert er nicht, da er alle offenen Aufträge über die Funktion 'OrdersTotal()' abruft.

Ein Problem kommt mir sofort in den Sinn: Woher wissen Sie, dass es 3 Aufträge gab und dann nur noch einer übrig war (es gibt keine einzige Codezeile in diesem EA, die versucht, das herauszufinden)

//Ende - Offene Verkaufspositionen schließen------------------------------------------

double OpenPrice=Ask;

int count=3;

if (count==3)

{

BuyOrder_1=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_1, "Buy Order",MagicNumber, 0,Blue);

if (BuyOrder_1>0) //Prüfen, ob die Order eröffnet wurde oder nicht

{

sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + " Buy Order 1 erfolgreich gesendet. Ticket=" + BuyOrder_1;

count = count - 1;

//////////////////////////////////////////////////////////////

Somit nimmt count ab und öffnet Aufträge bis count=1. Es werden also 3 Aufträge eröffnet, da count=3 ist.

 
Oridroo:
//Zählen der offenen Kaufaufträge.

iOpenOrders_Buy = CntOrd(iOrderType_Buy,MagicNumber,Symbol());

//Zählen der offenen Verkaufsaufträge.

iOpenOrders_Sell = CntOrd(iOrderType_Sell,MagicNumber,Symbol());

if (iOpenOrders_Buy==3 || iOpenOrders_Sell==3)

{

if(TrailingStop>0 && TrailingStart > 0) TrailOrder (TrailingStart, TrailingStop);

}

if (iOpenOrders_Buy==1 || iOpenOrders_Sell==1)

{

if(TrailingStop_2>0 && TrailingStart_2 > 0) TrailOrder_3 (TrailingStart_2, TrailingStop_2);

}

//////////////////////////////////////////////////////////////////////////////////////////////

Dies war der Teil, in dem der EA nach der Anzahl der offenen Aufträge für das angehängte Paar sucht.

Wenn er 3 Aufträge findet, wird er die übliche Trailing Stop-Funktion ausführen. Und wenn er feststellt, dass nur ein Handel läuft, dann folgt er der zweiten Trailing-Stop-Funktion.

Für ein einzelnes Paar läuft dies 'OK', aber wenn ich diesen EA an mehrere Charts (Paare) anhänge, funktioniert er nicht, da er alle offenen Aufträge über die Funktion 'OrdersTotal()' abruft.

//Ende - Schließen Sie offene Verkaufspositionen------------------------------------------

double OpenPrice=Ask;

int count=3;

if (count==3)

{

BuyOrder_1=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_1, "Buy Order",MagicNumber, 0,Blue);

if (BuyOrder_1>0) //Prüfen, ob die Order geöffnet wurde oder nicht

{

sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + " Buy Order 1 erfolgreich gesendet. Ticket=" + BuyOrder_1;

count = count - 1;

//////////////////////////////////////////////////////////////

Die Anzahl der Aufträge nimmt also ab und es werden Aufträge eröffnet, bis die Anzahl = 1 ist. Es werden also 3 Aufträge eröffnet, da die Anzahl zunächst 3 beträgt.

Die Frage war folgende: Woher weiß er, dass es einmal 3 geöffnete Bestellungen gab, und dann nur noch eine übrig ist? Die Tatsache, dass es nur noch eine geöffnete Bestellung gibt, sagt nichts aus. Sie müssen in der Liste der geschlossenen Aufträge nach den 2 anderen Aufträgen suchen, die Teil eines Tripletts waren, und da Makler Ihr Kommentarfeld ändern können, gibt es keine Möglichkeit, wie Sie wissen können, dass einige Aufträge Teil desselben Tripletts waren (kein Feld in der Liste der Aufträge, das verwendet werden kann, um zu markieren, dass einige Aufträge zu einer gleichen Gruppe von Aufträgen gehören).

Sie könnten versuchen, Dateien zum Speichern von Ticketnummern zu verwenden, die zu Tripletts gehörten, aber wenn Sie versuchen, denselben EA von einem anderen Terminal aus zu verwenden, können Sie schreckliche Fehler erhalten. Das Gleiche kann passieren, wenn Sie Metatrader neu installieren. Die Verwendung von globalen Variablen ist noch schlimmer (sie sind fast das Gleiche wie die Verwendung von Dateien - nur schlimmer), so dass es keine sinnvolle Möglichkeit gibt, Drillinge von Aufträgen korrekt zu verfolgen

Wie kann man also herausfinden, dass 1 geöffnete Order die letzte geöffnete Order der 3 ist oder die erste geöffnete Order eines neuen Tripletts von Orders ist?

 
mladen:
Die Frage war folgende: woher weiß es, dass es einmal 3 offene Aufträge gab und dann nur noch einer übrig ist? Die Tatsache, dass nur noch ein offener Auftrag vorhanden ist, sagt nichts aus. Man muss in der Liste der geschlossenen Aufträge nach den 2 anderen Aufträgen suchen, die Teil eines Tripletts waren, und da Broker das Kommentarfeld ändern können, gibt es keine Möglichkeit, wie man wissen kann, dass einige Aufträge Teil eines gleichen Tripletts waren (kein Feld in der Auftragsliste, das verwendet werden kann, um zu markieren, dass einige Aufträge zu einer gleichen Gruppe von Aufträgen gehören). Wie findet man also heraus, dass 1 geöffneter Auftrag der letzte geöffnete Auftrag der 3 ist oder der erste geöffnete Auftrag eines neuen Tripletts von Aufträgen ist?

Mladen,

Ckeck Sie pm, brauchen Coder

Traum von einem GROSSEN Icon für PM !

 
mladen:
Wie kann man also herausfinden, ob es sich bei dem einen eröffneten Auftrag um den letzten der 3 Aufträge handelt oder um den ersten eines neuen Auftragstripletts?

Es gibt eine Bedingung:

if (MA_Difference_1>=Value_Diff && iOpenOrders_Buy ==0)

Damit stelle ich sicher, dass bei einem bestehenden Kaufauftrag kein neuer Kaufauftrag eröffnet wird, auch wenn die Bedingungen erfüllt sind. Es wird nur dann eine neue Order öffnen, wenn es keine bestehende Kauf-/Verkaufsorder gibt.

Und da es gleichzeitig 3 Aufträge der gleichen Art (Kauf/Verkauf) öffnet und zwei davon bereits geschlossen sind, ist der verbleibende Auftrag mit Sicherheit von der gleichen Art.

Ich habe es getestet. Es gibt also keine Verwirrung darüber.

 
Oridroo:
Es gibt eine Bedingung:

if (MA_Difference_1>=Value_Diff && iOpenOrders_Buy ==0)

Auf diese Weise stelle ich sicher, dass, wenn eine Kauforder vorhanden ist, keine neue Kauforder eröffnet wird, obwohl die Bedingungen erfüllt sind. Es wird nur dann eine neue Order öffnen, wenn es keine bestehende Kauf-/Verkaufsorder gibt.

Und da es gleichzeitig 3 Aufträge der gleichen Art (Kauf/Verkauf) eröffnet und zwei davon bereits geschlossen sind, ist der verbleibende Auftrag mit Sicherheit von der gleichen Art.

Ich habe es getestet. So gibt es keine Verwirrung über sie.

Bei der ganzen Sache gibt es eine Menge Annahmen. Die erste ist, dass, wenn Sie versuchen, 3 Aufträge zu öffnen, es tatsächlich 3 Aufträge öffnen wird. Was ist, wenn er nur 1 eröffnet? Und so weiter ...

Entschuldigung. Aber es scheint, dass wir die ganze Zeit über verschiedene Dinge reden. Ich hoffe, jemand kann Ihnen helfen, da ich es nicht kann.

Glücklicher Handel

 
mladen:
Es gibt eine Menge Annahmen in dieser ganzen Sache. Die erste ist, dass, wenn Sie versuchen, 3 Aufträge zu öffnen, es tatsächlich 3 Aufträge öffnen wird. Was, wenn er nur 1 eröffnet? Und so weiter ...

Entschuldigung. Aber es scheint, dass wir die ganze Zeit über verschiedene Dinge sprechen. Ich hoffe, jemand kann Ihnen helfen, denn ich kann es nicht.

Frohes Handeln

Wenn Sie es nicht können, ist es OK.

Ich habe es eine Zeit lang mit verschiedenen Brokern getestet und es ist bisher bei 3 Aufträgen nicht 'fehlgeschlagen'.

Wie auch immer, ich denke, Sie können mir zumindest sagen, welcher Punkt/Logik einen EA in die Lage versetzt, zwischen verschiedenen Paaren zu unterscheiden, während ich 'OrdersTotal()' aufrufe?

Jedes kleine EA-Beispiel wäre gut.

 
macerina:
Vielen Dank für die Antwort mladen ist es möglich, einen mt4-Indikator mit diesen Kriterien Code Danke im Voraus

macerina

Sehen Sie sich den Indikator in diesem Beitrag an: https: //www.mql5.com/en/forum/173574/page432. Es ist fast genau das gleiche wie das von aspen graphic code beschrieben

 

Danke Mladen für den Code ... Hat dies die doppelte macd Vergleich und 50 Crossover, wie Sie in der vorherigen Logik erklärt haben.

Vielen Dank im Voraus

Grund der Beschwerde: