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

 
Iurii Tokman:

код нужно вставить Alt+S
и где функция ?
как вы его скомпилировали ? без ошибок ?

У него в коде работа с отложками, а функция работает с позициями - нужно немного подправить

 
Vitaly Muzichenko:

У него в коде работа с отложками, а функция работает с позициями - нужно немного подправить

Совершенно верно  работа ведется только с лимитными ордерами sellstop и buystop. Что нужно исправить?

 
sibiriyak73:

Совершенно верно  работа ведется только с лимитными ордерами sellstop и buystop. Что нужно исправить?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг торгов сегодня.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isTradeToDay(string sy="", int op=-1, int mn=-1) {
  int i, 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 (TimeDay  (OrderOpenTime())==Day()
              &&  TimeMonth(OrderOpenTime())==Month()
              &&  TimeYear (OrderOpenTime())==Year()) return(True);
            }
          }
        }
      }
    }
  }
  k=OrdersTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()<=6) { 
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (TimeDay  (OrderOpenTime())==Day()
              &&  TimeMonth(OrderOpenTime())==Month()
              &&  TimeYear (OrderOpenTime())==Year()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}
 
Vitaly Muzichenko:

Эта функция для бай стороны или для бая и селла?

То что желтым выделено 6 типов ордеров так и оставлять?

Скомпилировалось без ошибок но ордера не открывает

 
sibiriyak73:

Эта функция для бай стороны или для бая и селла?

То что желтым выделено 6 типов ордеров так и оставлять?

Скомпилировалось без ошибок но ордера не открывает

Это для всех типов, должно работать при правильном применении


P.S. Попробуйте логически разобраться, почему может не работать и что мешает.

 

И вставлять функцию наверное более правильно 1 раз, всё-равно не имеет значения, какой тип уже есть или был в рынке

if(Hour()==Nac && !isTradeToDay(Symbol()))
 {
   if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))
   {
     int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //Здесь открываем
   }

   if(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))
   {
     int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,clrBlueViolet); //Здесь открываем
   }
 }
 
Всех с новым годом Быка! Всем бычьего роста!:)

Подскажите как вычислить величину пунктов прошлого дня (или часа) между самой низкой и самой высокой ценой. 
 
Порт-моне тв:
Всех с новым годом Быка! Всем бычьего роста!:)

Подскажите как вычислить величину пунктов прошлого дня (или часа) между самой низкой и самой высокой ценой. 
( High[1] - Low[1] ) / Point()
 
Доброго всем!

Может подсказать, что это код означает или точнее, как он принципе работает? В данном случае используется Макроподстановка, и она является главным условием для открытия ордеров. PS. Глобальная переменная нигде не видоизменяется. 

#define MARKET_WATCH          (0)

bool  Gl_Var_MarketWatch    =  MARKET_WATCH;  // глобальная переменная

if(Gl_Var_MarketWatch) ticket=OrderSend(symbol_name,op,ll,pp,MaxSlippage,0,0,co,mn,0,clOpen);
      else ticket=OrderSend(symbol_name,op,ll,pp,MaxSlippage,sl,tp,co,mn,0,clOpen);
Макроподстановка (#define) - Препроцессор - Основы языка - Справочник MQL4
Макроподстановка (#define) - Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression может...
 
Tom Seljakin:
Доброго всем!

Может подсказать, что это код означает или точнее, как он принципе работает? В данном случае используется Макроподстановка, и она является главным условием для открытия ордеров. PS. Глобальная переменная нигде не видоизменяется. 

возможно это

MARKET_WATCH,                               // окна "Обзор рынка"
Причина обращения: