Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1120

 

Tengo un EA, quiero que sea capaz de elegir en qué días operar y en cuáles no.

Mon - false

Martes - verdadero

Cp- ...

Por favor, aconséjeme cómo ponerlo en práctica.

 
RichLux:

Tengo un EA, quiero que sea capaz de elegir en qué días operar y en cuáles no.

Mon - false

Martes - verdadero

Cp- ...

Por favor, aconséjeme cómo ponerlo en práctica.

DayOfWeek

Devuelve el número secuencial del día de la semana de la última hora conocida del servidor.

intDíaDeLaSemana();

Valor devuelto

Número secuencial del día de la semana (domingo-0,1,2,3,4,5,6).

Nota

Durante las pruebas, se simula la última hora conocida del servidor.

Ejemplo:

// no trabaja los fines de semana.
if(DayOfWeek()==0 ||DayOfWeek()==6)return(0);

 

DayOfWeek

Devuelve el número de secuencia deldía de la semana de la última hora conocida del servidor.

Gracias, eso tiene más sentido.

Ahora no sé cómo implementar la selección de días de negociación en los parámetros externos. En detalle, quiero que un mismo EA opere en un par comercial el lunes, y que no opere en otro.

¿Cómo escribirlo en "extern" y luego implementarlo en condición (if...else)?

 
RichLux:

DayOfWeek

Devuelve el número de secuencia deldía de la semana de la última hora conocida del servidor.

Gracias, eso tiene más sentido.

Ahora no sé cómo implementar la selección de días de negociación en los parámetros externos. En detalle, quiero que un mismo Asesor Experto opere en un par comercial el lunes, y que no opere en otro.

¿Cómo escribirlo en "extern" y luego implementarlo en condición (if...else)?

Este es un ejemplo sencillo que permite operar sólo el lunes. Este código funciona en MT4 y MT5

//+------------------------------------------------------------------+
//|                                                       test08.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link      "https://www.mql5.com/ru/users/sergey1294"
#property version   "1.00"
#property strict

input ENUM_DAY_OF_WEEK dayofweek=MONDAY;

MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   TimeToStruct(TimeCurrent(),time);
   if(time.day_of_week!=dayofweek)return; // выйдем из OnTick() если текущий день не равен установленному дню
  
   // тут остальной код советника.
  }
//+------------------------------------------------------------------+


...

 
RichLux:

DayOfWeek

Devuelve el número de secuencia deldía de la semana de la última hora conocida del servidor.

Gracias, eso tiene más sentido.

Ahora no sé cómo implementar la selección de días de negociación en los parámetros externos. En detalle, quiero que un mismo Asesor Experto opere en un par comercial el lunes, y que no opere en otro.

¿Cómo escribirlo en "extern" y luego implementarlo en condición (if...else)?

Utilice la enumeración ENUM_DAY_OF_WEEK

Al final de la página.

Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
 

void OnTick()
{
//---
TimeToStruct(TimeCurrent(),time);
if(time.day_of_week!=dayofweek)return; // salir de OnTick() si el día actual no es igual al día establecido

// aquí el resto del código del EA
}
//+------------------------------------------------------------------+


...

Gracias.

Realmente, ahora tenemos que lidiar con el punto, que cada par tiene un número diferente de días "laborables".

Probablemente, hay que introducir 5 variables:¿Día de la semana 1,día de la semana 2,...?

Pero de nuevo, ¿qué debo introducir en las 2 variables restantes si hay 3 días de negociación?

 
Buenas tardes, ¿podrían decirme cómo solucionar este problema? Hay un código con entrada en M15, pero se tiene en cuenta la señal de H1. Mientras que en H1 hay una señal, en M15 el indicador da varias señales. La cuestión es limitarlo a uno (es decir, la primera señal).
Archivos adjuntos:
nsm.txt  1 kb
 
RichLux:


...

Gracias.

Ahora, sin embargo, tenemos que lidiar con el hecho de que cada par tiene un número diferente de días "laborables".

Probablemente, hay que introducir 5 variables:¿Día de la semana 1,día de la semana 2,...?

Pero de nuevo, ¿qué debo introducir en las 2 variables restantes si hay 3 días de negociación?

Podemos intentar hacerlo así:

#property strict

//-
enum YesNo {
_no       = 0, // NoTrade
_yes      = 1  // Trade
};
//-
sinput YesNo day1 = _yes; // Пн
sinput YesNo day2 = _yes; // Вт
sinput YesNo day3 = _yes; // Ср
sinput YesNo day4 = _no;  // Чт
sinput YesNo day5 = _yes; // Пт


MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
//--

 // здесь какой-то код, например закрытие

  ... 

 // проверка запрета на торговлю
  if(TradeAllow()) return;
   // далее код
  
}

//+------------------------------------------------------------------+
//| Разрешение на торговлю по дням                                   |
//+------------------------------------------------------------------+
bool TradeAllow() {
TimeToStruct(TimeCurrent(),time);
  switch(time.day_of_week) {
   case 1 : return(!day1);
   case 2 : return(!day2);
   case 3 : return(!day3);
   case 4 : return(!day4);
   case 5 : return(!day5);
   defaultreturntrue);
  }
}

Está prohibido comerciar los jueves

Puedes hacerlo un poco más bonito, todo depende de la tarea:

#property version   "1.00"
#property strict

//-
enum YesNo {
_no       = 0, // No trade
_yes      = 1  // Trade
};
//-
sinput YesNo day1 = _yes; // Пн
sinput YesNo day2 = _yes; // Вт
sinput YesNo day3 = _yes; // Ср
sinput YesNo day4 = _no;  // Чт
sinput YesNo day5 = _yes; // Пт


MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
//--
  if(TradeAllow()) {
    ClosePos(); // Только закрытие
  } else {
    ClosePos(); // Закрытие
    OpenPos();  // Открытие
    Function()  // Ещё что-то
  }
  
//-
}
//+------------------------------------------------------------------+
//| Функция закрытия                                                 |
//+------------------------------------------------------------------+
void ClosePos()
{
  // код
}

//+------------------------------------------------------------------+
//| Функция открытия                                                 |
//+------------------------------------------------------------------+
void OpenPos()
{
  // код
}

//+------------------------------------------------------------------+
//| Разрешение на торговлю по дням                                   |
//+------------------------------------------------------------------+
bool TradeAllow() {
TimeToStruct(TimeCurrent(),time);
  switch(time.day_of_week) {
   case 1 : return(!day1);
   case 2 : return(!day2);
   case 3 : return(!day3);
   case 4 : return(!day4);
   case 5 : return(!day5);
   default: return( true);
  }
}
//+------------------------------------------------------------------+
 
Hola a todos. Utilizo el indicador delta de clusterdelta.com en mis operaciones con MT4. Necesito un autónomo que pueda hacer que cuando se alcance un determinado umbral en los valores del indicador, se emita una alerta o algún otro sonido. ¿Pueden decirme a quién debo dirigirme para tratar este asunto?
 
Lexx1:
Hola a todos. Utilizo el indicador delta de clusterdelta.com en mis operaciones con MT4. Necesito un autónomo que pueda hacer que cuando se alcance un determinado umbral en los valores del indicador, se emita una alerta o algún otro sonido. ¿Puede decirme a quién debo dirigirme al respecto?
Hay una barra azul en la parte superior con muchas letras diferentes. Busca la palabra "Freelance" y haz clic en ella. Creo que ya sabes qué hacer a partir de ahí.