Errori, bug, domande - pagina 1027

 
Rosh:
L'account è stato bannato dal server di trading per eccessiva attività di trading. La piattaforma di trading si protegge e disabilita quei conti che inviano senza cervello richieste di trading ad ogni tick.

Domande commerciali comprensibilmente, c'è stata una modifica. Questo è il modo in cui la strategia è stata progettata. Non so come funzionerà ora l'Expert Advisor, ma ho disabilitato la modifica su ogni tick. Vi chiedo di riattivare l'account. Ha 3 mesi e ha buone statistiche.

 

Al_key:

L'interruttore /portable aiuterà?

O disabilitare permanentemente /portable o disabilitare UAC ed eseguire il terminale senza /portable dopo il riavvio.

 
avoitenko:

Bild 842/64 bit. Quando si dichiara canva:

Appare un errore:

variabile statica irrisolta 'CCanvas::m_default_colors'

Sono l'unico con questo problema?
I requisiti delle variabili statiche sono cambiati.

L'errore si è verificato perché usate un oggetto con variabili statiche a livello globale e in questo caso il compilatore richiede che un array statico sia posizionato esplicitamente.
Questo è necessario al programmatore per specificare esplicitamente l'ordine di inizializzazione dei membri statici della classe/struttura.

Il problema qui è che l'array statico 'CCanvas::m_default_colors' può essere usato nel costruttore di CCanvas per la lettura e poi se viene posizionato e inizializzato dal programmatore dopo che l'oggetto di classe CCanvas è posizionato, i suoi valori nel costruttore di CCanvas::CCanvas non saranno quelli previsti. Pertanto, il compilatore sta controllando per assicurarsi che i membri statici della classe/struttura siano posizionati e inizializzati prima che l'oggetto classe/struttura sia usato.

Ci penseremo, forse cambieremo qualcosa.

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

Continuando a passare a mcuel 5. In mt4 questo codice funzionava bene. Ora ho un problema di connessione a 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)
  {
//---
   
  }
//+------------------------------------------------------------------+

Dà un errore:

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

C'è un avvertimento su un mismatch del tipo di variabile del socket, mettere NULL al posto di una variabile non aiuta. Ho anche sentito che МТ5 trasferisce le stringhe alla DLL in un modo speciale. È così? Per favore, consigliate come gestirlo.

 
mql5:
I requisiti per mettere le variabili statiche sono cambiati.
Pertanto, il compilatore controlla che i membri statici della classe/struttura siano posizionati e inizializzati prima che l'oggetto classe/struttura sia usato.
Grazie. Ora tutto ha un senso.
 
Al_key:
Ho anche sentito che MT5 invia le stringhe alla DLL in un modo speciale. È quel tipo di cosa? Come affrontarlo, per favore consigliatemi.
C'è un esempio dal vivo di connessione al database MySQL in questo articolo.
 
Un'altra domanda: installato MT5 standard per la prima volta, conto demo è metaquotes. Vedo solo 4 coppie di major, nessun USDCAD. Dopo qualche tempo, sono state aggiunte molte coppie diverse, tra cui CFD e Knaadec. Poi sono passato a /portable. Naturalmente, le coppie minime sono di nuovo impostate di default, ma questa volta altre coppie non vengono caricate per qualche motivo ed è molto importante avere la demo USDCAD nel quinto MT.
 

Memorizzo il TF, passo a M1, torno a quello attuale.

Problema: non riesco a ricordare di assegnare l'attuale TF

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);

Posso passare a M1

ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);

Per un oggetto

ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);

funziona. Per un grafico

ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

il compilatore dà

'current_period_tf' - can't convert enum

Qual è il mistero?

Ho provato ad aggiornare la conversione via stringa e a cambiare tipo, ma non funziona.

 
Al_key:
Un'altra domanda: installato MT5 standard per la prima volta, conto demo è metaquotes. Vedo solo 4 coppie di major, nessun USDCAD. Dopo qualche tempo, sono state aggiunte molte coppie diverse, tra cui CFD e Knaadec. Poi sono passato a /portable. Naturalmente, ancora una volta le coppie minime sono di default, ma questa volta per qualche motivo altre coppie non vengono caricate e voglio avere la demo di USDCAD nel quinto MT molto.
Salvare il profilo configurato come predefinito File - Profili - Predefinito
 
Silent:

...

Qual è il mistero?

Ho provato a convertire via stringa e cambiare tipo, ma non funziona.

int current_period_tf;
ENUM_TIMEFRAMES current_period_tf;
Motivazione: