Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1313

 
Valeriy Yastremskiy:

Ich verstehe nicht, vielleicht spreche ich über das falsche Fenster. Ich meine das Diagrammfenster, in dem sich die Balken befinden. Diese bewegen sich. Es gibt auch Dialogfenster beim Laden von EA-Indikatoren, Warnfenster, Meldungsfenster, aber sie bewegen sich alle. Von welchem Fenster ist die Rede? Das Dialogfeld hat damit nichts zu tun. Ich habe auch keine Bibliotheken in 4

Hier ist das Eulenfenster.


Ich möchte sie auf der Karte verschieben können, wenn ich sie brauche.

 
MakarFX:

Hier ist das Eulenfenster


Das ist es, was ich auf dem Zeitplan bewegen möchte, wenn ich es brauche.

Es ist kein Fenster, sondern ein Paneel. Sie können es verschieben, ich kann Ihnen nicht einmal den Code nennen. Ich benötige den Code und zeichne ihn generell neu. Ich muss herausfinden, wo das Panel gezeichnet ist, und die Koordinaten angeben - dann klicke ich mit Hilfe von Ereignissen, um es zu verschieben, zu löschen und ein neues zu zeichnen. Zum Beispiel so. Aber ich bin überhaupt kein Zeichner.

 
Valeriy Yastremskiy:

Wenn Sie in einem EA löschen, müssen Sie den Kommentar nicht bereinigen, aber in einem Indikator müssen Sie das. Ist das so geplant?

Ein guter Programmierer würde zumindest schreiben

void OnDeinit(const int reason)
{
     Comment( "" );
}
Wenn Kommentare verwendet wurden, wird er sie selbst aufräumen. Und viele Anfänger beachten dies nicht. Das ist das Geheimnis.
 
Hallo.
Können Sie mir sagen (Formel), wie man den Preis für ein bestimmtes Niveau berechnet (unter Berücksichtigung der offenen Positionen)? Um zu berechnen, bei welchem Preis ein Margin Call und ein Stop-Out erfolgen wird.
 
Konstantin Nikitin:

Ein guter Programmierer würde zumindest schreiben

Wenn Kommentare verwendet wurden, wird er sie selbst aufräumen. Und viele Anfänger beachten dies nicht. Das ist das Geheimnis.

Das hat er getan und oben darüber geschrieben). Die Frage war, warum das unterschiedliche Verhalten bei EAs und Indikatoren. Gibt es eine versteckte Bedeutung oder hat sich historisch aus verschiedenen Schreibteams entwickelt?)

 
Konstantin Nikitin:

Ein guter Programmierer wird zumindest Folgendes schreiben

Wenn Kommentare verwendet wurden, wird er sie selbst aufräumen. Und viele Anfänger beachten dies nicht. Das ist das ganze Geheimnis.
Eigentlich gibt es keine offensichtlichen allgemeinen Anforderungen dafür.
 
Andrey Sokolov:
Eigentlich gibt es keine ausdrücklichen allgemeinen Anforderungen dazu.

Habe ich von der Anforderung gesprochen? Ich habe nur gesagt, dass einige diesen Punkt berücksichtigen und andere nicht.

 
Konstantin Nikitin:

Habe ich von der Anforderung gesprochen? Ich habe nur gesagt, dass manche den Punkt berücksichtigen und manche nicht.

Das ist nicht so.

 

Die BibliothekEASY AND FAST https://www.mql5.com/ru/articles/3527 implementiert die Möglichkeit, ein Programmfenster in einem Indikator-Subfenster zu starten, indem die Datei "SubWindow.mq5" geladen wird, in mql5 funktioniert alles, in mql4 wird auch der Inhalt ohne Fehler kompiliert, aber das Subfenster öffnet sich nicht, was kann man tun?


//+------------------------------------------------------------------+
//|                                                    SubWindow.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property indicator_separate_window
#property indicator_plots   0
#property indicator_buffers 0
#property indicator_minimum 0.0
#property indicator_maximum 0.0
//--- Имя программы
#define  PROGRAM_NAME ::MQLInfoString(MQL_PROGRAM_NAME)
//--- Идентификатор события для изменения высоты подокна эксперта
#define  ON_SUBWINDOW_CHANGE_HEIGHT (38)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- Короткое имя индикатора
   ::IndicatorSetString(INDICATOR_SHORTNAME,PROGRAM_NAME);
//--- Инициализация прошла успешно
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Деинициализация                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//--- Если инициализация прошла успешно
   if(prev_calculated<1)
      //--- Отправим сообщение эксперту, чтобы получить от него размер для подокна
      ::EventChartCustom(0,ON_SUBWINDOW_CHANGE_HEIGHT,0,0.0,PROGRAM_NAME);
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int    id,
                  const long   &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Обработка события изменения высоты подокна эксперта
   if(id==CHARTEVENT_CUSTOM+ON_SUBWINDOW_CHANGE_HEIGHT)
     {
      //--- Принимать сообщения только от имени эксперта
      if(sparam==PROGRAM_NAME)
         return;
      //--- Изменить высоту подокна
      ::IndicatorSetInteger(INDICATOR_HEIGHT,(int)lparam);
      //--- Обновить график
      ::ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
 

Hallo zusammen!

Ich versuche, einen Kontocheck an einen (beliebigen) Indikator anzuhängen!

bool VerifityToSchet()
  {
   if(AccountNumber() != account)
     {
      Print("На данном счете индикатор работать не будет, вы его приобрели незаконным путем!!!");   
     }else
     {
     Print("На данном счете индикатор авторизован");
     }
   return(false);
  } 

Ich habe es natürlich in init() und start() aktiviert, aber wenn ich das Terminal neu starte, sagt es, das Konto sei ungültig!

Was mache ich falsch?

Grund der Beschwerde: