Wünsche für MT5 - Seite 31

 

Bitte beachten Sie


Vorschlag, MQL5 um eine Funktion zu ergänzen, die es erlaubt, von einem Indikator oder Experten oder von einem Skript aus zu wechseln

Max Bars im Fenster...

Es kann sinnvoll sein, ein Programm kontrollierbar zu begrenzen



 
An Entwickler. Bitte beachten Sie meinen Antrag18097(ich verstehe, dass diese Sache umstritten ist, aber trotzdem)...


PS

Wenn möglich, sollten Sie auch dafür sorgen, dass die Optimierungsergebnisse und der Optimierungsgraph gelöscht werden, wenn die Tests im normalen Modus durchgeführt werden.

Oder ist es so ein Trick, dass man es jederzeit anschauen kann?

 
Interesting:


PS

Wenn möglich, sollten Sie auch dafür sorgen, dass die Optimierungsergebnisse und der Optimierungsgraph gelöscht werden, wenn die Tests im normalen Modus durchgeführt werden.

Oder ist es nur ein Trick, um sie jederzeit sehen zu können?

Ich würde einen solchen Vorschlag ablehnen. Nach der Optimierung muss ich, um die Ergebnisse zu analysieren, mehrere Durchgänge separat im normalen Modus prüfen (durch Klicken auf den entsprechenden Durchgang). Wenn die Optimierungsergebnisse nach dem ersten Test im normalen Modus verschwinden, geht eine wertvolle Gelegenheit zur Arbeit mit den Ergebnissen verloren.

 
Yedelkin:

Ich würde diesen Vorschlag ablehnen. Nach der Optimierung muss ich viele Durchgänge einzeln im normalen Modus testen, um die Ergebnisse zu analysieren (durch Klicken auf den entsprechenden Durchgang). Wenn die Optimierungsergebnisse nach dem ersten Test im normalen Modus verschwinden, geht eine wertvolle Gelegenheit zur Arbeit mit den Ergebnissen verloren.

Nun, ich bestehe nicht darauf, was in der Zeile steht - > Oder ist es so ein Trick, jederzeit sehen zu können?

 

1) Sie müssen normale Ereignisse hinzufügen, nicht das, was Sie implementiert haben.

Das erste, was mir in den Sinn kam, war

OnBar,OnBarClose,OnQuote,OnDomChanged...

OnPositionOpened,OnPositionClosed...

OnConnected,Ondisconnected...

Änderungen des Antragsstatus, usw.

2) eine menschenähnliche Dokumentation erstellen, wie hier: http://msdn.microsoft.com/en-us/library/system.data.aspx

3) "API für die breite Masse zugänglich machen" -)

ps Es scheint, dass die Entwickler entweder Software für Einsteiger machen oder selbst

System.Data Namespace ()
System.Data Namespace ()
  • msdn.microsoft.com
The namespace provides access to classes that represent the ADO.NET architecture. ADO.NET lets you build components that efficiently manage data from multiple data sources. In a disconnected scenario such as the Internet, ADO.NET provides the tools to request, update, and reconcile data in multiple tier systems. The ADO.NET architecture is...
 
anubis:

1) Sie müssen normale Ereignisse hinzufügen, nicht das, was Sie implementiert haben.

Das erste, was mir in den Sinn kam, war

OnBar,OnBarClose,OnQuote,OnDomChanged...

OnPositionOpened,OnPositionClosed...

OnConnected,Ondisconnected...

Änderungen des Antragsstatus, usw.

2) eine menschenähnliche Dokumentation erstellen, wie hier: http://msdn.microsoft.com/en-us/library/system.data.aspx

3) "API für die breite Masse zugänglich machen" -)

ps ps Es scheint, dass die Entwickler entweder Software für Neulinge entwickeln oder selbst Neulinge sind.

Es gibt so etwas wie USER-Ereignisse. Sie können eine beliebige Anzahl von ihnen selbst umsetzen.

Ich habe OnConnected und OnDisconnected Ereignisse über einen Timer für eine lange Zeit jetzt zu fangen. Wenn Sie möchten, können Sie auch OnBar und OnBarClose oder beliebige andere Ereignisse erstellen.

Dann können Sie leicht fangen sie in OnChartEvent mit Hilfe von solchen Block (es gibt all dies in der Hilfe, warum das Rad neu erfinden?).

  if(id>CHARTEVENT_CUSTOM)
  //User event is received / Получено пользовательское событие
  {
  }

PS

Und auf Klassenebene können Sie jedes (na ja, fast jedes) Ereignis bewältigen...

 
Interesting:

Es gibt so etwas wie USER-Ereignisse. Sie können eine beliebige Anzahl von ihnen selbst umsetzen.

Ich fange OnConnected und OnDisconnected schon seit langem über einen Timer ab. Wenn Sie möchten, können Sie auch OnBar und OnBarClose oder beliebige andere Ereignisse erstellen.

