Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 311

 
ALXIMIKS:

Hallo, formulieren Sie Ihre Frage neu, sie ist nicht ganz klar.


Ich danke Ihnen für Ihre Antwort. In meinem EA :

if( Bedingung)

(zwei Kauf- und Verkaufsstopp-Aufträge offen)

Ich muss den nächstgelegenen Auftrag löschen, wenn einer von ihnen eröffnet wird, denn in diesem Moment kann es andere Aufträge geben, die weiter vom aktuellen Kurs entfernt sind

Ich kann einen Zähler für offene Positionen und ein Skript verwenden, um einen Auftrag zu löschen (wenn ich richtig denke, weiß ich nicht, wie ich es machen soll, ich fange gerade erst an) Danke im Voraus für die Informationen.

 
PGM5:


und es ist notwendig, den nächstgelegenen Auftrag bei der Eröffnung einer der Positionen zu löschen, da es zu diesem Zeitpunkt andere Aufträge geben kann, die weit vom aktuellen Preis entfernt sind

Ich kann einen Zähler für offene Positionen und ein Skript verwenden, um einen Auftrag zu löschen (wenn ich richtig denke, weiß ich nicht, wie ich es machen soll, ich fange gerade erst an) Danke im Voraus für die Informationen.


Bitte lernen Sie die Terminologie, es ist ein echtes Problem zu verstehen, was Sie brauchen.

Sie erteilen zwei schwebende Aufträge, wenn einer davon eröffnet wird, müssen Sie was löschen?

Das ist ein wunderbares Konzept, der nächste Auftrag ist in Richtung der offenen Position oder dagegen, oder wollen Sie sagen, dass der entgegengesetzte schwebende Auftrag gelöscht werden muss?

Gibt es noch andere Aufträge - woher kommen sie, aus dem manuellen Handel, aus demselben Expert Advisor, aber zu anderen Bedingungen geöffnet?

Brauchen Sie eine konkrete Antwort oder ist sie so vage wie die Frage? (Nehmen Sie sich eine zusätzliche Minute Zeit, um Ihre Frage zu formulieren - es wird allen helfen)

 
ALXIMIKS:

Beim Lesen dieser Zeilen erinnere ich mich daran, wie mir selbst vorgeworfen wurde, in meinen Beiträgen ungebildet oder vielmehr faul zu sein, und jetzt bin ich mir meines Fehlverhaltens noch stärker bewusst.

1) Was ist eine Zeichenmaschine? (wie Sie es verstehen)

2) Was ist eine elementare Funktion für die Suche nach MACD-Divergenzen?

3) Ist es so schwierig, "Divergenz" in eine Suchmaschine einzugeben und den dritten Link in der Kategorie "Code Base" auszuwählen?

(Wenn Sie hoffen, dass Ihnen jemand ein fertiges Werkzeug gibt und alles erklärt - hoffen Sie, es gibt verschiedene Menschen hier: sowohl gläubige als auch nicht so sehr)



Ich hoffe, Sie wissen, was Proxemik ist! Hätten Sie nicht lieber ein Forum, um miteinander über Metaphysik zu reden?

Das Zeichenwerkzeug - mit der Ausgabe auf dem Diagramm.

Die elementaren Funktionen sind die Funktionen, die nur mit dem MQL4-Lehrbuch angewendet werden können, ohne komplexe Ausdrücke zu verwenden.

Wie man die Indikatorpuffer bei der Erkennung der MACD-Divergenz verwendet:

wie ist sie zu verstehen?

for(i=limit-1; i>=0; i--) 
     {
      BufferMacdMain[i]   = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_MAIN, i);
      BufferMacdSignal[i] = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_SIGNAL, i);
      BufferMacdOsMA[i]   = BufferMacdMain[i] - BufferMacdSignal[i];
      BufferTop[i]        = EMPTY_VALUE;
      BufferBottom[i]     = EMPTY_VALUE;
      BufferCross[i]      = EMPTY_VALUE;
 
      double main2 = BufferMacdMain[i + 2];
      double main1 = BufferMacdMain[i + 1];
      double sig2  = BufferMacdSignal[i + 2];
      double sig1  = BufferMacdSignal[i + 1];
 
      if((main1>=sig1 && main2<sig2) || 
         (main1<sig1 && main2>=sig2))
 
Burger:


Ich hoffe, Sie wissen, was Proxemik bedeutet! Denken Sie, dieses Forum ist nur für Metaphysik?

Zeichnen - mit Ausgabe in einem Diagramm.

Elementare Funktionen sind Funktionen, die nur mit dem MQL4-Tutorial angewendet werden können, ohne komplexe Ausdrücke zu verwenden.

Wie man Indikatorpuffer bei der Erkennung der MACD-Divergenz verwendet:

wie ist sie zu verstehen?


Finden Sie zunächst heraus, was eine Divergenz ist und wie viele Werte zu ihrer Bestimmung erforderlich sind. Hier mit Beispielen.
 
Burger:


Ich hoffe, Sie wissen, was Proxemik ist! Denken Sie, das Forum ist für Metaphysik?

Zeichnen - mit Ausgabe in einem Diagramm.

Elementare Funktionen sind Funktionen, die nur mit dem MQL4-Tutorial angewendet werden können, ohne komplexe Ausdrücke zu verwenden.

Wie man Indikatorpuffer bei der Erkennung der MACD-Divergenz verwendet:

wie ist sie zu verstehen?


Dies ist kein Club der Hellseher; wenn Sie angemessene Antworten wollen, stellen Sie angemessene Fragen. Wenn Sie nicht wissen, wie Sie es formulieren sollen, gehen Sie aus der Ferne darauf ein, aber so, dass es klar ist und Sie nicht hundertmal nachfragen müssen, was eine bestimmte Person mit diesem oder jenem Begriff meint.

Elementare Funktionen sind Funktionen, die keine komplexen Ausdrücke verwenden. Fantastisch.

Der Code ohne schließende Schleifenklammern, ohne Funktionen nach einer Bedingung - was erhoffen Sie sich?

for(i=limit-1; i>=0; i--)      //цикл  расчета нерассчитанных баров, наверное
     {
      BufferMacdMain[i]   = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_MAIN, i);   // расчет значения основной   линии масд на i баре
      BufferMacdSignal[i] = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_SIGNAL, i); // расчет значения сигнальной линии масд на i баре
      BufferMacdOsMA[i]   = BufferMacdMain[i] - BufferMacdSignal[i];  // разница основной и сигнальной линии масд на i баре
      BufferTop[i]        = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
      BufferBottom[i]     = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
      BufferCross[i]      = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
 
      double main2 = BufferMacdMain[i + 2];                           // переменная берет значение основной линии масд на i+2 баре с массива BufferMacdMain
      double main1 = BufferMacdMain[i + 1];                           // переменная берет значение основной линии масд на i+1 баре с массива BufferMacdMain
      double sig2  = BufferMacdSignal[i + 2];                         // переменная берет значение сигнальной линии масд на i+2 баре с массива BufferMacdSignal
      double sig1  = BufferMacdSignal[i + 1];                         // переменная берет значение сигнальной линии масд на i+1 баре с массива BufferMacdSignal
 
      if((main1>=sig1 && main2<sig2) ||                      // если main1>=sig1 и main2<sig2 тогда будет выполнятся условие (сигнальная пересекает основную снизу вверх)
         (main1<sig1 && main2>=sig2))                        // если main1<sig и main2>=sig2 тогда будет выполнятся условие  (сигнальная пересекает основную сверху вниз)
 
ALXIMIKS:


Bitte lernen Sie die Terminologie, denn es ist eine echte Herausforderung, genau zu verstehen, was Sie brauchen.

Sie erteilen zwei schwebende Aufträge. Wenn einer davon eröffnet wird, müssen Sie den anderen löschen?

Nearest Order - ein wunderbares Konzept, ist die nächstgelegene Order in Richtung der offenen Position oder gegen sie, oder meinen Sie, dass die entgegengesetzte schwebende Order gelöscht werden sollte?

Gibt es noch andere Aufträge - woher kommen sie, aus dem manuellen Handel, aus demselben Expert Advisor, aber zu anderen Bedingungen geöffnet?

Brauchen Sie eine konkrete Antwort oder ist sie so vage wie die Frage? (Nehmen Sie sich eine zusätzliche Minute Zeit, um Ihre Frage zu formulieren - davon profitieren alle).

Ja, Sie haben es richtig verstanden: Wenn Sie einen Auftrag öffnen, müssen Sie den gegenüberliegenden schwebenden Auftrag löschen. Die anderen Aufträge stammen aus demselben EA, wurden aber unter anderen Bedingungen geöffnet.

Vielen Dank im Voraus.

 
PGM5:

Ja, Sie haben es richtig verstanden: Wenn Sie einen Auftrag öffnen, müssen Sie den gegenüberliegenden schwebenden Auftrag löschen. Die anderen Aufträge stammen aus demselben EA, wurden aber unter anderen Bedingungen geöffnet.

Vielen Dank im Voraus.


Wenn ich richtig verstanden habe, was Sie wollen: Dieser Mechanismus heißt OCO (One Cansel Other - einer hebt den anderen auf). Dies ist die Beziehung zwischen z.B. einem Take und einem Stop für eine "Market Order" (im Sinne von MT4) - eine (Take oder Stop) wird ausgelöst, die andere wird automatisch entfernt, und die vollständige Implementierung dieser Aufgabe ist nicht so trivial. Nicht im Sinne eines sehr komplexen Algorithmus, sondern in dem Sinne, dass er nicht elementar ist. Wir müssen eine parallele Buchführung für die Aufträge erstellen: Geben Sie die Merkmale ein, durch die die Aufträge miteinander verbunden sind, und verfolgen Sie sie. Wenn ich mich nicht irre, wurde ein solcher Mechanismus auch im MT5 nicht implementiert, obwohl er eine Standardfunktion für Börsenterminals ist und auf der Serverseite funktioniert.

Wir können den Mechanismus auf der Seite des Kunden implementieren und mit dem Magier "spielen" (das wäre in diesem Fall "nicht sehr" schwierig): alle Aufträge, von denen einer übrig bleiben muss, haben denselben Magier. Bei der Prüfung: Wenn es einen Markt gibt, werden alle anderen gelöscht. Dann muss eine Magie erzeugt werden, die begleitet wird. Weisen Sie dem Zauberer ein separates Feld zu: Es kann sein, dass mehr als ein Paar von Aufträgen unterstützt werden muss. Es ist unmöglich, eine Magie zu verlieren, also entweder globale Variablen oder das Schreiben in eine Datei. Wenn wir dies auf eine globalere Art und Weise tun (indem wir nicht nur die Konnektivität der Aufträge, sondern auch die Zugehörigkeit zum Ausland berücksichtigen), wird der Abrechnungsmechanismus komplizierter: Der Zauberer wird kompliziert, und wir müssen den Standardalgorithmus für die Auftragserteilung viel tiefer ausbauen, als wir es mit den "Basisfunktionen" (in Ihrer Terminologie) tun können, aber alles ist immer noch clientseitig, d.h. wenn das Terminal abgeschaltet wird oder die Kommunikation verloren geht, werden die Aufträge nicht funktionieren (nachverfolgt).



 
VladislavVG:

Wenn ich richtig verstehe, was Sie wollen: Dieser Mechanismus heißt OCO (One Cansel Other - einer hebt den anderen auf). Dies ist die Beziehung zwischen z. B. einem Take und einem Stop für eine "Market Order" (im Sinne von MT4) - eine (Take oder Stop) wird ausgelöst, die andere wird automatisch gelöscht, und die vollständige Umsetzung ist keine so triviale Aufgabe. Nicht im Sinne eines sehr komplexen Algorithmus, sondern in dem Sinne, dass er nicht elementar ist. Wir müssen eine parallele Buchführung für die Aufträge erstellen: Geben Sie die Merkmale ein, durch die die Aufträge miteinander verbunden sind, und verfolgen Sie sie. Wenn ich mich nicht irre, wurde ein solcher Mechanismus auch im MT5 nicht implementiert, obwohl er eine Standardfunktion für Börsenterminals ist und auf der Serverseite funktioniert.

Allerdings können wir den Mechanismus auch auf der Seite des Kunden implementieren und mit dem Zauberer "spielen" (in diesem Fall wird es nicht sehr schwierig sein): alle Aufträge, von denen einer bestehen bleiben muss, haben denselben Zauberer. Bei der Prüfung: Wenn es einen Markt gibt, werden alle anderen gelöscht. Dann muss eine Magie erzeugt werden, die begleitet wird. Weisen Sie dem Zauberer ein separates Feld zu: Es kann sein, dass mehr als ein Paar von Aufträgen unterstützt werden muss. Es ist unmöglich, eine Magie zu verlieren, also entweder globale Variablen oder das Schreiben in eine Datei. Wenn wir dies auf eine globalere Art und Weise tun (indem wir nicht nur die Konnektivität der Aufträge, sondern auch die Zugehörigkeit zum Ausland berücksichtigen), wird der Abrechnungsmechanismus komplizierter: der Zauberer wird kompliziert und wir müssen den Standardalgorithmus für die Auftragserteilung viel tiefer ausbauen, als wir es mit "elementaren" (in Ihrer Terminologie) Funktionen tun können, aber trotzdem ist alles clientseitig: d.h. wenn das Terminal heruntergefahren wird oder die Verbindung unterbrochen wird, wird es nicht funktionieren (Aufträge verfolgen).



Entschuldigung, ich wusste nicht, dass es so kompliziert ist. Ich werde darüber nachdenken, wie man das System vereinfachen kann.

 
PGM5:

Entschuldigung, ich wusste nicht, dass es so kompliziert ist. Ich werde darüber nachdenken, wie man das System vereinfachen kann.



Zu helfen.
 
r772ra:
Zu helfen.


Dies ist nur eine sehr "bescheidene" Implementierung, die nicht erweiterbar ist: Sie löscht alle Aufträge des EA oder alle Aufträge eines bestimmten Assistenten für ein bestimmtes Symbol, wenn es einen Markt gibt. Das heißt, es betrachtet alle Aufträge, die auf dem Instrument platziert werden (mit/ohne Berücksichtigung des Magiers), als durch das CCA-Verhältnis verbunden.

Dies ist vielleicht gar nicht der Fall. So kann es beispielsweise sein, dass von 20 erteilten Aufträgen 2 oder 3 Gruppen miteinander verknüpft sind, während der Rest überhaupt nicht verknüpft ist. Dieser EA kann nicht auf eine solche Abrechnung erweitert werden - wir müssen alles neu schreiben oder wir können diesen EA im manuellen Modus verwenden: dann muss die Abrechnung der Meister der verknüpften Auftragsgruppen manuell erfolgen und wir müssen so viele EAs "hängen", wie es Auftragsgruppen in einem Handel gibt.

Grund der Beschwerde: