Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1339

 
Iurii Tokman:

hay que insertar el código Alt+S
y ¿dónde está la función?
¿cómo lo has compilado? ¿no hay errores?

Su código tiene trabajo con órdenes pendientes y la función funciona con posiciones - necesita algunos ajustes

 
Vitaly Muzichenko:

Su código funciona con órdenes pendientes, mientras que la función funciona con posiciones - tenemos que hacer algunos ajustes

Exactamente, sólo se manejan las órdenes limitadas sellstop y buystop. ¿Qué hay que corregir?

 
sibiriyak73:

Absolutamente correcto, sólo se trabaja con las órdenes limitadas sellstop y buystop. ¿Qué hay que arreglar?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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:

¿Esta función es para el lado de la compra o para la compra y la venta?

¿Debo mantener los 6 tipos de pedidos resaltados en amarillo?

Se compiló sin errores, pero no abre los pedidos

 
sibiriyak73:

¿Esta función es para el lado de la compra o para la compra y la venta?

¿Debo mantener los 6 tipos de pedidos resaltados en amarillo?

Compila correctamente pero no abre los pedidos

Esto es para todos los tipos. Debería funcionar si lo usas correctamente


P.D. Intenta analizar lógicamente por qué puede no funcionar y qué es lo que lo impide.

 

Y probablemente es mejor insertar la función una vez, no importa qué tipo es o ha sido en el mercado de todos modos

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); //Здесь открываем
   }
 }
 
¡Felices Toros de Año Nuevo para todos! Crecimiento alcista para todos)

¿Me pueden decir cómo calcular el valor en puntos del día (o de la hora) anterior entre el precio más bajo y el más alto?
 
Порт-моне тв:
¡Felices Toros de Año Nuevo para todos! Crecimiento alcista para todos)

¿Me pueden decir cómo calcular el valor del punto del día anterior (o de la hora) entre el precio más bajo y el más alto?
( High[1] - Low[1] ) / Point()
 
Hola a todos.

¿Puede decirme qué significa este código o, más exactamente, cómo funciona en principio? En este caso se utiliza la macro-sustitución, y es la condición principal para abrir órdenes. PS. La variable global no se modifica en ningún sitio.

#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:
Hola a todos.

¿Puede decirme qué significa este código o, más exactamente, cómo funciona en principio? En este caso se utiliza la macro-sustitución, y es la condición principal para abrir órdenes. PS. La variable global no se modifica en ningún sitio.

tal vez sea

MARKET_WATCH,                               // окна "Обзор рынка"