Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 356

 

Karputov Vladimir:
Высылайте.

Enviado

 
Karputov Vladimir:
Envíamelo.
También me gustaría añadir que si se cambian los parámetros de entrada, el indicador también funciona correctamente y sin errores
 

Con la ayuda deKarputov Vladimir. He resuelto el problema obteniendo el manejador del indicador en la función OnInit() y luego borrándolo en OnDeinit().

¿Podría hacer que el indicador dibuje líneas a partir de una barra determinada y no en todo el historial?

 

Buenas tardes. Tengo un problema así. He empezado a estudiar MQL y estoy escribiendo un EA. Cuando compilo y luego ejecuto el Asesor Experto, abre el gráfico EUR de una hora, pero no he especificado qué gráfico abrir. He prescrito la apertura del eurodólar durante 5 minutos. Primero abre el eurodólar por una hora, y luego por 5 minutos. ¿Cómo puedo eliminar el gráfico de las horas? Aquí está el código del Asesor Experto. Gracias por los consejos de antemano.


//+------------------------------------------------------------------+
//|а.mq4 |
//|Valery Wilkes |
//|https://www.mql5.com |||
//+------------------------------------------------------------------+
#property copyright "Valery Wilkes"
#enlace de propiedad "https://www.mql5.com"
#versión de la propiedad "1.00"
#propiedad estricta
doble iAlligator();
bool ObjectSetInteger();
long a=ChartOpen("EURUSD",PERIOD_M5);
//+------------------------------------------------------------------+
//| Función de inicialización de expertos|
//+------------------------------------------------------------------+
int OnInit()
{
//--- crear temporizador
EventSetTimer(5);

//---
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Función de desinicialización de expertos|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destruir temporizador
EventKillTimer();

}
//+------------------------------------------------------------------+
//| función de tic experto|
//+------------------------------------------------------------------+
void OnTick()
{


for(int f=3;; f++)
{
double val=iFractals("EURUSD",15,1,f);
if(val!=0)
{
Alert("Comprar Fractal",val, "Barra Izquierda",f);
romper;
}
}
for(int f1=3;; f1++)
{
double val1=iFractals("EURUSD",15,2,f1);
if(val1!=0)
{
Alert("Fractal para vender ",val1, "Barra izquierda",f1);
romper;
}
Alerta(s);
}


}
//+------------------------------------------------------------------+
//| Función de temporizador|
//+------------------------------------------------------------------+

void OnTimer()
{


}
//+------------------------------------------------------------------+
//| Función de comprobación|
//+------------------------------------------------------------------+
double OnTester()
{
//---
doble ret=0,0;
//---

//---
return(ret);
}
//+------------------------------------------------------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
valeravilks:

Buenas tardes. Tengo un problema así. He empezado a estudiar MQL, y estoy escribiendo un Asesor Experto. Cuando compilo y ejecuto el Asesor Experto, se abre el gráfico horario del EURUSD, pero aún no he especificado qué gráfico abrir. He prescrito la apertura del eurodólar durante 5 minutos. Primero abre el eurodólar por una hora, y luego por 5 minutos. ¿Cómo puedo eliminar el gráfico de las horas? Aquí está el código del Asesor Experto. Gracias por el consejo de antemano.



Debe habilitar la depuración y luego su EA se inicia en el símbolo por defecto. Especifique el símbolo y el TF necesarios en la configuración del metaeditor. (Ver imagen adjunta).

Archivos adjuntos:
kagfqct9ki.png  28 kb
 
Buenas tardes.
int maxValueIdx= ArraySort(INDEX,WHOLE_ARRAY,ArrayMaximum(INDEX,WHOLE_ARRAY,0),MODE_ASCEND);
int minValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMinimum(INDEX,WHOLE_ARRAY,0),MODE_DESCEND);  
¿Qué crees que significa?
 
azfaraon:
Buenas tardes.
¿Qué crees que significa?
Este es el código MQL4. Primero, busca el máximo de la matriz, comprueba toda la matriz, empezando por el elemento cero. Y luego el array se ordena a partir del índice máximo encontrado (en el primer ejemplo en orden ascendente, en el segundo - en orden descendente).
 

¿Así que en esta pieza estamos buscando los valores máximos y mínimos del máximo al mínimo?

y en este

  int maxValueIdx=ArrayMaximum(INDEX,WHOLE_ARRAY,0);
      int minValueIdx=ArrayMinimum(INDEX,WHOLE_ARRAY,0);

¿de mínimo a máximo?

 
azfaraon:


Este código:

int maxValueIdx=ArrayMaximum(INDEX,WHOLE_ARRAY,0);

busca el índice del elemento con el valor máximo. La búsqueda se realiza a partir del elemento cero y a través de toda la matriz.

 
azfaraon:

Este es el código

//+------------------------------------------------------------------+
//|                                                  test_script.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Инициализация массива
   int INDEX[]={2,45,21,8,96,14,32,6,81,46,1,3,31,22,5,78,24,25,66};

//--- Выведем на печать наш массив
   int size;
   string text;

   size=ArraySize(INDEX);        // размер нашего массива
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print("Старт");
   Print(text);
//---
   Print("---");
   Print("Элемент с индексом ",ArrayMaximum(INDEX,WHOLE_ARRAY,0),
         " имеет максимальное значение равное ",INDEX[ArrayMaximum(INDEX,WHOLE_ARRAY,0)]);
   int maxValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMaximum(INDEX,WHOLE_ARRAY,0),MODE_ASCEND);

//--- Выведем на печать наш массив
   size=ArraySize(INDEX);       // размер нашего массива   
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print(text);

//---
   Print("---");
   Print("Элемент с индексом ",ArrayMinimum(INDEX,WHOLE_ARRAY,0),
         " имеет минимальное значение равное ",INDEX[ArrayMinimum(INDEX,WHOLE_ARRAY,0)]);
   int minValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMinimum(INDEX,WHOLE_ARRAY,0),MODE_DESCEND);

//--- Выведем на печать наш массив
   size=ArraySize(INDEX);       // размер нашего массива   
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print(text);
   Print("Конец");
  }
//+------------------------------------------------------------------+

y este es el resultado:

2015.05.03 19:20:03.917 test_script #CHL,Daily:  Старт
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,96,14,32,6,81,46,1,3,31,22,5,78,24,25,66
2015.05.03 19:20:03.917 test_script #CHL,Daily: ---
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Элемент с индексом 4 имеет максимальное значение равное 96
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,1,3,5,6,14,22,24,25,31,32,46,66,78,81,96
2015.05.03 19:20:03.917 test_script #CHL,Daily: ---
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Элемент с индексом 4 имеет минимальное значение равное 1
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,96,81,78,66,46,32,31,25,24,22,14,6,5,3,1
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Конец

Explora, por favor.

Razón de la queja: