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

 
Vladimir Karputov:

C'est déjà correct alors :

et s'il ne se ferme pas, regardez dans le fichier journal. Il peut y avoir un million de raisons : réorientation, interdiction d'échanges, absence de prix, proximité des niveaux de stop...

Merci. Alors c'est comme ça) :


void CloseSellPositions()
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
	{
          if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
            {
             if(m_position.PositionType()==POSITION_TYPE_SELL)
                m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol
            }
	}


  }

J'ai juste ajouté les parenthèses. Pour que les nouveaux ne s'y perdent pas.

 

Bonjour. J'utilise souvent une chaîne comme celle-ci dans un programme pour écrire les journaux dans des fichiers séparés :

StringConcatenate(M,"Начинаем проверять время работы модулей. i=",i); Log.write(M,__FILE__,__LINE__);

Pouvez-vous me dire comment raccourcir cette ligne ? En fait, seuls la chaîne de sortie elle-même et le nom de la variable de sortie sont modifiés ici.

J'ai essayé d'utiliser define

#define  LOG(LogPerem,StrMes) StringConcatenate(M,StrMes,""); LogPerem.write(M,__FILE__,__LINE__);

mais si je l'appelle comme ça, ça ne fonctionnera plus :

LOG(Log,"i=",i);
 
pivomoe:

Bonjour. J'utilise souvent une chaîne comme celle-ci dans un programme pour écrire les journaux dans des fichiers séparés :

Pouvez-vous me dire comment raccourcir cette ligne ? En fait, seuls la chaîne de sortie elle-même et le nom de la variable de sortie sont modifiés ici.

J'ai essayé d'utiliser define

mais l'appeler comme ça ne fonctionnera plus :

Avez-vous une bonne compréhension du préprocesseur ?

Votre

LOG("i=",i);
se déploie dans
StringConcatenate(M,i,""); "i=".write(M,__FILE__,__LINE__);;

et c'est ce qui est envoyé au compilateur.

Ce n'est même pas drôle. Première prescription : lire le doku, de préférence non local, le local impliquant déjà une certaine compréhension de la terminologie.

Essayez ceci, cela pourrait vous aider : https://metanit.com/cpp/c/3.1.php

С | Препроцессор
  • metanit.com
Препроцессор является обязательным компонентом компилятора языка Си. Препроцессор обрабатывает исходный текст программы до ее непосредственной компиляции. Результатом работы препроцессора является полный текст программы, который передается на компиляцию в исполняемый файл. Для управления препроцессором применяются директивы, каждая из которых...
 
Vladimir Simakov:

Ce n'est même pas drôle. Il n'y a qu'une seule recette : fumer les docks, de préférence pas les docks locaux, car les docks locaux impliquent déjà une certaine compréhension de la terminologie.

Essayez ceci, au cas où cela vous aiderait : https://metanit.com/cpp/c/3.1.php

Comment ça, soudainement ? Cela vous a-t-il aidé ? Pouvez-vous raccourcir ma ligne avec define ?


J'ai modifié une ligne de code dans ma question

LOG("i=",i);

à .

LOG(Log,"i=",i);
 
pivomoe:

Bonjour. J'utilise souvent une chaîne comme celle-ci dans un programme pour écrire les journaux dans des fichiers séparés :

Pouvez-vous me dire comment raccourcir cette ligne ? En fait, seuls la chaîne de sortie elle-même et le nom de la variable de sortie sont modifiés ici.

J'ai essayé d'utiliser define

mais si je l'appelle comme ça, ça ne fonctionnera plus :

J'ai résolu mon problème en utilisant des feuilles de fonctions comme celle-ci :

template<typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10>
void Write(T1 var1,T2 var2,T3 var3,T4 var4,T5 var5,T6 var6,T7 var7,T8 var8,T9 var9,T10 var10,string ffile,int line)
  {
   string Str;
   StringConcatenate(Str,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10);
   write(Str,ffile,line);
  }; 

Maintenant, j'appelle ce qui suit dans mon programme

   Log.Write("Test1",__FILE__,__LINE__);  
 
pivomoe:

Comment ça, tout d'un coup ? Est-ce que ça a marché pour vous ? Pouvez-vous raccourcir ma ligne en utilisant define ?


J'ai modifié une ligne de code dans ma question

à

Je peux. LOG("Text") ; J'ai donné un exemple de la façon dont cela est mis en œuvre - cherchez-le quelque part sur le forum.
 

Bonjour, voici le problème : j'ai un EA qui appelle un indicateur personnalisé pour afficher les données, tout fonctionne bien dans le testeur de stratégie, mais en mode de trading réel, lorsque je lance l'EA, l'indicateur ne s'affiche pas. Dans le journal écrire indicateur personnalisé chargé avec succès, il semble bruissement, envoie des messages texte, mais sur le graphique dans la liste des indicateurs, il n'est pas non plus. En même temps, si je le fais glisser vers le graphique, il récupère les données et tout s'affiche normalement. L'indicateur se trouve dans le dossier Indicators, dans la fonction iCustom(NULL,0, "Indicator name",Count). J'ai également essayé d'ajouter #resource "\NIndicators\Nindicator name.ex5", iCustom(NULL,0,"::Indicators\Nindicator name.ex5",Count) mais aucune différence. Quelle est la raison ?

 

existe-t-il un paramètre permettant de supprimer les valeurs actuelles des tampons d'indicateurs?


 
Les commentaires non liés à ce sujet ont été déplacés vers "Questions des débutants de MQL4 MT4 MetaTrader 4".
 

Chers professionnels, pourriez-vous me dire s'il est possible d'obtenir les valeurs du RSI pour une semaine dans le code du conseiller, mais de calculer les valeurs pour la semaine, qui ne commence pas le lundi, mais par exemple à partir de mercredi (c'est-à-dire la semaine de mercredi à mercredi prochain). Pour autant que je sache, cela ne peut pas être fait avec l'iRSI ?

Jusqu'à présent, je ne vois qu'un moyen d'écrire le code pour le calcul par moi-même. Existe-t-il une solution plus simple ou une solution toute faite ?

Raison: