Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1120
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
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.
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)?
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() если текущий день не равен установленному дню
// тут остальной код советника.
}
//+------------------------------------------------------------------+
...
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.
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?
...
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);
default: return( true);
}
}
Está prohibido comerciar los jueves
Puedes hacerlo un poco más bonito, todo depende de la tarea:
#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. ¿Puede decirme a quién debo dirigirme al respecto?