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

 
Artyom Trishkin banderas de visibilidad de volumen en los marcos temporales. Necesidad de ocultar y mostrar.

Les escribí al respecto hace unos días. ¿Pero quién escucha alguna vez un buen consejo...?

 
Mihail Matkovskij #:
Una versión más compacta:

No soy programador y no sé de estilos (escribo como puedo).

Mihail Matkovskij #:

Pero pensé que habías dicho que tu función pretende ser universal... Entonces olvidaste un detalle muy importante:

No sé qué es, pero funciona de maravilla sin ella.


Mihail Matkovskij #:

¿Te da pereza escribir un simple script para comprobarlo? Bien. Lo hice por ti:

Extraño...

esta función genera false en "-n".

No soy programador ni profesor. Estoy aquí para preguntar y responder (si lo sé). No me gustan los enfrentamientos.

Si quieres demostrar tu valía, aprende a admitir los errores o a corregirlos.

 
Mihail Matkovskij #:

Les escribí al respecto hace unos días. ¿Pero quién escucha alguna vez un buen consejo...?

Yo también he notado que los más activos tienden a ser escuchados. En este caso Makar. Como resultado, el problema más sencillo no se ha resuelto durante varios días.

 
Alexey Viktorov #:

Yo también he notado que los más activos son más escuchados. En este caso Makar. Como resultado, durante varios días no se ha resuelto la tarea más sencilla.

Alexei, el problema se ha resuelto hace tiempo, el hombre quería entender por qué esta opción en particular no funciona.
 
MakarFX #:


const - No sé lo que es, pero funciona bien sin él.

const, es una garantía de que el valor no cambiará dentro de la función

Extraño...

es la función que da falso

Creo que lo tengo todo resuelto. ¿Qué pasa?

No soy programador ni profesor. Pregunto y respondo (si lo sé). No estoy tratando de mostrar mi coño.

Si quieres demostrar tu valía, más vale que aprendas a admitir tus errores o a corregirlos.

También respondo a las preguntas. Y estoy tratando de transmitir cómo debe ser un código bien escrito. ¿Y me hablas de mi ego? Creo que tú y Nerd Trader me entendéis mal. Ya dije más arriba que para mí lo importante es saber programar, ¡no mi importancia!

En principio, nadie te va a enseñar aparte de tu voluntad. Pero el código, que fue escrito para ti, pero que no te gusta, no te sirve o no lo entiendes, probablemente será útil para otros miembros del foro. Así que si no te gusta el código, no lo uses. Utiliza el que más te guste.

 
MakarFX #:
Alexei, el problema se ha resuelto hace tiempo, el hombre quería entender por qué esta variante particular no funciona.

Todo funciona correctamente y aquí se están metiendo con la cabeza de todos en vez de comparar la versión correcta con la incorrecta. :)

 
законопослушный гражданин #:

claramente

Por favor, aclare si he entendido bien que la función devuelve el lote de la última orden cerrada pero la contabilidad empieza desde el principio de la lista de todas las órdenes cerradas

double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int i=OrdersHistoryTotal();
   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }

y si lo hago así, ¿se contará desde el final de la lista?

double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int i=OrdersHistoryTotal();
   for(int pos=0; pos>=i; pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }
 
законопослушный гражданин #:

Podrían decirme si he entendido bien que la función devuelve el lote de la última orden cerrada pero la contabilidad comienza desde el principio de la lista de todas las órdenes cerradas

Entonces, si lo hago así, ¿se contará desde el final de la lista?

 
законопослушный гражданин #:

Podrían decirme si he entendido bien que la función devuelve el lote de la última orden cerrada pero la contabilidad comienza desde el principio de la lista de todas las órdenes cerradas

¿Si lo hago así, la cuenta atrás se hará desde el final de la lista?

La segunda variante no funcionará. Para hacer el recuento desde el final de la lista, tenemos que hacer lo siguiente:

double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int total = OrdersHistoryTotal();
   for(int i = total - 1; i >= 0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }
Razón de la queja: