Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1255

 
SanNneK:
Pouvez-vous me dire quelle est la condition, si le graphique a baissé d'un seul point, tous les ordres ont été fermés ?
La condition est inférieure ou égale à. Dans ontik, vous attribuez le prix de l'offre à une variable globale. Si l'offre est inférieure ou égale à la variable globale, les ordres en attente sont fermés. Sinon, la variable globale est égale à l'offre.
 
Bonsoir. Pourriez-vous me donner le code pour la fermeture d'urgence de tous les commerces qui viennent d'être ouverts ?
 
Pouvez-vous me dire comment je peux fermer toutes les positions que je souhaite en même temps ?
 

De cette façon, vous pouvez fermer toutes les transactions ouvertes (MQL4) :

for(int i=OrdersTotal()-1; i>=0; i--)
   {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()<=OP_SELL)
      {
      OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),(int)SymbolInfoInteger(OrderSymbol(),SYMBOL_SPREAD),OrderType()==OP_SELL?clrRed:clrBlue);
      }
   }
Et si vous voulez faire une sélection, vous devez décrire la condition de sélection.
 
О.
 
Aleksei Stepanenko:

De cette façon, vous pouvez fermer toutes les transactions ouvertes (MQL4) :

Et si vous voulez faire une sélection, vous devez décrire la condition de sélection.

Merci.

 
Igor Makanu:

2020.09.13 08:33:57.508 tst (EURUSD,H1) v1 = 1

2020.09.13 08:33:57.508 tst (EURUSD,H1) v2 = 1.01

2020.09.13 08:33:57.508 tst (EURUSD,H1) v3 = qwerty

2020.09.13 08:33:57.508 tst (EURUSD,H1) v4 = 3.1415

2020.09.13 08:33:57.508 tst (EURUSD,H1) v5 = 777

2020.09.13 08:33:57.508 tst (EURUSD,H1) v6 = 1

2020.09.13 08:33:57.508 tst (EURUSD,H1) v7 = 1.01

2020.09.13 08:33:57.508 tst (EURUSD,H1) v8 = qwerty

2020.09.13 08:33:57.508 tst (EURUSD,H1) v9 = 3.1415

2020.09.13 08:33:57.508 tst (EURUSD,H1) v10 = 777

2020.09.13 08:33:57.508 tst (EURUSD,H1) v11 = Valeur_11

Est-il possible de créer des variables prédéfinies dans une fonction modèle afin qu'il ne soit pas nécessaire de tout spécifier lors de son appel ? Une simple affectation donnera toujours une erreur si toutes les variables ne sont pas spécifiées.

#define  PRINT(VAL) Print(#VAL," = ",VAL)
template <typename T1, typename T2, typename T3, typename T4, typename T5,
          typename T6, typename T7, typename T8, typename T9, typename T10,typename T11>
void func(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
          T6 v6, T7 v7, T8 v8, T9 v9, T10 v10,T11 v11="")//не помогло, но ошибку не вызвало
{
   string s1 = (string) v1; PRINT(v1);
   string s2 = (string) v2; PRINT(v2);
   string s3 = (string) v3; PRINT(v3);
   string s4 = (string) v4; PRINT(v4);
   string s5 = (string) v5; PRINT(v5);
   string s6 = (string) v6; PRINT(v6);
   string s7 = (string) v7; PRINT(v7);
   string s8 = (string) v8; PRINT(v8);
   string s9 = (string) v9; PRINT(v9);
   string s10 = (string) v10; PRINT(v10);
   string s11 = (string) v11; PRINT(v11);
   
   printF( v1,  v2,  v3,  v4,  v5,  v6,  v7,  v8, v9,  v10, v11); // не получается, дает несоответствие типов.
   
}
//+------------------------------------------------------------------+
void OnStart()
{
   func(1, 1.01, "qwerty", 3.1415 f, 777, 1, 1.01, "qwerty", 3.1415 f, 777,"");// любой тип, но нужно указывать все 
                                                                             //переменные
   printF(1, 1.01, "qwerty", 3.1415 f, 777, 1, 1.01, "qwerty", 3.1415 f); //несоответствие типов, но можно не все 
                                                                        //переменные указывать
}
//+------------------------------------------------------------------+
void printF(string v1="", string v2="", string v3="", string v4="", string v5="",
          string v6="", string v7="", string v8="", string v9="", string v10="",string v11="")
{
Print( v1,  v2,  v3,  v4,  v5,  v6,  v7,  v8, v9,  v10, v11);
}
Документация по MQL5: Предопределенные переменные
Документация по MQL5: Предопределенные переменные
  • www.mql5.com
Для каждой выполняющейся mql5-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql5-программы на выполнение...
 
Valeriy Yastremskiy:

Est-il possible de créer des variables prédéfinies dans une fonction modèle ?

ça ne l'est pas.

Je ne peux pas expliquer comment les modèles.... fonctionnent. c'est en gros comment - jusqu'à ce qu'une telle fonction soit appelée, le compilateur ne sait rien de son existence (souvent, il n'y a même pas d'erreurs de compilation s'il n'y a pas d'appel)

vous appelez alors une telle fonction modèle et le compilateur remplit les types nécessaires et vérifie ensuite que tout fonctionne correctement.

et ensuite vous faites un autre appel au modèle avec différents types de paramètres - et le compilateur crée une nouvelle fonction, c'est-à-dire une de plus, c'est-à-dire comme si vous écriviez 2 fonctions, qui font la même chose, mais avec différents types de paramètres


whew, c'est comme ça que ça marche ))))



UPD :

vous pouvez, mais si les types dans le modèle correspondent, voici un exemple, cela fonctionne correctement :

template<typename T1, typename T2>
int myfunc(T1 val1=0, T2 val2=0)
{
   return((int) (val1 + val2));
}

//+------------------------------------------------------------------+
void OnStart()
{
   int i1 = 2, i2 = 3;
   Print(myfunc(i1, i2));
   double d1 = 10.0, d2 = 30.0;
   Print(myfunc(d1, d2));
}
//+------------------------------------------------------------------+
 
Igor Makanu:

Non, tu ne peux pas.

Je ne peux pas expliquer comment les modèles.... fonctionnent. c'est comme ça - tant que vous n'appelez pas une telle fonction, le compilateur ne sait rien de son existence (souvent, il n'y a même pas d'erreurs de compilation s'il n'y a pas d'appel)

vous appelez alors une telle fonction modèle et le compilateur remplit les types nécessaires et vérifie ensuite que tout fonctionne correctement.

et ensuite vous faites un autre appel au modèle avec différents types de paramètres - et le compilateur crée une nouvelle fonction, c'est-à-dire une de plus, c'est-à-dire comme si vous écriviez 2 fonctions, qui font la même chose, mais avec différents types de paramètres


Ouf, c'est parti ))))

Et comment puis-je connaître le type de paramètre d'entrée ?

Si je passe un type de chaîne à un modèle et que je veux le traiter plus avant.

Les paramètres d'entrée peuvent être jusqu'à 64, n'importe quel type peut être utilisé, comment déterminer qu'il s'agit d'une chaîne de caractères ?

 
Vladimir Pastushak:

Comment puis-je connaître le type du paramètre d'entrée ?

Si je passe un type de chaîne à un modèle et que je veux le traiter plus avant.

Il peut y avoir jusqu'à 64 paramètres d'entrée et chacun d'entre eux peut avoir n'importe quel type, comment puis-je savoir qu'il s'agit d'une chaîne de caractères ?

typename