Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1042

 
Vladimir Karputov:

Es gibt keine MQL5-Funktion, die Mauskoordinaten ausgeben würde. Sie können jedoch folgende Lösung verwenden: Fügen Sie - basierend auf der angehängten Datei - die Speicherung der letzten Mauskoordinaten zum OnChartEvent hinzu und geben Sie diese Koordinaten aus, wenn die Schaltfläche angeklickt wird.

Verstanden, danke

 

Außerdem gibt es einige verwirrende Probleme mit den ebjects.

Es gibt eine Klasse, die auf der Grundlage von Eingabeparametern eine Markierung und ein Rechteck erstellt.

Es gibt einen Status - ein/aus durch die Farbe des Rechtecks.

//+------------------------------------------------------------------+
//|                                                CreateLabels.mqh |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
class CreateKeyStateLabel{
private:
   string label_text;
   int x;
   int y;
   bool _state;
public:
   CreateKeyStateLabel(string label_text, int x, int y){
      this.label_text = label_text;
      this.x = x;
      this.y = y;
      _state = false;
      ObjectCreate(0,label_text+"_icon", OBJ_RECTANGLE_LABEL, 0, 1, 1);
      ObjectSetInteger(0,label_text+"_icon", OBJPROP_XDISTANCE, x);
      ObjectSetInteger(0,label_text+"_icon", OBJPROP_YDISTANCE, y);
      ObjectSetInteger(0,label_text+"_icon", OBJPROP_XSIZE, 15);
      ObjectSetInteger(0,label_text+"_icon", OBJPROP_YSIZE, 15);
      ObjectSetInteger(0,label_text+"_icon", OBJPROP_BGCOLOR, clrDarkGray);
      
      ObjectCreate(0,label_text+"_label",OBJ_LABEL,0,1,1);
      ObjectSetInteger(0,label_text+"_label", OBJPROP_XDISTANCE, x+17);
      ObjectSetInteger(0,label_text+"_label", OBJPROP_YDISTANCE, y);
      ObjectSetInteger(0,label_text+"_label", OBJPROP_COLOR, clrBlack);
      ObjectSetString(0,label_text+"_label", OBJPROP_TEXT, label_text);
   }
   
   ~CreateKeyStateLabel(){
      ObjectDelete(0,label_text+"_icon");
      ObjectDelete(0,label_text+"_label");
   }
   
   void invert(){
      if(_state){
         _state = false;
         ObjectSetInteger(0,label_text+"_icon", OBJPROP_BGCOLOR, clrDarkGray);
      }else{
         _state = true;
         ObjectSetInteger(0,label_text+"_icon", OBJPROP_BGCOLOR, clrDarkGreen);
      }
   }
   
   bool state(){
      return _state;
   }
   
};

Dann erstelle ich diese Objekte, mache ein Ereignis beim Drücken einer Taste, die den Zustand umschalten würde.
Die ersten paar Male funktioniert es - und dann ignoriert es einfach die Tastenanschläge, was mache ich falsch?


//+------------------------------------------------------------------+
//|                                                       Events.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <CreateLabels.mqh>
#define  X_DIST 10
#define  Y_DIST 20

CreateKeyStateLabel *tilda = new CreateKeyStateLabel("Tilda",X_DIST,Y_DIST);


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   delete tilda;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long   &lparam, const double &dparam, const string &sparam){
   switch(id){
      case CHARTEVENT_KEYDOWN:{
         if(lparam == "38") tilda.invert();
         break;
      }
   }
}

Hier habe ich gesehen, dass es hin und wieder funktioniert, wie kann ich es bei jedem Klick auf den Kippschalter deutlich machen?

 
Vladimir Karputov:

Es gibt keine MQL5-Funktion, die Mauskoordinaten ausgeben würde. Aber Sie können die folgende Lösung verwenden: auf der Grundlage der beigefügten Datei, fügen Sie OnChartEvent Speicherung der letzten Koordinaten der Maus und dann, wenn Sie auf die Schaltfläche klicken, Ausgabe dieser Koordinaten.

Und so

//---------------------------------------  

   if(id==CHARTEVENT_MOUSE_MOVE)
     {
      ChartXYToTimePrice(0,int(lparam),int(dparam),window,time,price);
      Comment("price = ",DoubleToString(price,5),"   time = ",TimeToString(time,TIME_DATE|TIME_MINUTES));
     }

//---------------------------------------
 
Dano bereits verfügbar tick Geschichte für Tester in MT-5, aber hohe Kerzen zählen immer noch zum Angebotspreis. Für MT-4 wäre es von Vorteil, wenn der hohe Zählerstand beim Briefkurs liegt und die Candlesticks auf diese Weise gezeichnet werden. Selbst bei einem 5-Minuten-Spread liegt der APR bei 1 oder sogar 1,5! Und wie mühsam ist es, im Code des Expert Advisors einen Spread für alle Wanderungen hinzuzufügen! Dies ist ein Verbesserungsvorschlag, aber ich habe eine Frage: Es gibt eine Variable high in der MqlRates-Struktur. Zu welchem Preis sie gefüllt wird. Ich habe den Eindruck, dass der Höchstpreis nicht so hoch ist, wie er im Handbuch angegeben ist. Vielleicht weiß es jemand, ich bin zu faul, einen EA für die Forschung zu schreiben.
 

Sehr geehrte Damen und Herren, was ist das und wo ist der Fehler zu suchen?

2019.05.12 11:01:09.743 Core 6  genetic pass (52, 487) tested with error "some error after pass finished" in 0:00:00.005
Kann es mitTesterStop() zu tun haben? Obwohl nein, der Fehler ist nach dem Pass...
 

Hallo.
Können Sie bitte beraten, ob es möglich ist, einen MQL5-Indikator mit Benachrichtigungen an Telegram (Bot) zu schreiben, ohne irgendwelche Dienste von Drittanbietern zu verwenden, sondern nur MQL5+Telegram API?

Oder muss ich dafür einen Expert Advisor schreiben? Ich stelle diese Frage, weil ich versucht habe, einen solchen EA für MT4 zu schreiben, und es klappte irgendwie nur mit einem Expert Advisor.


Und die zweite Frage.
Wie schwierig ist es , einen Indikator/Ratgeber zu schreiben, der ein bestimmtes Muster anzeigt, das ich brauche?
Zum Beispiel, zwei bärische Kerzen, gefolgt von drei bullischen?

Ich verstehe es (grob) folgendermaßen:
Schlusskurs < Eröffnungskurs = bärische Kerze
Schlusskurs>Eröffnungskurs = eine bullische Kerze

Wenn ich es nicht selbst machen kann, werde ich es wahrscheinlich gegen Geld bestellen))

Vielen Dank für Ihre Aufmerksamkeit!

 

Ist es möglich, Code aus einem Fremdprogramm inex zu kompilieren?

Ich erstelle eine Art Roboterkonstruktor in Java, und ich möchte, dass der Benutzer den kompilierten Code erhält, anstatt auf den Quellcode zuzugreifen.

 
Roman Sharanov:

Ist es möglich, Code aus einem Fremdprogramm inex zu kompilieren?

Ich erstelle eine Art Roboterkonstruktor in Java, und ich möchte, dass der Benutzer den kompilierten Code erhält, anstatt auf den Quellcode zuzugreifen.

Ja, siehe MetaEditor's Hilfe: Willkommen bei algotrading / Integration mit anderen IDEs / Kompilieren von MQL-Programmen in anderen IDEs
 

Weiß das jemand? Ich arbeite an der Übertragung von Daten aus Excel-Tabellen in MQL5-Skripte. Alles scheint in Ordnung zu sein, aber EXcel hat dezimale Daten mit einem Komma anstelle eines Punktes.

Frage: Gibt es einen Mechanismus in MQL für Skript, um Daten aus Excel zu nehmen und ändern Sie es auf Dezimalpunkt, oder besser, um es auf Dezimalpunkt in Excel selbst ändern?

Wie erhalte ich Daten aus Excel aus den Zellen, die ich benötige, weil ich sie in einer Spalte anordnen, Makros schreiben usw. muss? Zu den Daten gehören sowohl Datumsangaben als auch Ganzzahlen und Dezimalzahlen. Dieses Excel ist so lästig, oder ich habe mich einfach noch nicht daran gewöhnt...

Ich würde mich über jeden Rat freuen...

 
Vladimir M.:

Weiß das jemand? Ich arbeite an der Übertragung von Daten aus Excel-Tabellen in MQL5-Skripte. Alles scheint in Ordnung zu sein, aber EXcel hat dezimale Daten mit einem Komma anstelle eines Punktes.

Frage: Gibt es einen Mechanismus in MQL für Skript, um Daten aus Excel zu nehmen und ändern Sie es auf Dezimalpunkt, oder besser, um es auf Dezimalpunkt in Excel selbst ändern?

Wie erhalte ich Daten aus Excel aus den Zellen, die ich benötige, weil ich sie in einer Spalte anordnen, Makros schreiben usw. muss? Zu den Daten gehören sowohl Datumsangaben als auch Ganzzahlen und Dezimalzahlen. Dieses Excel ist so lästig, oder ich habe mich einfach noch nicht daran gewöhnt...

Ich würde mich über jeden Rat freuen...

MQL hat eine Funktion zur Ersetzung von Zeichen in einer Zeichenkette. Lesen als String

int  StringReplace(
   string&         str,              // строка, в которой будет осуществляться замена
   const string    find,             // искомая подстрока НАЙТИ ЗАПЯТУЮ ","
   const string    replacement       // подстрока, которая будет вставлена в найденные места ЗАМЕНИТЬ НА ТОЧКУ "."
   );

und konvertieren ihn in den Typ double

Документация по MQL5: Строковые функции / StringReplace
Документация по MQL5: Строковые функции / StringReplace
  • www.mql5.com
Строковые функции / StringReplace - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5