[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 97

 

Здесь: https://docs.mql4.com/ru/dateandtime/DayOfWeek

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

 
Подскажите, плиз, можно ли изменить шаблон графика, открываемого после тестирования? Чтобы метки сделок были видны, а то применяю свой шаблон - и все метки попадают...
 
alexhammer:


Не подходят Ваши коды.... :( нужно просто открыть ордер в тот-же момент когда сработает Стоп..... Индикаторов нет... просто по закрытию лота.... не думал что это настолько трудная задачка!

БУДЬТЕ добры помогите!!! Срочно нужно! :(

 
ScioMe:
Подскажите, плиз, можно ли изменить шаблон графика, открываемого после тестирования? Чтобы метки сделок были видны, а то применяю свой шаблон - и все метки попадают...

Запустите тестер с галочкой у "Визуализация".

Когда тестер загрузит историю и начнет работу, нажмите на кнопку паузы и установите на график свой шаблон,

отожмите паузу, чтобы продолжить работу тестера. При желании можно пропустить визуализацию (кнопка "Пропустить до").

После завершения работы тестера вы увидите все стрелочки на графике с вашим шаблоном.

 
PariaH:


Не подходят Ваши коды.... :( нужно просто открыть ордер в тот-же момент когда сработает Стоп..... Индикаторов нет... просто по закрытию лота.... не думал что это настолько трудная задачка!

БУДЬТЕ добры помогите!!! Срочно нужно! :(

По моему это можно решить отслеживая количество висящих лотов. Функция есть CalculateOrders() помоему в встроенном советнике MovingAverage.

выставили заявку->посчитали количество ордеров активных->запомнили в переменную->

каждую итерацию в функции старт проверяем не уменьшилось ли количество->если уменьшилось реагируем как необходимо.

 
PariaH:


Не подходят Ваши коды.... :( нужно просто открыть ордер в тот-же момент когда сработает Стоп..... Индикаторов нет... просто по закрытию лота.... не думал что это настолько трудная задачка!

БУДЬТЕ добры помогите!!! Срочно нужно! :(

Ф-ция возвращает флаг закрытия последней позиции по стопу:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по стопу.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, osl;
  int      dg, 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)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    osl=NormalizeDouble(OrderStopLoss(), dg);
    if (ocp==osl) return(True);
  }
  return(False);
}

... по тейку:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, 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)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}

Ищите для себя тут. Потом сами сможете себе написать...

 

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

Разбираю один советник, немогу понять как должна выполнятся следующая строка:

if (profitbuy<=0)mtpb=tpb;

Условие ясно, неясно при каком результате условия переменная mtpb примет значение переменной tpb.

 
paibolit:

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

Разбираю один советник, немогу понять как должна выполнятся следующая строка:

if (profitbuy<=0)mtpb=tpb;

Условие ясно, неясно при каком результате условия переменная mtpb примет значение переменной tpb.

Если профит баевых позиций не больше нуля, то mtpb=tpb.
 
ZZZEROXXX:

Здесь: https://docs.mql4.com/ru/dateandtime/DayOfWeek

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

Цель не оправдывает средства.

Для пояснения - вот такой вопрос: вы сами, когда хотите определить, "какой день недели будет на будущей недели последний", что делаете? Правильно, ищете календарик на текущий год, смотрите, какие куда праздники выпадают конкретно в вашей стране, справляетесь, не переносились ли выходные с одного дня на другой (например, с воскресенья на четверг, для этого каждый год парламент, т.е. Госдума у нас, принимает отдельный документ) ну и т.д. Как думаете, будет ли кто-нибудь заморачиваться и делать для этого программу на MQL? Лично мне проще посмотреть в календарь...

 

Доброго вечера! Извините,хочу понять принцип,что,такая конструкция не возможна?

int u; u=0-10; for( u;u<30;u++) {Alert("u",u); } Пишет ошибку ';' - assignment expected C:\Òîðãîâàÿ ïëàòôîðìà MF Trader 4\äîêóìåíòè\experts\öèêë.mq4 (33, 31)
Показивает на точку с запятой между u;u я 1о раз все со справкой сверил обьясните,пожалуста!!

Причина обращения: