Errores, fallos, preguntas - página 1471

 

¿Para qué sirve el modificador const al final de un método?

SetPoint(const int point,const datetime time,const double price) const;    < ------

¿Qué beneficios obtenemos al utilizar este modificador en la inicialización de los nombres de las variables?

Soy consciente de que la variable no puede cambiar y obtener un valor diferente.

¿Quizás este modificador acelera el trabajo del programa?

 
Vladimir Pastushak:

¿Para qué sirve el modificador const al final de un método?

¿Qué beneficios obtenemos al utilizar este modificador en la inicialización de los nombres de las variables?

Soy consciente de que la variable no puede cambiar y obtener un valor diferente.

¿Puede ser que este modificador acelere el funcionamiento del programa?

Esto es de OOP. Significa que el método no cambia el objeto desde el que se llama. Los argumentos no tienen nada que ver.

La ventaja es que cuando se mire el prototipo se verá que el objeto no se modificará, es decir, la visibilidad.

 
Si hace clic con el botón derecho y selecciona "Copiar" en la pestaña "Gráfico" del probador de MT4, la ventana/menú emergente no desaparecerá.
 

Hola a todos ) Por favor, ayúdenme a escribir un código (más correctamente una pequeña parte) mi objetivo es escribir una función seleccionar el historial de pedidos y allí necesito ver el valor al que se cerró el último pedido, positivo o negativo. Por favor, avise a quien lo hace (ya me estoy devanando los sesos )))))

Gracias de antemano.

 
Tema97:

Hola a todos ) Por favor, ayúdenme a escribir un código (más correctamente una pequeña parte) el propósito es escribir una función seleccionar el historial de pedidos y allí necesito ver qué valor fue el último pedido cerrado, positivo o negativo. Quien conozca el código que me aconseje (ya me he devanado los sesos )))))

Gracias de antemano.

MQL4

//+------------------------------------------------------------------+
   // Возвращает флаг закрытия последней позиции в убытке. Позиция выбирается по символу, типу и магику
   bool isLossLastClosePos(string sy, int op, int mn) {
      datetime t=0;
      int i, j=EMPTY;
      for(i=OrdersHistoryTotal()-1; i>=0; i--) {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
            if(OrderMagicNumber()!=mn) continue;
            if(OrderSymbol()!=sy)      continue;
            if(OrderType()!=op)        continue;
            if(t<OrderCloseTime()) {
               t=OrderCloseTime();
               j=i;
               }
            }
         }
      if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)) {
         if(OrderProfit()+OrderCommission()+OrderSwap()<0) return(true);
         }
      return(false);
   }
//+------------------------------------------------------------------+
   // Возвращает флаг закрытия последней позиции в убытке. Позиция выбирается по символу и магику
   bool isLossLastClosePos(string sy, int mn) {
      datetime t=0;
      int i, j=EMPTY;
      for(i=OrdersHistoryTotal()-1; i>=0; i--) {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
            if(OrderMagicNumber()!=mn) continue;
            if(OrderSymbol()!=sy)      continue;
            if(OrderType()>1)          continue;
            if(t<OrderCloseTime()) {
               t=OrderCloseTime();
               j=i;
               }
            }
         }
      if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)) {
         if(OrderProfit()+OrderCommission()+OrderSwap()<0) return(true);
         }
      return(false);
   }
//+------------------------------------------------------------------+

Así es como lo comprobamos:

if(isLossLastClosePos(symbol, magic)) {
   // последняя позиция закрыта в убытке
   }
 
Tema97:

Hola a todos ) Por favor, ayúdenme a escribir un código (más correctamente una pequeña parte) el propósito es escribir una función seleccionar el historial de pedidos y allí necesito ver qué valor fue el último pedido cerrado, positivo o negativo. Quien conozca el código que me aconseje (ya me he devanado los sesos )))))

Gracias de antemano.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает тип закрытия по профиту, 
//|  1= позиция закрыта в профите,                                             |
//|  2- позиция закрыта в минусе                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int isCloseLastPosByStoporTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  int      i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
      double ocp=OrderProfit();
if (OrderProfit()+OrderCommission()+OrderSwap()>0) return(1);
if (OrderProfit()+OrderCommission()+OrderSwap()<0) return(2);
  }
  return(0);
}

Para averiguarlo, haz esto:

if(isCloseLastPosByStoporTake("",-1,-1)==1) // Позиция закрыта в плюсе
if(isCloseLastPosByStoporTake("",-1,-1)==2) // Позиция закрыта в минусе
 
Artyom Trishkin:

MQL4

Compruébalo así:

))))

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг убыточности последней позиции.                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isLossLastPos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  int      i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    if (OrderProfit()<0) return(True);
  }
  return(False);
}
 
Vladislav Andruschenko:

))))

Te das cuenta de que estás siendo tonto con tus insinuaciones ahora, ¿no?

El código es mío. Tomé la lógica y los nombres de las variables de Igor. Así que no entiendo tu indirecta. ¿El nombre de la función? ¿Refleja el significado, o es que no tienes ni idea de inglés?

 
Artyom Trishkin:

MQL4

Compruébalo así:

¡¡¡¡Muchas gracias!!!!
 
Vladislav Andruschenko:

para saber lo que estás haciendo:

¡¡¡Muchas gracias!!!