Errori, bug, domande - pagina 1471

 

Qual è lo scopo del modificatore const alla fine di un metodo?

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

Quali benefici si ottengono quando si usa questo modificatore nell'inizializzazione dei nomi delle variabili?

Sono consapevole del fatto che la variabile non può cambiare e ottenere un valore diverso.

Forse questo modificatore accelera il lavoro del programma?

 
Vladimir Pastushak:

Qual è lo scopo del modificatore const alla fine di un metodo?

Quali benefici si ottengono quando si usa questo modificatore nell'inizializzazione dei nomi delle variabili?

Sono consapevole del fatto che la variabile non può cambiare e ottenere un valore diverso.

Forse questo modificatore accelera il funzionamento del programma?

Questo è da OOP. Significa che il metodo non cambia l'oggetto da cui è chiamato. Le argomentazioni non c'entrano niente.

Il vantaggio è che quando si guarda il prototipo si vedrà che l'oggetto non sarà cambiato, cioè la visibilità.

 
Se cliccate con il tasto destro del mouse nella scheda del grafico del tester MT4 e selezionate "Copy", la finestra/menu a comparsa non scompare.
 

Ciao ragazzi tutti ) Per favore aiutatemi a scrivere un codice (più correttamente una piccola parte) il mio obiettivo è quello di scrivere una funzione seleziona la cronologia degli ordini e lì ho bisogno di vedere il valore al quale l'ultimo ordine è stato chiuso, positivo o negativo. Per favore consigliate chi lo fa (mi sto già scervellando )))))

Grazie in anticipo.

 
Tema97:

Ciao ragazzi tutti ) Per favore aiutatemi a scrivere un codice (più correttamente una piccola parte) il mio obiettivo è quello di scrivere una funzione seleziona la cronologia degli ordini e lì ho bisogno di vedere il valore al quale l'ultimo ordine è stato chiuso, positivo o negativo. Chi conosce il codice è pregato di consigliarmi (mi sono già scervellato )))))

Grazie in anticipo.

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);
   }
//+------------------------------------------------------------------+

Lo controlliamo in questo modo:

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

Ciao ragazzi tutti ) Per favore aiutatemi a scrivere un codice (più correttamente una piccola parte) il mio obiettivo è quello di scrivere una funzione seleziona la cronologia degli ordini e lì ho bisogno di vedere il valore al quale l'ultimo ordine è stato chiuso, positivo o negativo. Per favore consigliate chi lo fa (mi sto già scervellando )))))

Grazie in anticipo.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}

Per scoprirlo, fate così:

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

MQL4

Controlla in questo modo:

))))

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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:

))))

Ti rendi conto di essere sciocco con le tue allusioni ora, vero?

Il codice è mio. Ho preso la logica e i nomi delle variabili da Igor. Quindi non accetto il tuo suggerimento. Il nome della funzione? Riflette il significato, o non sei un incapace in inglese?

 
Artyom Trishkin:

MQL4

Controlla in questo modo:

Grazie mille!!!!
 
Vladislav Andruschenko:

per scoprire cosa stai facendo:

Grazie mille!!!

Motivazione: