Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 76

 
lottamer:


Le DC est à cinq chiffres...

Qu'est-ce que cela signifie SANS DoubleToStr(YourPrice,5) ? J'ai DoubleToStr(YourPrice,5) nulle part.

Si vous mettez simplement une variable double quelque part dans Print ou Alert (Print(doubleVariable)), seules quatre décimales seront imprimées ; si vous mettez Print(DoubleToStr(doubleVariable,N)) - vous obtiendrez N décimales.
 
Question aux modérateurs - très souvent le site me renvoie pour une nouvelle autorisation. Lorsque j'essaie de me connecter, le message "Votre accès est temporairement limité ou refusé" s'affiche. Puis, après quelques heures, l'accès est rétabli. Quel pourrait être le problème ?
 
Merci à tous pour vos conseils, mais logiquement, il n'y a pas de différence entre les deux options...
  • for (int i=1 ; i<=OrdersTotal() ; i++)
  • for (int i=OrdersTotal()-1 ; i>=0 ; i--)
Ou est-ce que je me trompe ? Au fait, cela n'a pas aidé.....


Ce qui est étrange, c'est que EA supprime complètement tous les ordres dans cette condition :
  • for (int i=0; i<=OrdersTotal() ; i++)
  • pour (int i=OrdersTotal() ; i>=0 ; i--)
Quelqu'un peut-il comprendre pourquoi ?

 
yosuf:
Question aux modérateurs - très souvent le site me renvoie pour une nouvelle autorisation. Lorsque j'essaie de me connecter, le message "Votre accès est temporairement limité ou refusé" s'affiche. Puis, après quelques heures, l'accès est rétabli. Quel pourrait être le problème ?
L'univers homéostatique. Les modérateurs ne peuvent pas modifier l'autorisation. Seulement l'interdire de façon permanente.
 
granit77:
L'univers homéostatique. Les modérateurs ne peuvent pas modifier l'autorisation. Seulement banni définitivement.
Que faire maintenant ? Vers qui se tourner ?
 
yosuf:
Que faire maintenant ? Vers qui se tourner ?

Au modérateur de l'univers.
 
yosuf:
Question aux modérateurs - très souvent le site me renvoie pour une nouvelle autorisation. Lorsque j'essaie de me connecter, le message "Votre accès est temporairement limité ou refusé" s'affiche. Puis, après quelques heures, l'accès est rétabli. Quel pourrait être le problème ?

Vous êtes victime d'un troll)))) Vous êtes un individu charismatique))))
 

Salutations.

Pouvez-vous me dire comment prendre en compte un croisement de prix avec une ligne indicatrice?

l'indicateur comporte trois lignes : inférieure, centrale et supérieure.

Voici un exemple :

lorsque le prix franchit la ligne supérieure, je dois fixer ce moment et l'utiliser par la suite, lorsque le prix est en dessous de la ligne supérieure et au-dessus de la ligne médiane, et lorsque le prix est en dessous de la ligne médiane, je dois réinitialiser le résultat fixé. Je n'ai pas besoin de me souvenir du prix auquel le croisement s'est produit, il me suffit de cocher la case pour indiquer que le croisement s'est produit, puis de l'effacer.

LineUp //верхняя линия

LineS // средняя линия

LineDown // нижняя линия

Ask >  LineUp // фиксируем

Ask < LineS // сбрасываем

и так же с нижней линией

Bid < LineDown // фиксируем

Bid > LineS //  сбрасываем

J'ai essayé avec True et false, cela n'a pas fonctionné, je ne comprends pas pourquoi.

J'ai essayé ça :

double LineUp; //верхняя линия индикатора

double LineS; // средняя линия индикатора

double LineDown; // нижняя линия индикатора

bool FiksiruemUp = False;

 bool FiksiruemDown = False;

if ( Ask >  LineUp)  FiksiruemUp = True; // фиксируем

if (Ask < LineS) FiksiruemUp = False; // сбрасываем

// и так же с нижней линией

if (Bid < LineDown)  FiksiruemDown = True; // фиксируем

if (Bid > LineS)  FiksiruemDown = False; //  сбрасываем

 

// дальше в коде я к нему обращаюсь:

if ( FiksiruemUp == True) 

{

то нужно сделать это . . . . . . 

} 

et ça ne marche pas. Pourquoi pas ? Aidez-moi à comprendre.

 
Chers utilisateurs du forum, s'il vous plaît aider, je ne peux pas trouver un bug dans le code de mon EA, à savoir, il ne peut pas ou ne veut pas fermer les positions par l'indicateur, seulement par tp ou sl, ici, comme il me semble, une partie du code, qui est associé à ce problème, beaucoup de merci à l'avance
int start()
  {
   int
   Total,                           // Количество ордеров в окне 
   Tip,                          // Тип выбран. ордера (B=0,S=1)
   Ticket;                          // Номер ордера
   double
   FT1,                              // Значение 0 буффера Forex Trend
   FT2,                             // Значение 1 буффера Forex Trend
   TL1,                              // Значение 1 буффера Trend Lord
   TL2,                              // Значение 0 буффера Trend Lord                          
   FI,                               // Значен. Force Index текущее 
   Lot,                             // Колич. лотов в выбран.ордере
   Lts,                             // Колич. лотов в открыв.ордере
   Min_Lot,                         // Минимальное количество лотов
   Step,                            // Шаг изменения размера лота
   Free,                            // Текущие свободные средства
   One_Lot,                         // Стоимость одного лота
   Price,                           // Цена выбранного ордера
   SL,                              // SL выбранного ордера 
   TP;                              // TP выбранного ордера
   bool
   Ans  =false,                     // Ответ сервера после закрытия
   Cls_B=false,                     // Критерий для закрытия  Buy
   Cls_S=false,                     // Критерий для закрытия  Sell
   Opn_B=false,                     // Критерий для открытия  Buy
   Opn_S=false;                     // Критерий для открытия  Sell
                                                        
   
//--------------------------------------------------------------- 3 --
   // Предварит.обработка
   if(Bars < Period_FI)                       // Недостаточно баров
     {
      Alert("Недостаточно баров в окне. Эксперт не работает.");
      return;                                   // Выход из start()
     }
   if(Work==false)                              // Критическая ошибка
     {
      Alert("Критическая ошибка. Эксперт не работает.");
      return;                                   // Выход из start()
     }
//--------------------------------------------------------------- 4 --
   // Учёт ордеров
   Symb=Symbol();                               // Название фин.инстр.
   Total=0;                                     // Количество ордеров
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symb)continue;      // Не наш фин. инструм
         if (OrderType()>1)                     // Попался отложенный
           {   
            Alert("Обнаружен отложенный ордер. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Total++;                               // Счётчик рыночн. орд
         if (Total>1)                           // Не более одного орд
           {
            Alert("Несколько рыночных ордеров. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Ticket=OrderTicket();                  // Номер выбранн. орд.
         Tip   =OrderType();                    // Тип выбранного орд.
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
        }
     }
//--------------------------------------------------------------- 5 --
   // Торговые критерии
                          
   TL1=iCustom(NULL, 0, "TrendLord", 1, 1);                          // trend lord синий
   TL2=iCustom(NULL, 0, "TrendLord", 0, 1);                          // красный тренд лорд
   FI=iForce(NULL, 0, Period_FI,MODE_EMA,PRICE_CLOSE,0);            // FI
   FT1=iCustom(NULL, 0, "ForexTrend", 7, 50.6, 999999, 0, 1);                        // forex trend blue
   FT2=iCustom(NULL, 0, "ForexTrend", 7, 50.6, 999999, 1, 1);                        // forex trend red


   if (TL2 == EMPTY_VALUE && FT1 == 1 && FT2 == 0 && FI > 0)
   {
      Opn_B = true;
      
   
      
   }
   while (Opn_B == true)
   {
      if (FI <= 0)
      {
         Cls_B=true;
      }
  break;
   }      
      
   if (TL1 == EMPTY_VALUE && FT2 == 1 && FT1 == 0 && FI < 0)
   {
      Opn_S = true;
      
     
      
   }
   while (Opn_S == true)
   {
      if (FI >= 0)
      {
         Cls_S=true;
      }
   break;
   }    
//--------------------------------------------------------------- 6 --
   // Закрытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
      if (Tip==OP_BUY && Cls_B==true)                // Открыт ордер Buy..
        {                                       //и есть критерий закр
         Alert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Bid,2);      // Закрытие Buy
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Buy ",Ticket);
            break;                              // Выход из цикла закр
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }

      if (Tip==OP_SELL && Cls_S==true)                // Открыт ордер Sell..
        {                                       // и есть критерий закр
         Alert("Попытка закрыть Sell ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Ask,2);      // Закрытие Sell
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Sell ",Ticket);
            break;                              // Выход из цикла закр
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
      break;                                    // Выход из while
 
belck:

Salutations.

Pouvez-vous me dire comment prendre en compte un croisement de prix avec une ligne indicatrice ?

l'indicateur comporte trois lignes : inférieure, centrale et supérieure.

Voici un exemple :

lorsque le prix franchit la ligne supérieure, je dois fixer ce moment et l'utiliser par la suite, lorsque le prix est en dessous de la ligne supérieure et au-dessus de la ligne médiane, et lorsque le prix est en dessous de la ligne médiane, je dois réinitialiser le résultat fixé. Je n'ai pas besoin de me souvenir du prix auquel le croisement s'est produit, il me suffit de cocher la case pour indiquer que le croisement s'est produit, puis de l'effacer.

J'ai essayé avec True et false, cela n'a pas fonctionné, je ne comprends pas pourquoi.

J'ai essayé ça :

et ça ne marche pas. Pourquoi pas ? Aidez-moi à comprendre.


Cela ne fonctionne pas, car vous devez amener les variables que vous voulez engager au niveau global, c'est-à-dire avant la fonction Start... Par exemple, ceux-ci et ainsi de suite.... " FiksiruemUp = True ; // commit " et "iksiruemUp = False ; // reset "
Si vous ne passez pas d'une période à l'autre, cela devrait fonctionner...
Raison: