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

 
Pouvez-vous me dire comment supprimer mon propre fil de discussion du forum ?
 
Сергей Таболин:
Pouvez-vous me dire comment supprimer mon propre fil de discussion du forum ?

Rien. Quel est le sujet ?

 
Artyom Trishkin:

Rien. Quel est le sujet ?

https://www.mql5.com/ru/forum/348294

MQ5::Вопрос по свечному индикатору.
MQ5::Вопрос по свечному индикатору.
  • 2020.08.04
  • www.mql5.com
Привет всем! Пока меня окончательно и пожизненно не забанили, хочу успеть задать вопрос по индикатору...
 

Merci ))))

 

Bonjour, j'essaie de faire en sorte que la fonction

//-------------------------------------------------------------------------------
//                      Функция модификации позиции,безуыток, трейлинг-стоп 
//-------------------------------------------------------------------------------+ 
                  
bool Modi_Traili(int select,int pool=MODE_TRADES,ulong magic=-1) 
{ 
//   double Profit_On =OrderProfit();                  // Профит открытой позиции             
   double Price_Open =0;                         // Цена открытой позиции
   string sym =Symbol(),er;
   int i,cnt=0, k=OrdersTotal(),op=-1,mn=-1;
   double Market_Pi=0, oop=0, point=0, pp=0;
   bool loop = false;
//----------------------------------
     if (sym=="") sym=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_TICKET, MODE_TRADES)) {
      if ((OrderSymbol()==sym || sym=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY && (mn<0 || OrderMagicNumber()==mn)){             
          int  Ticket=OrderTicket(); 
            Price_Open = OrderOpenPrice();                                           
            Market_Pi=MarketInfo(OrderSymbol(), MODE_ASK);
            point=MarketInfo(OrderSymbol(), MODE_POINT);
            if (point==0) if (StringFind(sym, "JPY")<0) point=0.0001; else point=0.01;
            if (point==0) if (StringFind(sym, "XAU")<0) point=0.0001; else point=0.001;
             double Sorri=MathRound(MathAbs(Market_Pi-Price_Open)/point);   
              Print("Ticket==",Ticket,"Sorri = ",Sorri,"Price_Open = ",Price_Open,"mi = ",Market_Pi);
             if(Sorri >Deta && OrderProfit()>0)
            {
//            Print("Ticket==",Ticket,"Sorri = ",Sorri,"Price_Open = ",Price_Open,"mi = ",Market_Pi);
 //--------------------------------------------------------------------------------------------------
     while (!loop)                              // Цикл модификации  
     {     
     double TP = NormalizeDouble(Ask+TProfit*Point,Digits);  
     double SL=NormalizeDouble(Ask+(2+MarketInfo(OrderSymbol(), MODE_SPREAD)/point),Digits); 
           Alert ("М-  -  -я ",Ticket,". Ждём ответ..");
          bool Ans=OrderModify(Ticket,Price_Open,SL,TP,0);    //Модифи его!
//--------------------------------------------------------------------------------
   if (Ans==true)                      // Получилось :)
              {
               Alert ("Ордер ",Ticket,TP," модифицирован:)");
               break;                           // Из цикла модифи.
              }
            //--------------------------------------------------- 7 --------------------
            int Error=GetLastError();           // Не получилось :(
            switch(Error)                       // Преодолимые ошибки
              {
               case 0  : loop = true; break; 
      
       case 4  : er=("Торговый сервер занят");
       case 135: er=("Цена изменилась");
       case 137: er=("Брокер занят");
       case 138: er=("Новые цены");
       case 146: er=("Подсистема торговли занята. Пробуем ещё..");
        Message(er);
         Sleep(2);                         // Простое решение
        RefreshRates();                     // Обновим данные
          continue;
       case 136: er=("Нет цен");
       Message(er);
          while(RefreshRates()==false)        // До нового тика
           Sleep(5);                        // Задержка в цикле
           cnt++; 
           continue;
       
        default:er=StringFormat("Ошибка: %d",Error);             // Другие варианты
        Message(er);
        loop = true;                  // Выход из while
        break;                             // Выход из switch
          }
//--------------------------------------------------------------------------------          
        } // Окончание while
       }
      }   // Окончание if
    
        if (OrderType()==OP_SELL &&(mn<0 || OrderMagicNumber()==mn))
        {
            int Ticket=OrderTicket(); 
            Price_Open = OrderOpenPrice(); 
            Market_Pi=MarketInfo(OrderSymbol(), MODE_BID);
            point=MarketInfo(OrderSymbol(), MODE_POINT);
            if (point==0) if (StringFind(sym, "JPY")<0) point=0.0001; else point=0.01;
            if (point==0) if (StringFind(sym, "XAU")<0) point=0.0001; else point=0.001;
              double Sorri=MathRound(MathAbs(Price_Open-Market_Pi)/point);    //+MarketInfo(OrderSymbol(), MODE_SPREAD);
             if(Sorri >Deta && OrderProfit()>0)
            {
            Print("So = ",Sorri,"Price_Open = ",Price_Open,"Mi = ",Market_Pi);
            Comment(Ticket);
            while (!loop)                              // Цикл модификации  
     {     
     double TP = NormalizeDouble(Ask+TProfit*Point,Digits);  
     double SL=NormalizeDouble(Bid-(2+MarketInfo(OrderSymbol(), MODE_SPREAD)/point),Digits); 
           Alert ("Мод------я ",Ticket,". Ждём ответ..");
           bool Ans=OrderModify(Ticket,Price_Open,SL,TP,0);    //Модифи его!
//--------------------------------------------------------------------------------
   if (Ans==true)                      // Получилось :)
              {
               Alert ("Ордер ",Ticket,TP," модифицирован:)");
               break;                           // Из цикла модифи.
              }
            //--------------------------------------------------- 7 --------------------
             int Error=GetLastError();           // Не получилось :(
            switch(Error)                       // Преодолимые ошибки
              {
               case 0  : loop = true; break; 
      
       case 4  : er=("Торговый сервер занят");
       case 135: er=("Цена изменилась");
       case 137: er=("Брокер занят");
       case 138: er=("Новые цены");
       case 146: er=("Подсистема торговли занята. Пробуем ещё..");
        Message(er);
         Sleep(2);                         // Простое решение
        RefreshRates();                     // Обновим данные
          continue;
       case 136: er=("Нет цен");
       Message(er);
          while(RefreshRates()==false)        // До нового тика
           Sleep(5);                        // Задержка в цикле
           cnt++; 
           continue;
       
        default:er=StringFormat("Ошибка: %d",Error);             // Другие варианты
        Message(er);
        loop = true;                  // Выход из while
        break;                             // Выход из switc}
        }
                      
            }
          }//
       }
      }
      }
     } //--------------------------Выход из цикла for
  
  return(true);
}

Déplacer le stop vers Breakeven si le prix actuel a dépassé le prix d'ouverture de

Deta 

pips. Je reçois une erreur 4051. Tout le tankbuilding est dans le fichier (si vous en avez besoin).l'indicateur WMA est utilisé. Pas le mien, espérons qu'il ne soit pas cassé.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
Dossiers :
v5mz03.mq4  52 kb
WMA.mq4  10 kb
 
Galim_V:

Bonjour, j'essaie de faire en sorte que la fonction

Déplacer le stop vers Breakeven si le prix actuel a dépassé le prix d'ouverture de

pips. Je reçois une erreur 4051. Tout le tankbuilding est dans le fichier (si vous en avez besoin).l'indicateur WMA est utilisé. Pas le mien, espérons qu'il ne soit pas cassé.

Paramètre de fonction non valide. A priori, vous n'avez pas de contrôle pour les ordres d'arrêt minimum. Ajoutez-le, c'est un contrôle obligatoire pour le marché.

......

double TP = NormalizeDouble(Ask+TProfit*Point,Digits);  
double SL=NormalizeDouble(Bid-(2+MarketInfo(OrderSymbol(), MODE_SPREAD)/point),Digits); 
TP=New_Stop(TP);
SL=New_Stop(SL);
......
double New_Stop(double Parametr) // Проверка стоп-прик.
  {
   double Min_Dist=MarketInfo(Symbol(),MODE_STOPLEVEL);// Миним. дистанция
   if(Parametr<Min_Dist) // Если меньше допуст.
     {
      Parametr=Min_Dist;                        // Установим допуст.
      Alert("Увеличена дистанция стоп-приказа или цены открытия отложенных ордеров.");
     }
   return(Parametr);                            // Возврат значения
  }
 
Valeriy Yastremskiy:

Paramètre de fonction non valide. À première vue, vous n'avez pas de contrôle pour les ordres stop minimums. Ajoutez-le, c'est un contrôle obligatoire pour le marché.

Merci ! Je vais regarder.

 

comment, dans un indicateur fonctionnant en M1, obtenir les données de D1, si l'indicateur est basé sur des formules et qu'il n'y a pas d'appel d'indicateurs standards tels que =iMA(Symbol(),Period(),....

comment calculer ?

 
Bonne journée à tous. J'ai été confronté à cette situation sur mon compte de démonstration (pas sur mon compte réel)). Plusieurs positions ont été fermées par le conseiller expert lorsqu'il a atteint un certain niveau de profit cumulé, supposé positif, alors que toutes les positions étaient en bonne perte, l'événement s'est produit à 2-50 sur le serveur (cela ne ressemble pas à un transfert de positions). L'Expert Advisor (fait par moi) calcule le profit total de toutes les positions ouvertes et le compare à une valeur prédéfinie, c'est-à-dire que l'image des barres dans la fenêtre est comme non impliquée, bien qu'elle montre un léger mouvement dans la direction qui fournit le profit. Le conseiller expert fonctionne sur une minuterie qui a été réglée à 100 ms. Je n'exclus pas l'idée du courtier car le même Expert Advisor d'un autre courtier avec les mêmes paramètres mais travaillant avec des ticks du prix a facilement perdu du profit. J'avais une réserve sur mon compte, le conseiller expert a signalé la fermeture du bloc d'atteinte des bénéfices.Peut-être que quelqu'un a une idée de ce qui a pu se passer.
 
Evgeny Vlasov:
Bonne journée à tous. J'ai rencontré une telle situation sur un compte de démonstration (pas sur le compte réel)). Plusieurs positions ont été fermées par le conseiller expert lorsqu'il a atteint un certain montant de profit cumulé, supposé positif, alors que toutes les positions étaient en bonne perte, l'événement s'est produit à 2-50 sur le serveur (cela ne ressemble pas à un transfert de positions). L'Expert Advisor (fait par moi) calcule le profit total de toutes les positions ouvertes et le compare à une valeur prédéfinie, c'est-à-dire que l'image des barres dans la fenêtre est comme non impliquée, bien qu'elle montre un léger mouvement dans la direction qui fournit le profit. Le conseiller expert fonctionne sur une minuterie qui a été réglée à 100 ms. Je n'exclus pas l'idée du courtier car le même Expert Advisor d'un autre courtier avec les mêmes paramètres mais travaillant avec des ticks du prix a facilement perdu du profit. J'avais une réserve sur mon compte, le conseiller expert a signalé la fermeture du bloc d'atteinte des bénéfices.Peut-être que quelqu'un a une idée de ce qui a pu se passer.

C'est pour vous dans la branche des télépathes)))). C'était ici quelque part.)

Et sur le sujet... JE NE SAIS PAS. Pas de code, pas de marché, rien... Définitivement des télépathes))))