Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 89

 
Не пора ли слить все ветки про помощь по МТ4 в одну?
 
Renat Akhtyamov:
Не пора ли слить все ветки про помощь по МТ4 в одну?

У каждого автора своя ветка. Просто один автор её ведёт, а второй автор - нет, и не будет. Там просто постят те, кто хочет помочь. Зачем мою ветку пихать в ветку того автора, который не собирается помогать по mql4 ?

 
Artyom Trishkin:
и я так думаю.
 

Здравствуйте.

Где найти описание языка для МТ4?

 
DVlad:

Здравствуйте.

Где найти описание языка для МТ4?

В МетаЕдиторе по Ф1. Или тут, то же самое, но онлайн. Ещё книжек по С++ погуглить можно.
Справочник MQL4
Справочник MQL4
  • docs.mql4.com
Справочник MQL4
 

Здравствуйте.

Помогите найти цену последнего ордера.

Эта функция находит цену самого старого ордера, а мне нужен самый молодой.

Что изменить?


double GetOrderOpenPrice(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   r=0;
  int      i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()>1 && OrderType()<6) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
 
Marina Korotkih:

Здравствуйте.

Помогите найти цену последнего ордера.

Эта функция находит цену самого старого ордера, а мне нужен самый молодой.

Что изменить?


double GetOrderOpenPrice(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   r=0;
  int      i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()>1 && OrderType()<6) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
Ну как-же, это и есть самого последнего, то есть самого нового
 
Marina Korotkih:

Здравствуйте.

Помогите найти цену последнего ордера.

Эта функция находит цену самого старого ордера, а мне нужен самый молодой.

Что изменить?


double GetOrderOpenPrice(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   r=0;
  int      i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()>1 && OrderType()<6) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
Так она и определяет цену последнего ордера.
 
Alekseu Fedotov:
Так она и определяет цену последнего ордера.
Vitaly Muzichenko:
Ну как-же, это и есть самого последнего, то есть самого нового

Нет, функция возвращает цену селлстопа 1.07057 а мне нужна цена четырнадцатого ордера селлстоп 1.06637


price
 
Marina Korotkih:

Нет, функция возвращает цену селлстопа 1.07057 а мне нужна цена четырнадцатого ордера селлстоп 1.06637

double GetOrderOpenPrice(string sy="", int op=-1, int mn=-1) {
 double r=-1;
 if (sy=="0") sy=Symbol();
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()>1 && OrderType()<6) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (r>OrderOpenPrice() || r==-1) {
                r=OrderOpenPrice();
  }}}}}}}
  return(r);
}
Причина обращения: