AutoGraf Series 4 - MQL-Funktionen. - Seite 35

 

Не очень понятно что Вы называете "строка кода для учёта в приложении".

Fragment aus AG_Srtategy_Channal_Inside.mq4

//================================================================================== 6 ==
   if ( Channal == false)                           // Если объекта заданного типа нет
      {
      ObjectCreate ( My_Chan_Name, OBJ_STDDEVCHANNEL,0,0,0); // Создаём его.. 
      int Сoor_X2 = Time[0];                                // 1я точка СПРАВА, 2я СЛЕВА
      int Сoor_X1 = Сoor_X2 - With*60;                      // Канал длиной 3 часа
      ObjectSet( My_Chan_Name, OBJPROP_TIME1, Сoor_X1);      // Устанавливаем координаты
      ObjectSet( My_Chan_Name, OBJPROP_TIME2, Сoor_X2);      // Устанавливаем координаты 
      ObjectSet( My_Chan_Name, OBJPROP_COLOR, Orange);       // Устанавливаем координаты 
      AG_Message( Message, "АТ: Устанавливаем объект OBJ_STDDEVCHANNEL.");// Сообщение

      return(1);                 // Это необходимо, чтоб установл. канал был учтён AG 4    Имелась ввиду эта строка

      }
//---------------------------------------------------------------------------------- 7 --

Diese Zeile hat mich verwirrt:

Erstens kann die AT-Funktion selbständig handeln - Handelsaufträge generieren und an den Server senden

Es scheint, dass die AT-Funktion die Anwendung ignorieren und sie selbst an den Server senden kann ......

Offensichtlich ist das mein Problem, weil ich keine Erfahrung habe. Mein Gehirn ist noch nicht für das Programmieren geschärft.

 
LeonidSB писал(а) >>

.. Ihr Gehirn ist noch nicht für das Programmieren geschärft worden.

Sie sollten selbst einige einfache Programme schreiben.

 

Sie haben völlig Recht. Ich strebe danach und hoffe, es bald zu schaffen, aber zuerst möchte ich verstehen, was, wie und warum von Leuten geschrieben wird, die bereits Erfahrung haben. Grob gesagt, um Wissen zu erlangen, damit es sich in Erfahrung umsetzt, auf deren Grundlage ich selbst etwas schreiben kann.

Jedes "komplexe" Programm besteht im Wesentlichen aus einer Reihe miteinander verbundener einfacher Programme. Es ist wie ein Haus und Ziegelsteine (ich bin ein ehemaliger Baumeister von Ausbildung und Beruf), d.h. Programmierung ist für mich wie ein Baukasten.

Übrigens, nehmen Sie sich die Zeit, meinen Indikator bei der Arbeit anzuschauen. Es zeichnet und hinterlässt die Ziellinie auf dem Chart, die Linie der gewinnbringenden und verlustbringenden Trades, mit deren Hilfe Sie die Strategieimplementierung auf dem Chart im Tester und im wirklichen Leben visuell analysieren können. Darüber hinaus können Sie bei Aktivierung der entsprechenden Optionen die Ergebnisse der Sitzung in Ihrer eigenen (nicht allgemeinen) Log-Datei einsehen und zur Weiterverarbeitung verwenden.

extern bool   PrDeal=false;                                      // Выключатель. Печатать отчет по каждой сделке
extern bool   PrCol=false;                                       // Выключатель. Печатать отчет в колонку
extern bool   PrTab=true;                                        // Выключатель. Печатать отчет в таблицу

Bislang werden drei Arten von Berichten gleichzeitig in einer Datei erstellt. Ich habe bereits erwähnt, dass ich meinen Bericht auf den von Vladislav Goshkov entwickelten Indikator gestützt habe. Es waren 280 Zeilen. Ich habe sie auf 2300 Zeilen verbessert. Wie man so schön sagt: Es war etwas, worauf man aufbauen konnte. Offensichtlich wurde der Code so geschrieben, dass er nicht in einer Nussschale beschrieben werden kann. Aber das sind meine ersten Codezeilen und sie funktionieren, und das ist das Wichtigste! Ich bewege mich also in die richtige Richtung (wenn auch nicht auf die richtige Art und Weise), und mit Ihrer Hilfe bei der Erklärung der auftretenden Probleme ist es nur eine Frage der Zeit.

Vielen Dank für Ihre Teilnahme.


Ich nutze die Gelegenheit und stelle eine weitere Frage.

Das steht in der Anleitung:

Если в результате исполнения торгового приказа функция OrderClose() вернула значение false, то это значит, что ордер не закрыт. Чтобы выяснить причину неудачи выполняется анализ последней ошибки, возникшей при попытке осуществления торговой операции. Для этого вызывается функция Errors() (см. раздел Функция обработки ошибок). Если при исполнении этой функции обнаруживается, что ошибка является непреодолимой (например, торговля запрещена), то функция Close_All() заканчивает работу и возвращает управление в управляющую торговую функцию Trade(), что в конечном счёте приводит к завершению исполнения специальной функции start() эксперта. На следующем тике торговый терминал снова запустит на исполнение функцию start(), и если критерий закрытия на тот момент будет ещё актуален, то это снова приведёт к вызову на исполнение функции закрытия всех ордеров Close_All().

Frage:

Es gibt zwei offene Aufträge BUY-1 und BUY-2 mit den Lots 3 bzw. 5. Es gibt einen Handelsauftrag mit der Funktion Close_All(). Die Aufträge werden in der folgenden Reihenfolge geschlossen: zuerst BUY-2 (5 Lots), dann BUY-1 (3 Lots). Gleichzeitig kann BUY-2 (5 Lots) nicht geschlossen werden - der Fehler ist irreversibel - wir steigen aus - die BUY-1-Order (3 Lots) wird nicht geschlossen - der Verlust nimmt zu - das Gleiche passiert beim nächsten Tick (der Verlust nimmt zu), usw. D.h. wenn wir den ersten Auftrag in der Liste, der aus irgendeinem zwingenden Grund nicht geschlossen werden kann, nicht abschließen können, bleiben alle folgenden Aufträge in der Liste offen und bleiben für einige Zeit offen, das ist nicht klar. Dies sollte nicht zugelassen werden. Das darf der Programmalgorithmus nicht zulassen, aber ich habe mein Bestes getan, um es zu analysieren, und konnte es nicht verstehen.

      //--------------------------------------------------------- 4 --
      if ( Ans==false)                     // Не получилось :( 
        {                                // Поинтересуемся ошибками:
         if( Errors(GetLastError())==false)// Если ошибка непреодолимая
            return;                       // .. то уходим.
        }
      //--------------------------------------------------------- 5 --
      Terminal();                         // Функция учёта ордеров 
      Events();                           // Отслеживание событий
     }
   return;                                // Выход из пользов. функции
  }
//--------------------------------------------------------------- 6 --

Bitte erläutern Sie dies näher.

Vielen Dank im Voraus, mit Respekt und besten Wünschen, Leonid.

 
LeonidSB писал(а) >>

Frage:

Es gibt zwei offene Aufträge BUY-1 und BUY-2 mit den Lots 3 bzw. 5. Es gibt einen Handelsauftrag mit der Funktion Close_All(). Reihenfolge der Aufträge: zuerst BUY-2 (5 Lots), dann BUY-1 (3 Lots). Gleichzeitig kann BUY-2 (5 Lots) nicht geschlossen werden - der Fehler ist irreversibel - wir steigen aus - die BUY-1-Order (3 Lots) wird nicht geschlossen - der Verlust nimmt zu - das Gleiche passiert beim nächsten Tick (der Verlust nimmt zu), usw. D.h. wenn wir den ersten Auftrag in der Liste, der aus irgendeinem zwingenden Grund nicht abgeschlossen werden kann, nicht abschließen können, bleiben alle folgenden Aufträge in der Liste offen und bleiben für einige Zeit offen, das ist nicht klar. Dies sollte nicht zugelassen werden. Das darf der Programmalgorithmus nicht zulassen, aber ich habe mein Bestes getan, um es zu analysieren, und konnte es nicht verstehen.

Bitte erläutern Sie dies näher.

Vielen Dank im Voraus und mit Respekt und den besten Wünschen, Leonid.

Ein unüberwindlicher Fehler ist ein Fehler, der nicht überwunden werden kann. Zum Beispiel Market_closed.

Unter diesem Gesichtspunkt ist es egal, welchen Auftrag Sie schließen oder eröffnen. Der Markt ist sowieso geschlossen:).

Wenn Sie jedoch versuchen, einen Handel auszuführen, sollte es derjenige sein, der (aus Sicht der Strategie) die höchste Priorität hat.

 

Hallo meine Damen und Herren!

Bitte beantworten Sie meine Frage.

Welcher der Indikatoren zeigt am zuverlässigsten die Trendwende an - flach?

Ich möchte diesen Indikator zu den Strategien AG_Srtategy_Channal_Inside und AG_Srtategy_Channal_Outside als Wechsel von einer Strategie zur anderen hinzufügen.

 
SK. писал(а) >>

........Die Aufgabe bestand darin, dem Benutzer die Möglichkeit zu geben, seine eigenen, in MQL4 geschriebenen und als .ex4-Strategiedateien ausgeführten Handelsalgorithmen an die AutoGraf 4-Anwendung anzuhängen. Um dieses Problem zu lösen, enthält der Expert Advisor AG_exp.ex4 Code, der die Funktion des automatischen Handels AG_AT in den Expert Advisor importiert, der sowohl als .ex4- als auch als mq4-Datei verfügbar ist. Außerdem kann der Benutzer selbst entscheiden, wie er die Codes anordnet. Am bequemsten ist die Verwendung einer der beiden Varianten....

Eine solche Variante wurde nicht in Betracht gezogen: Hauptmodul mit offenem Code, das Hauptmodul, das jetzt mit geschlossenem Code ist, wird durch Import, Handelsstrategie durch das Incluid (oder zuerst durch das Incluid und Import in das Incluid) aufgerufen... Der Punkt ist folgender: ein Zwischenglied in Form eines Einführers, um externe Variablen sichtbar zu machen. Ich denke, wenn man genau nachdenkt, sollte es funktionieren. Sagen Sie mir nicht gleich, dass das unmöglich ist ;)

 
LeonidSB писал(а) >>

Hallo meine Damen und Herren!

Bitte beantworten Sie meine Frage.

Welcher der Indikatoren zeigt am zuverlässigsten die Trendwende an - flach?

Ich möchte diesen Indikator zu den Strategien AG_Srtategy_Channal_Inside und AG_Srtategy_Channal_Outside als Wechsel von einer Strategie zur anderen hinzufügen.

Und die Auswahl ist nicht groß: STD, ATR, ADX. Außerdem Uhr und Kalender für Pressemitteilungen.

 

Ich danke Ihnen!

Ich frage mich, ob es eine Option gibt, mit der ein Kommentar automatisch aktualisiert wird, wenn er zu einer Seite hinzugefügt wird?

Ich muss die Seite regelmäßig aufrufen und sie manuell aktualisieren.

 
Integer писал(а) >>

Diese Option wurde nicht in Betracht gezogen: Open-Source-Kern-Modul, das Kern ein, die jetzt geschlossen ist Code wird über Import aufgerufen, Handelsstrategie über incluid (oder zunächst über incluid und dann Import in incluidnik) ... Der Punkt ist folgender: ein Zwischenglied in Form eines Einführers, um externe Variablen sichtbar zu machen. Ich denke, wenn man genau nachdenkt, sollte es funktionieren. Sagen Sie nicht gleich, dass es unmöglich ist;)

Es ist nicht schwer, dies zu tun. Aber ein kommerzielles Open-Source-Produkt auszuliefern... das ist nicht die Lösung.

Die eigentliche Lösung wird in MT 5 erwartet. Jedes Anwendungsprogramm sollte vom Hauptprogramm aus aufgerufen werden. Erforderlich ist die Fähigkeit, die abgeschlossenen EAs zu verwalten. In diesem Fall könnte eine maßgeschneiderte Strategie aus einer analytischen Einheit und einer "Unterprogramm"-Aufrufeinheit bestehen. Sie wollen - rufen Sie das Skript und es wird eine Fiba zeichnen, Sie wollen - rufen Sie den Indikator, Sie wollen - schließen Sie alles und Pipsqueak am Abend nach der Arbeit:).

AND API. Dann können Sie ein wirklich modernes Werkzeug herstellen.

Der Benutzer kümmert sich nicht um unseren Schnickschnack (alle Arten von Skripten, Expert Advisors, die von Experten nicht zu unterscheiden sind:). Er oder sie braucht einen bequemen, qualitativ hochwertigen und multifunktionalen Dienst. In MT4 war es nur möglich, das zu tun, was getan wurde - eine DOS-ähnliche Oberfläche und begrenzte Möglichkeiten.

Alle Hoffnung ruht auf MT5.

 

Die neue Version von AG Serie 4 - AutoGraf 4.90714 wurde veröffentlicht.

Änderungen vorgenommen:
1. Der Algorithmus 14 Close_All zur Analyse der Werkzeugkontrolle wurde optimiert.
2. Eine neue Werkzeugverwaltungsregel 14 Close_All wird eingeführt: Die Softwareeinstellung des Werkzeugs zum aktuellen Zeitpunkt ist erlaubt. Geben Sie dazu für den Parameter zur Einstellung der Werkzeuglaufzeit den Wert 1 ein (Instrument [0][2][32][1] = 1).

Laden Sie die Software hier herunter: http://autograf.dp.ua/Pages/4/421.htm