Danach fangen Sie sie einfach in OnChartEvent mit Hilfe dieses Blocks auf (es steht alles in der Hilfe, warum das Rad neu erfinden?).

PS

Und auf Klassenebene können Sie jedes (na ja, fast jedes) Ereignis bewältigen...

Es wäre interessant zu sehen, wie Sie dies umsetzen (OnConnected?)

 

dentraf:

Es wäre interessant zu sehen, wie Sie dies umsetzen (OnConnected?)

Ja bitte :)

Hier ist ein Beispiel für die Behandlung dieser Ereignisse in Expert Advisor mit der Klasse CMqlManagerConnect (Modul an den Beitrag angehängt).

1. Kopieren Sie das Modul in den Ordner \MQL5\Include\ (vorzugsweise in ein Unterverzeichnis)

Ich habe sie alle hier - MQL5\Include\Units\Objects.

2. Fügen Sie im Expert Advisor einen Link zu dieser Datei hinzu.

////////////////////////////////////////////////////////////////////////////////
//              Object classes, used in working the trade system              //
////////////////////////////////////////////////////////////////////////////////
#include <\Units\Objects\UManagerConnect.mqh> //Class - CMqlManagerConnect

3. Erstellen Sie eine Variable vom Typ CMqlManagerConnect.

////////////////////////////////////////////////////////////////////////////////
//             Global variables, used in working the trade system             //
////////////////////////////////////////////////////////////////////////////////
//****************************************************************************//
//               Objects created on the grounds of the classes                //
//****************************************************************************//
CMqlManagerConnect ManagerConnect; //Менеджер контролирующий состояние коннекта

4. In der Zeitschaltuhr sieht das so aus

void OnTimer()
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
//----------------------------------------------------------------------------//
//****************************************************************************//
//                  Контроль состояния соединения с сервером                  // 
//****************************************************************************//
ManagerConnect.OnEventTimer();
//----------------------------------------------------------------------------//
}

5 Sie sollten den folgenden Text in OnChartEvent schreiben

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                  )
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
//----------------------------------------------------------------------------//

//****************************************************************************//
//                          Processing user events                            //
//****************************************************************************//
  if(id>CHARTEVENT_CUSTOM)
  //User event is received / Получено пользовательское событие
  {
  //Выводим текстовое сообщение о событии в комментарий
  Comment("User Event ",sparam);

    if(id==CHARTEVENT_CUSTOM+1)
    //Соединеие с сервером востановлено
    {
    //тут обрабатываем все что нам нужно
    }

    if(id==CHARTEVENT_CUSTOM+2)
    //Соединеие с сервером потеряно
    {
    //тут обрабатываем все что нам нужно
    }

  }
//----------------------------------------------------------------------------//  
}

PS

Sie können die Ereignisse natürlich nicht an OnChartEvent übergeben, sondern sie direkt in der Klasse verarbeiten (entweder in der Basis oder in den Nachfolgern). Aber selbst bei diesem Ansatz empfehle ich, den Verweis auf OnChartEvent zu belassen, da Sie möglicherweise die anderen Diagramme über die Ereignisse informieren müssen... :)

Dateien:
 
Interesting:

Ja bitte :)

Hier ist ein Beispiel dafür, wie diese Ereignisse im Expert Advisor unter Verwendung der Klasse CMqlManagerConnect behandelt werden (das Modul ist an den Beitrag angehängt).

1. Kopieren Sie das Modul in den Ordner \MQL5\Include\ (vorzugsweise in ein Unterverzeichnis)

Ich habe sie alle hier - MQL5\Include\Units\Objects.

2. Fügen Sie im Expert Advisor einen Link zu dieser Datei hinzu.

3. Erstellen Sie eine Variable vom Typ CMqlManagerConnect.

4. In der Zeitschaltuhr sieht das so aus

5 Sie sollten den folgenden Text in OnChartEvent schreiben

PS

Sie können die Ereignisse natürlich nicht an OnChartEvent übergeben, sondern sie direkt in der Klasse verarbeiten (entweder in der Basis oder in den Nachkommen). Aber selbst bei diesem Ansatz empfehle ich, den Verweis auf OnChartEvent zu belassen, da Sie möglicherweise die anderen Diagramme über die Ereignisse informieren müssen... :)

Haben Sie die Klasse CMqlManagerConnect selbst geschrieben? Haben Sie eine Lösung für den Serverabruf, wenn Sie die Verbindung zum Server verlieren?
 
dentraf:
Haben Sie die Klasse CMqlManagerConnect selbst geschrieben? Haben Sie eine Lösung für die Serveraufzählung, wenn Sie die Verbindung zum Server verlieren?
Natürlich habe ich es selbst geschrieben (zum Beispiel), aber ich habe eine andere Art, dieses Problem zu lösen. Es gibt keine "Brute-Force"-Lösung (zumindest im Moment), aber wir werden uns auch mit diesem Problem befassen müssen (einige Leute haben sich diesbezüglich bereits an die Entwickler gewandt)...
Grund der Beschwerde: