Fehler, Irrtümer, Fragen - Seite 1027

 
Rosh:
Das Konto wurde vom Handelsserver wegen übermäßiger Handelsaktivitäten gesperrt. Die Handelsplattform schützt sich selbst und schaltet Konten aus, die bei jedem Tick sinnlos Handelsanfragen senden.

Bei den Handelsanfragen gab es verständlicherweise eine Änderung. So wurde die Strategie konzipiert. Ich weiß nicht, wie der Expert Advisor jetzt funktionieren wird, aber ich habe die Änderung bei jedem Tick deaktiviert. Ich bitte Sie, das Konto wieder einzuschalten. Es ist 3 Monate alt und hat gute Statistiken.

 

Al_key:

Wird der Schalter /portable helfen?

Entweder deaktivieren Sie /portable dauerhaft oder deaktivieren Sie die UAC und führen Sie das Terminal nach dem Neustart ohne /portable aus.

 
avoitenko:

Bild 842/64 bit. Bei der Deklaration von canva:

Es erscheint ein Fehler:

ungelöste statische Variable 'CCanvas::m_default_colors'

Bin ich der Einzige mit diesem Problem?
Die Anforderungen an statische Variablen haben sich geändert.

Der Fehler trat auf, weil Sie ein Objekt mit statischen Variablen auf globaler Ebene verwenden und der Compiler in diesem Fall verlangt, dass ein statisches Array explizit platziert wird.
Dies ist notwendig, damit der Programmierer die Reihenfolge der Initialisierung von statischen Klassen-/Strukturmitgliedern explizit festlegen kann.

Das Problem dabei ist, dass das statische Array "CCanvas::m_default_colors" im CCanvas-Konstruktor zum Lesen verwendet werden kann. Wenn es dann vom Programmierer nach dem Platzieren des CCanvas-Klassenobjekts platziert und initialisiert wird, entsprechen seine Werte im CCanvas::CCanvas-Konstruktor nicht den Erwartungen. Daher prüft der Compiler, ob die statischen Klassen-/Strukturmitglieder platziert und initialisiert sind, bevor das Klassen-/Strukturobjekt verwendet wird.

Wir werden darüber nachdenken, vielleicht ändern wir etwas.

Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
  • www.mql5.com
Основы языка / Переменные / Создание и уничтожение объектов - Документация по MQL5
 

Weiterer Wechsel zu mcuel 5. In mt4 hat dieser Code gut funktioniert. Jetzt habe ich ein Problem mit der Verbindung zu mkuell.

#import "libmysql.dll"
int mysql_init(int db);
int mysql_errno(int TMYSQL);
int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);
int mysql_real_query(int TMSQL,string query,int length);
void mysql_close(int TMSQL);
#import

int i = 0;
int mysql;
string query;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
   mysql = mysql_init(mysql);
   if (mysql!=0) Print("allocated");
   string host="localhost";
   string user="root";
   string password="1111";
   string DB="fxdb";
   int clientflag=0;
   int port=3306;
   string socket="";
   int
   res=mysql_real_connect(mysql,host,user,password,DB,port, socket,clientflag);
   int err=GetLastError();
   if (res==mysql) Print("connected");
   else Print("error=",mysql," ",mysql_errno(mysql)," ");
   
 
   
   //mysql_real_query(mysql,query,length);
   //int myerr=mysql_errno(mysql);
   //if (myerr>0)Print("error=",myerr); else Print(i, "good"); 

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
      mysql_close(mysql);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+

Es wird ein Fehler angezeigt:

2013.08.03 12:41:41 testMySql (AUDCAD,H1) error=313111904 2005

Es gibt eine Warnung über eine Socket-Variablen-Typ-Fehlanpassung, die Eingabe von NULL anstelle einer Variablen hilft nicht. Ich habe auch gehört, dass МТ5 Zeichenketten auf besondere Weise an die DLL überträgt. Ist das so? Bitte beraten Sie mich, wie ich damit umgehen soll.

 
mql5:
Die Anforderungen für die Platzierung statischer Variablen haben sich geändert.
Daher prüft der Compiler, ob statische Klassen-/Strukturmitglieder platziert und initialisiert sind, bevor das Klassen-/Strukturobjekt verwendet wird.
Ich danke Ihnen. Jetzt ergibt alles einen Sinn.
 
Al_key:
Ich habe auch gehört, dass MT5 Strings auf eine besondere Weise an die DLL sendet. Ist es so etwas? Bitte beraten Sie mich, wie ich damit umgehen kann.
In diesem Artikel finden Sie ein Live-Beispiel für die Verbindung zur MySQL-Datenbank.
 
Noch eine Frage: Habe MT5 Standard zum ersten Mal installiert, Demokonto ist metaquotes. Ich sehe nur 4 Paare von Majors, kein USDCAD. Nach einiger Zeit kamen viele verschiedene Paare hinzu, darunter CFD und Knaadec. Dann habe ich auf /portable umgestellt. Natürlich sind die Mindestpaare wieder standardmäßig eingestellt, aber dieses Mal sind andere Paare aus irgendeinem Grund nicht geladen und es ist besser, USDCAD Demo in MT5 zu haben.
 

Ich merke mir die TF, wechsle zu M1, gehe zurück zur aktuellen.

Problem: Ich kann mich nicht daran erinnern, die aktuelle TF zuzuordnen

int current_period_tf;
   string n;
   if(_Period==PERIOD_M1)  {current_period_tf=0x00000001;};
   if(_Period==PERIOD_M2)  {current_period_tf=0x00000002;};
   if(_Period==PERIOD_M3)  {current_period_tf=0x00000004;};
   if(_Period==PERIOD_M4)  {current_period_tf=0x00000008;};
   if(_Period==PERIOD_M5)  {current_period_tf=0x00000010;};
   if(_Period==PERIOD_M6)  {current_period_tf=0x00000020;};
   if(_Period==PERIOD_M10) {current_period_tf=0x00000040;};
   if(_Period==PERIOD_M12) {current_period_tf=0x00000080;};
   if(_Period==PERIOD_M15) {current_period_tf=0x00000100;};
   if(_Period==PERIOD_M20) {current_period_tf=0x00000200;};
   if(_Period==PERIOD_M30) {current_period_tf=0x00000400;};
   if(_Period==PERIOD_H1)  {current_period_tf=0x00000800;};
   if(_Period==PERIOD_H2)  {current_period_tf=0x00001000;};
   if(_Period==PERIOD_H3)  {current_period_tf=0x00002000;};
   if(_Period==PERIOD_H4)  {current_period_tf=0x00004000;};
   if(_Period==PERIOD_H6)  {current_period_tf=0x00008000;};
   if(_Period==PERIOD_H8)  {current_period_tf=0x00010000;};
   if(_Period==PERIOD_H12) {current_period_tf=0x00020000;};
   if(_Period==PERIOD_D1)  {current_period_tf=0x00040000;};
   if(_Period==PERIOD_W1)  {current_period_tf=0x00080000;};
   if(_Period==PERIOD_MN1) {current_period_tf=0x00100000;};
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

Ich kann zu M1 wechseln

ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);

Für ein Objekt

ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);

es funktioniert. Für ein Diagramm

ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

gibt der Compiler Folgendes aus

'current_period_tf' - can't convert enum

Was ist das Geheimnis?

Ich habe versucht, die Konvertierung über String zu aktualisieren und die Typen zu ändern, aber es funktioniert nicht.

 
Al_key:
Noch eine Frage: Habe MT5 Standard zum ersten Mal installiert, Demokonto ist metaquotes. Ich sehe nur 4 Paare von Majors, kein USDCAD. Nach einiger Zeit kamen viele verschiedene Paare hinzu, darunter CFD und Knaadec. Dann habe ich auf /portable umgestellt. Natürlich, wieder minimale Paare sind standardmäßig, aber dieses Mal aus irgendeinem Grund andere Paare sind nicht geladen und ich möchte USDCAD Demo in der fünften MT sehr viel haben.
Speichern des konfigurierten Profils als Standard Datei - Profile - Standard
 
Silent:

...

Was ist das Geheimnis?

Ich habe versucht, über String zu konvertieren und die Typen zu ändern, aber es funktioniert nicht.

int current_period_tf;
ENUM_TIMEFRAMES current_period_tf;