Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1232

 
¿Pueden decirme cómo eliminar mi propio hilo del foro?
 
Сергей Таболин:
¿Pueden decirme cómo eliminar mi propio hilo del foro?

Nada. ¿Cuál es el tema?

 
Artyom Trishkin:

Nada. ¿Cuál es el tema?

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

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

Gracias ))))

 

Hola, estoy tratando de hacer la función

//-------------------------------------------------------------------------------
//                      Функция модификации позиции,безуыток, трейлинг-стоп 
//-------------------------------------------------------------------------------+ 
                  
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);
}

Mover el stop al Breakeven si el precio actual ha superado el precio de apertura en

Deta 

pips. Estoy recibiendo un error 4051. Todo el tankbuilding está en el archivo (si lo necesitas).Se utiliza el indicador WMA. El mío no, espero que no esté roto.

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

Hola, estoy tratando de hacer la función

Mover el stop al Breakeven si el precio actual ha superado el precio de apertura en

pips. Estoy recibiendo un error 4051. Todo el tankbuilding está en el archivo (si lo necesitas).Se utiliza el indicador WMA. El mío no, espero que no esté roto.

Parámetro de función no válido. En una suposición, no tiene un control de las órdenes mínimas de detención. Añádelo, es una comprobación obligatoria para el mercado.

......

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:

Parámetro de función no válido. A simple vista, no tiene un control de las órdenes de detención mínimas. Añádelo, es una comprobación obligatoria para el mercado.

Gracias. Voy a echar un vistazo.

 

cómo en un indicador que trabaja en M1 para obtener los datos de D1, si el indicador se basa en fórmulas y no hay ninguna llamada de indicadores estándar como =iMA(Symbol(),Period(),....

¿cómo se calcula?

 
Buenos días a todos. Me he enfrentado a esta situación en mi cuenta Demo (no en la cuenta real)). Varias posiciones fueron cerradas por el Asesor Experto cuando alcanzó un cierto nivel de beneficio acumulado, supuestamente positivo, mientras que todas las posiciones estaban sentadas en una buena pérdida, el evento ocurrió en 2-50 en el servidor (no parece una transferencia de posiciones). El Asesor Experto (hecho por mí) calcula el beneficio total de todas las posiciones abiertas y lo compara con un valor predefinido, es decir, el cuadro de barras en la ventana es como si no interviniera, aunque muestra un ligero movimiento en la dirección que proporciona el beneficio. El Asesor Experto funciona con un temporizador que se ajustó a 100ms. No excluyo la idea del broker ya que el mismo Expert Advisor de otro broker con la misma configuración pero trabajando con ticks del precio ha perdido fácilmente el beneficio. Tenía una reserva en mi cuenta, el Asesor Experto reportó el cierre desde el bloque de obtención de beneficios.Tal vez alguien tiene algunas ideas de lo que podría haber ido mal.
 
Evgeny Vlasov:
Buenos días a todos. Me encontré con una situación así en una cuenta demo (no en la real)). Varias posiciones fueron cerradas por el Asesor Experto cuando alcanzó una cierta cantidad de beneficio acumulado, supuestamente positivo, mientras que todas las posiciones estaban sentadas en una buena pérdida, el evento se produjo en 2-50 en el servidor (no parece una transferencia de posiciones). El Asesor Experto (hecho por mí) calcula el beneficio total de todas las posiciones abiertas y lo compara con un valor predefinido, es decir, el cuadro de barras en la ventana es como si no interviniera, aunque muestra un ligero movimiento en la dirección que proporciona el beneficio. El Asesor Experto funciona con un temporizador que se ajustó a 100ms. No excluyo la idea del broker ya que el mismo Expert Advisor de otro broker con la misma configuración pero trabajando con ticks del precio ha perdido fácilmente el beneficio. Tenía una reserva en mi cuenta, el Asesor Experto reportó el cierre desde el bloque de obtención de beneficios.Tal vez alguien tiene algunas ideas de lo que podría haber ido mal.

Esto es para ti en la rama de telépatas)))) Estaba aquí en alguna parte).

Y sobre el tema... NO LO SÉ. Sin código, sin mercado, sin nada... Definitivamente telépatas))))

Razón de la queja: