[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 416

 
VladimirR:

Cette option ne fonctionne pas non plus



Je me demande ce que vous cherchez. Il existe d'autres options pour trouver la surface maximale. Par exemple, l'analyse
 
Vinin:

Je me demande pourquoi les valeurs des compteurs doivent être modifiées deux fois dans la boucle. Et pour une raison quelconque, il n'y a pas d'attribution (préliminaire) de S2. Cette valeur au départ est 0, et ce n'est qu'à la deuxième itération (plus précisément à la troisième) que la valeur réelle est comparée (cela dépend de la façon de compter à partir de zéro ou de un).
Il n'y a pas d'affectation, car l'énumération commence par la valeur minimale de la zone ; elle est strictement positive, donc 0 est suffisant. Où les valeurs du compteur changent-elles pour la deuxième fois ?
 
Vinin:

Je me demande aussi ce que vous cherchez. Il existe d'autres options pour trouver la surface maximale. Comme celui de l'analyse.
Ce n'est pas du tout le problème. Il s'agit d'une tâche simple utilisée comme exemple du fonctionnement de l'opérateur de rupture. J'ai besoin de savoir pourquoi on ne peut pas écrire for(int i=1, j=499 ; i<500 ; i++,j--) si on n'engage pas les variables i,j avant la boucle afin d'écrire des programmes corrects plus tard !
 
VladimirR:
Ce n'est pas du tout le problème. Il s'agit d'une tâche simple utilisée comme exemple du fonctionnement de l'opérateur de rupture. J'ai besoin de savoir pourquoi on ne peut pas écrire for(int=1, j=499 ; i<500 ; i++,j--) si on n'engage pas les variables i,j avant la boucle afin d'écrire les bons programmes plus tard !

Il s'agit probablement d'un bogue dans le compilateur.

Ça ne se compile pas comme ça :

for( int i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади

Et voilà comment ça se compile :

int i, j;
for( i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади

Et voilà comment ça se compile :

int i=1, j=499;
for( ; i<500; i++,j--) //последовательный перебор значений площади
 

Bonjour à tous ! !!

Veuillez m'aider à obtenir le nombre de RiskReward de l'indicateur. Je n'arrive pas à le mettre dans mon conseiller expert.

Dossiers :
 
demlin:

Bonjour à tous ! !!

Veuillez m'aider à obtenir le nombre de RiskReward de l'indicateur. Je n'arrive pas à le mettre dans mon conseiller expert.


Où se trouve le code source ?
 

Les gens, pourquoi c'est si difficile de me répondre ou vous ne voulez simplement pas ? Tu tries de telles conneries ici, mais tu es trop paresseux pour aider à écrire une partie du code. Je vais essayer de vous le demander encore une fois, si vous ne m'aidez pas, j'irai suivre des cours, j'en ai assez de vous supplier ici.


Encore une fois : après que l'EA ait été attaché au graphique avec le premier tick, il fixe le prix Ask. Ensuite, pendant le trading, dès que le prix augmente de, disons, 10% (il est clair que cela ne peut pas être, c'est figuratif), l'EA devrait notifier un trader avec le message "Le prix a augmenté de 10%".

 
demlin:

Bonjour à tous ! !!

Veuillez m'aider à obtenir le nombre de RiskReward de l'indicateur. Je n'arrive pas à le mettre dans mon conseiller expert.

Passez en revue tous les objets du graphique, trouvez un objet nommé lbl, extrayez-en la chaîne FXRanger : Risk:Reward=x.xxx, analysez-la et convertissez x.xxx en double.
 

Help fix si les ordres s'ouvrent avec SL, et s'il y a deux ordres opposés, pour le second il supprime SL.... mais ce n'est pas nécessaire.

Merci

void Trailing()
{
//-----
  double Up = iCustom(NULL,0,"NLO",TrailPeriod,0,1);
  double Dn = iCustom(NULL,0,"NLO",TrailPeriod,1,1);
//-----
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++)
  {
    if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if(OrderSymbol() != Symbol()) continue;
    {
      if(OrderType() == OP_BUY && OrderMagicNumber()==Magic && Up > OrderOpenPrice()
      && OrderStopLoss() != Up && (OrderStopLoss() == 0 || Up > OrderStopLoss()))
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),Up,OrderTakeProfit(),0,CLR_NONE);
      }
      if(OrderType() == OP_SELL && OrderMagicNumber()==Magic && Dn < OrderOpenPrice()
      && OrderStopLoss() != Dn && (OrderStopLoss() == 0 || Dn < OrderStopLoss()))
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),Dn,OrderTakeProfit(),0,CLR_NONE);
      }
    }
  }
}
 

Bonjour. Une fois de plus, je ne peux pas résoudre l'exemple du tutoriel.

Tâche 17. Il y a 1 000 moutons dans la première ferme. Chaque jour, le nombre de moutons de la première ferme augmente de 1 %. Le jour où le nombre de moutons de la première exploitation atteint 50 000, 10 % des moutons sont transférés dans la deuxième exploitation. Combien de temps faudra-t-il pour que le nombre de moutons de la deuxième ferme atteigne 35 000 ? (On suppose qu'il y a 30 jours ouvrables dans le mois).

//--------------------------------------------------------------------
// othersheep.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start()                               // Специальная ф-ия start()
  {
//--------------------------------------------------------------------
   int
   day,                                   // Текущий день месяца
   Mons;                                  // Искомое количест. месяцев
   double
   One_Farm    =1000.0,                   // Количество на 1 ферме
   Perc_day    =1,                        // Ежедневный подъём, %
   One_Farm_max=50000.0,                  // Пороговое значение
   Perc_exit   =10,                       // Разовый вывод, %
   Purpose     =35000.0,                  // Необх. колич. на 2 ферме
   Two_Farm;                              // Количество на 2 ферме
//--------------------------------------------------------------------
   while(Two_Farm < Purpose)              // До достижения цели
     {                                    // Начало тела внешн. цикла
      //--------------------------------------------------------------
      for(day=1; day<=30 && Two_Farm < Purpose; day++)// Цикл по дням 
        {
         One_Farm=One_Farm*(1+Perc_day/100);//Накопл. на 1 ферме
         if (One_Farm < One_Farm_max)     // Если меньше допустимого,.
            continue;                     // .. то овец не переводим
         Two_Farm=Two_Farm+One_Farm*Perc_exit/100;//Накопл. на 2 ферме
         One_Farm=One_Farm*(1-Perc_exit/100);     //Остаток на 1 ферме
        }
      //--------------------------------------------------------------
      if (Two_Farm>=Purpose)              // Если цель достигнута,..
         continue;                        // .. то месяцы не считаем
      Mons++;                             // Считаем месяцы
     }                                    // Конец тела внешнего цикла
//--------------------------------------------------------------------
   Alert("Цель будет достигнута через ",Mons," мес. и ",day," дн.");
   return;                                // Выход из функции start()
  }
//-------------------------------------------------------------------

Dans cet exemple, la sortie de la boucle

 for(day=1; day<=30 && Two_Farm < Purpose; day++)// Цикл по дням 

Le "jour supplémentaire" est toujours ajouté, c'est-à-dire qu'un jour pour lequel aucun calcul n'est effectué est ajouté, mais comme le cycle est imbriqué, le "jour supplémentaire" reste.

chaque fois que le contrôle y revient, les jours sont recomptés à nouveau, ce n'est donc pas indispensable. Mais quand la boucle est sortie

while(Two_Farm < Purpose)              // До достижения цели

le "jour supplémentaire" reste. Et par conséquent, la mauvaise réponse sera imprimée.

Pouvez-vous me dire si mon raisonnement est correct ou si je me suis trompé ?

Raison: