Questions des débutants MQL5 MT5 MetaTrader 5 - page 666

 

Bon après-midi.

Pouvez-vous me dire comment modifier cette fonction pour supprimer l'erreur (la taille des variables locales est trop grande (plus de 512kb)) :

double DTWDistance(double &s[], double &t[])
{
   int slenght = ArraySize(s);
   int tlenght = ArraySize(t);
   double dtw[1000][1000];
   int i, j;

   dtw[0, 0] = 0.0;
   for (j = 1; j <= tlenght; j++)
   {
      dtw[0, j] = 1000000.0;
   }
  
   for (i = 1; i <= slenght; i++)
   {
      dtw[i, 0] = 1000000.0;
   }

   for (i = 1; i <= slenght; i++)
   {
      for (j = 1; j <= tlenght; j++)
      {
         dtw[i, j] = Distance(s[i], t[j]) + MathMin(dtw[i - 1, j], MathMin(dtw[i, j - 1], dtw[i - 1, j - 1]));
      }
   }

   return (dtw[slenght, tlenght]);
}
 
Craft:

Bon après-midi.

Pouvez-vous me dire comment modifier cette fonction pour supprimer l'erreur (la taille des variables locales est trop grande (plus de 512kb)) :

double DTWDistance(double &s[], double &t[])
{
....
   return (dtw[slenght, tlenght]);
}
Pour le refaire, vous devez savoir ce que votre fonction résout, et pour quelles tâches elle est utilisée
 
Vitaly Muzichenko:
Pour le refaire, vous devez savoir ce que votre fonction résout et pour quelles tâches elle est utilisée.
Bonne journée, Vitaliy.

J'ai commencé à recevoir des messages d'erreur de compilation (la taille des variables locales est trop grande (plus de 512kb) de différents codes de certaines constructions de MT4. J'ai essayé de trouver le message d'erreur et j'ai joint un fragment de code simple de l'indicateur WmiFor30 par exemple. Pouvez-vous utiliser cet exemple pour me montrer comment corriger cette erreur ?

Dossiers :
WmiFor30.mq4  25 kb
 
Craft:
Bonne journée, Vitaly.

Depuis une certaine version de MT4, j'ai commencé à recevoir une erreur pendant la compilation (la taille des variables locales est trop grande (plus de 512kb)) de différents codes, j'ai essayé de comprendre comment y faire face et par exemple j'ai collé ce que je pensais être un simple fragment de code de l'indicateur WmiFor30. Pouvez-vous utiliser cet exemple pour me montrer comment corriger cette erreur ?

Je ne sais pas quel en est le principe, essayez-le, vous verrez la solution.
Dossiers :
WmiFor30.mq4  25 kb
 
Vitaly Muzichenko:
Je ne sais pas ce qu'il y a dedans, essaie, tu verras.
Merci, c'est intéressant.
 

Question graphique :

Il y a un modèle comme celui-ci

for(long currChart = ChartFirst();currChart != -1; currChart=ChartNext(currChart)) {
 if(currChart == график тестера) continue; // Что сюда написать?
  ObjectSetInteger(currChart,"Sync",OBJPROP_BGCOLOR,clrGreen);
}

Comment puis-je savoir que le graphique n'est pas le graphique principal mais qu'il est ouvert en mode testeur et le sauter ?

 
Bonjour !
Aujourd'hui c'est dimanche :
TimeCurrent()=1478300399, ce qui correspond à 2016.11.04 22:59 - Vendredi
DayOfWeek()=5, ce qui est tout à fait naturel ;)

Question : Veuillez me dire comment déterminer programmatiquement dans init() ; que maintenant, quand une EA est attachée à un graphique, le jour chômé est le dimanche ?
Sans référence à TimeLocal() :
 
Leo59:
Bonjour !
Aujourd'hui, c'est dimanche :
TimeCurrent()=1478300399, ce qui correspond à 2016.11.04 22:59 - Vendredi
DayOfWeek()=5, ce qui est tout à fait naturel ;))

Question : Pourriez-vous me dire comment déterminer par programme dans init() ; que maintenant, au moment de l'attachement de l'EA au graphique, le jour de repos est le dimanche ?
Sans référence à TimeLocal() :
Cela aidera-t-il?
 
Vitaly Muzichenko:
Cela aidera-t-il?
Merci pour le conseil. Mais, :

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) peut renvoyer false dans les cas suivants :

  • aucune connexion au serveur commercial. Peut être vérifié avec TerminalInfoInteger(TERMINAL_CONNECTED)) ;
  • le compte de trading est passé en mode lecture seule (envoyé aux archives) ;
  • le trading sur le compte a été interdit du côté du serveur de trading ;
  • la connexion au compte de trading a été faite en mode investisseur.

Ici si juste : le commerce est interdit du côté du serveur de commerce ;

Ce n'est pas tout à fait juste ;))


Bien qu'en principe, on puisse essayer d' utiliser boolIsTradeAllowed() ;.

Merci beaucoup Vitaly !!!!

 
Malheureusement, cela ne fonctionne pas.

init() ;
if(IsTradeAllowed()) Print("Trade Allowed") ;
if(!IsTradeAllowed()) Print("Le commerce n'est PAS autorisé") ;


Il est écrit : "Commerce autorisé"

Il doit y avoir un autre moyen. Comment dois-je m'y prendre ?

Raison: