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

 
Aleksei Stepanenko #:

No sé por qué se hace así, es esencialmente una función booleana.

Es algo así:

En el enum, los elementos empiezan por cero, por lo que Ok=0 , AllocError=1

es decir, GetRepeat devuelve 0 o 1

respectivamente. GetRepeat es una negación del valor de retorno

0 es falso, 1 es verdadero.


Es fácil romperse la cabeza

Exactamente!)) Gracias, Alexey.

 
De nada :)
 

¡¡¡Buenos días!!!

Esta es una función para calcular el precio medio de una cuadrícula de órdenes y mostrarlo en un gráfico. Después de cerrar la cuadrícula, las líneas horizontales que muestran la línea media no se borran.

Por favor, ayúdenos a escribir una función para que estas líneas se eliminen después de que se cierre la red de pedidos. ¡¡¡Gracias!!!

//+----------------------------------------------------------------------------+
//| Расчет среденй цены (0)-buy (1)-sell ()-all                                |
//+----------------------------------------------------------------------------+
double GetAveragePrice(int ot=-1)
  {
   double order_lots = 0, order_price = 0, avg_price = 0;
     {
      for(int i = OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType()==ot||ot<0)
                 {
                  order_lots += OrderLots();
                  order_price += OrderOpenPrice() * OrderLots();
                 }
              }
           }
        }
     }
   avg_price = NormalizeDouble(order_price / order_lots, Digits);

   if(ObjectFind(0,"AveragePriceLine"+IntegerToString(ot))!=0)
      ObjectCreate(0,"AveragePriceLine"+IntegerToString(ot),OBJ_HLINE, 0, 0, avg_price);
   else
      ObjectSetDouble(0,"AveragePriceLine"+IntegerToString(ot),OBJPROP_PRICE,avg_price);
   if(ot==0)
      ObjectSet("AveragePriceLine"+IntegerToString(ot),OBJPROP_COLOR, clrLime);
   if(ot==1)
      ObjectSet("AveragePriceLine"+IntegerToString(ot),OBJPROP_COLOR, clrMagenta);
   return(avg_price);
  }

 
EVGENII SHELIPOV #:

¡¡¡Buenos días!!!

Esta es una función para calcular el precio medio de una cuadrícula de órdenes y mostrarlo en un gráfico. Una vez cerrada la cuadrícula, las líneas horizontales que muestran la línea media no se borran.

Por favor, ayúdenos a escribir una función para que estas líneas se eliminen después de que se cierre la red de pedidos. ¡¡¡Gracias!!!

Este no es el lugar para hacerlo.

void OnTick()
  {
//---
   if(ObjectFind(0,"AveragePriceLine"+0)==0&&CountTrade(0)<1)//для бай
     {ObjectDelete(0,"AveragePriceLine"+0);}
   if(ObjectFind(0,"AveragePriceLine"+1)==0&&CountTrade(1)<1)//для селл
     {ObjectDelete(0,"AveragePriceLine"+1);}

   .....

  }
 
MakarFX #:

Este no es el lugar para hacerlo.

Makar, ¿cómo se vincula esto en el void OnTick()

 
MakarFX #:

Este no es el lugar para hacerlo.

Gracias, Makar, un poco de trabajo de archivo y está bien.

 

Por favor, avisa.

El Asesor Experto establece la hora de inicio y fin de las órdenes de apertura. Me gustaría que este tiempo se mostrara en el gráfico. Todavía no he podido hacerlo. Aquí está el código. Me gustaría pedirle ayuda.

//-------------------------------------------------------------------+  Команда на открытие первых ордеров в сетке
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
   ObjectCreate(0, "Начало торговли", OBJ_VLINE,0,0, StartTime);
   ObjectSetInteger(0, "Начало торговли",OBJPROP_COLOR, clrBlue);
   ObjectCreate(0,"Окончание торговли", OBJ_VLINE, 0, 0, StopTime);
   ObjectSetInteger(0, "Окончание торговли", OBJPROP_COLOR, clrBlue);
     {
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }
 
EVGENII SHELIPOV #:

Por favor, avisa.

El Asesor Experto establece la hora de inicio y fin de las órdenes de apertura. Me gustaría que este tiempo se mostrara en el gráfico. Todavía no he podido hacerlo. Aquí está el código. Me gustaría pedirle ayuda.

Mostrar las variables StartTime y StopTime
 
MakarFX #:
Mostrar las variables StartTime y StopTime
extern string               TIME                           = "Настройки времени";
extern int                  UseHour                        = 1;         // Торговля в установленное время "0"-ВЫКЛ, "1"-ВКЛ
extern int                  StartTime                      = 1;         // Начало торговли
extern int                  StopTime                       = 19;        // Окончание торговли
 
EVGENII SHELIPOV #:
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
     {
      if(ObjectFind(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE))!=0)
        {
         ObjectCreate(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StartTime*3600),0);
         ObjectSetInteger(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
         ObjectCreate(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StopTime*3600),0);
         ObjectSetInteger(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
        }
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }
Razón de la queja: