Бета версия онлайновой книги по программированию на MQL4 - автор Сергей Ковалев (SK.) - страница 7

 

Я бы еще подумал, а почему в тексте используются функции без скобок используются OrderType() OrderOpenPrice()

 
Climber:
// Критерии закрытия ордеров

if
(_OrdersTotal == 1) //Выполнять следующее если открыт 1 ордер
{
OrderSelect(0, SELECT_BY_POS);
Tip = OrderType;
OPrice = OrderOpenPrice;

if (Tip = 0) // Расчитать цену закрытия в зависимости от типа ордера (В=0,S=1)
{
Cprice = OPrice + (TakeProfit*Point) + Spread;
if (Bid >= Cprice)
{
Cls_B = True;
}
}
if (Tip = 1)                 
{
Cprice = OPrice - (TakeProfit*Point) - Spread;
if (Ask <= Cprice)
{
Cls_S = True;
}
}
В вашем коде ошибки скорее не в отсутствии скобок, а другие, например отсуствие в условии еще одного знака равенства (помечено красным)
 
Не помогло ==. Всё та же скобка пишется в ошибках. А можно критерий закрытия не писать в коде, если тейк проф выставлен? Или он может не сработать, например, если вдруг цена приближается к ТР и вдруг за один тик изменяется на несколько пунктов, перепрыгнув ТР?
 
Climber:
Или он может не сработать, например, если вдруг цена приближается к ТР и вдруг за один тик изменяется на несколько пунктов, перепрыгнув ТР?


Теоретически такое возможно. То есть, ордер всё равно будет закрыт, но может быть закрыт не по цене TP, а по той первой цене, которая появится.
Думаю, Вам интересно будет прочесть Учебник по MQL4 -Торговые операции -Характеристики ордеров и правила проведения торговых операций . Там как раз рассматривается подобный пример с проскальзыванием.

 
Ещё одна оригинальная особеннось на этапе изучения программирования -- всё время чтобы поставить запятую нажимаю набукву б, там где в английской раскладке запятая))). Получается пишешь по русски, а когда ставишь запятую забываешь что русская раскладка.
 
Climber:
Ещё одна оригинальная особеннось на этапе изучения программирования -- всё время чтобы поставить запятую нажимаю набукву б, там где в английской раскладке запятая))). Получается пишешь по русски, а когда ставишь запятую забываешь что русская раскладка.

Это пройдет, именно поэтому многие пишут программы на английском, без какого либо использования русского, так быстрее и проще, раскладка меняется не часто, а потом уже подгоняют программу под русский для кого-то, если требуются коментарии, как раз в этот период работы удобнее всего и руссифицировать, вот почему-то так:) Английская расскладка это основа для тех кто занимается подобной писаниной, русский используется в самом минимальном маштабе, если прикинуть % использования английской раскладки, то это 99% времени. Когда-то мне хотелось писать программы на русском, но после развлечения с 1С это желание испарилось.
 
Rosh:
Проблема выяснена, будем исправлять.

Теперь вижу рисунки на https://book.mql4.com/ru/metaeditor/compose
 

интересно а как вы зделали так , что мои послания пропали. не честно дискутируете ребята. а если нечего ответить то так и скажите. я пойму.

 

остается только надеятся что те кому я писал успели прочесть и ответят

 
Нашёл на форуме нужные мне функции. Одна возвращает номер бара экстремума ЗигЗага по его номеру, а вторая возвращает экстремум ЗигЗага по его номеру. Первая поможет определить появился ли новый экстремум зиг зага (если номер бара нулевого зигзага = 0) и исходя из этого начинать проверять другие критерии. Вторая тоже пригодится. Но до второй пока рано. Мне бы с первой разобраться.

Взял эту функцию закинул в эдитор создав индикатор. Ничего не добавлял не убирал.  А при компиляции появилось столько ошибок. Ужас. Потом попробовал создать советника с одной только этой функцией. Аналогичный результат.((
//+----------------------------------------------------------------------------+
//|  Возвращает номер бара экстремума ЗигЗага по его номеру.                   |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий ТФ)                       |
//|    ne  - номер экстремума          ( 0 - текущий)                          |
//|    dp  - ExtDepth                                                          |
//|    dv  - ExtDeviation                                                      |
//|    bc  - ExtBackstep                                                       |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sym="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
Что тут не так? Чего про ошибки кричит?
Причина обращения: