Подскажите,кому не лень

 

Изучением програмирования я занимаюсь несколько дней.И у меня возникло два вопроса при написании советника на которые я не нашел ответа:

1.Прежде ,чем советник начнет исполнять основной код необходимо проверить состояние Последней позиции,существовавщей

до того(открыта или закрыта и.т.д) С помощью какой функции MQL4 это можно сделать?

2.Я не очень понимаю зачем функции init() и deinit().То есть я нашел в каких случаях они работают,но не понял,что распологать

в теле этих функций?Я предпологаю ,что в теле фукции start() распологается код,который исполняется с каждым тиком,а в теле init() и

deinit() код который выполняется только один раз в начале и в конце соответственно.Прав ли я?Хотелось бы знать точно

Понимаю,что отвлекать Вас такими вопросами неприлично,поэтому если проигнорируете я пойму

 
David61:

1.Прежде ,чем советник начнет исполнять основной код необходимо проверить состояние Последней позиции,существовавщей

до того(открыта или закрыта и.т.д) С помощью какой функции MQL4 это можно сделать?

//+----------------------------------------------------------------------------+
//|  Возвращает флаг существования позиций                                     |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                   (-1 - любая позиция)                    |
//|    mn - MagicNumber                (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal();
 
  if (sy=="") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) return(True);
          }
        }
      }
    }
  }
  return(False);
}
David61:

2.Я не очень понимаю зачем функции init() и deinit().То есть я нашел в каких случаях они работают,но не понял,что распологать

в теле этих функций?Я предпологаю ,что в теле фукции start() распологается код,который исполняется с каждым тиком,а в теле init() и

deinit() код который выполняется только один раз в начале и в конце соответственно.Прав ли я?Хотелось бы знать точно

Понимаю,что отвлекать Вас такими вопросами неприлично,поэтому если проигнорируете я пойму

Функция init() выполняется при установке советника на график.
Функция deinit() выполняется при удалении советника с графика.