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

 
alph:
Por favor, ¿me puede decir, es el rendimiento de este probador en la vida realista? ¿Y es bueno o malo el resultado para un año con depo 3000$?

Por que solo tomaste el año 12? Deberias haber tomado el periodo del año 12 al 22, donde hubieras perdido en el intervalo.

 
amigos cómo escribir un programa que sume A más B.
 
Лауреат escribir un programa para sumar A más B.

¡Buenos días! Puedes escribirlo así:

//+------------------------------------------------------------------+
//|                                                     A_plus_B.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//--- ВХОДНЫЕ ПАРАМЕТРЫ
input int A=0; // Переменная А
input int B=0; // Переменная В
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int C=A+B;
   Comment("A + B равно: ",C);
   while(!IsStopped()) // проверим на принудительное завершение работы скрипта
      ChartRedraw(0); // если есть, то запустим принудительную перерисовку текущего графика
   Comment(""); // и уберём с графика комментарии
  }
//+------------------------------------------------------------------+

Saludos, Vladimir.

Archivos adjuntos:
A_plus_B.mq5  3 kb
 

¡Buenos días!

Estoy tratando decrear Asesores Expertos a través de la generación y se enfrentó el problema de un pequeño número de módulos de señal (alrededor de 20). Quiero combinar, por ejemplo, Ishimoku o Bolinger con otro (s), pero en la norma MT5 no hay señales de estos indicadores.
En los videos en Internet se puede ver que la gente tiene una amplia base de datos de módulos de señal - ¿me puede decir dónde conseguirlo?

Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Для разработки торговых систем в платформу встроен собственный язык программирования MetaQuotes Language 5 ( MQL5 ), среда разработки MetaEditor и...
 
Владимир Самусёв #:

¡Buenos días!

Estoy tratando decrear Asesores Expertos a través de la generación y se enfrentó el problema de un pequeño número de módulos de señal (alrededor de 20). Quiero combinar, por ejemplo, Ishimoku o Bolinger con otro (s), pero en la norma MT5 no hay señales de estos indicadores.
En los videos en Internet se puede ver que la gente tiene una amplia base de datos de módulos de señal - ¿me puede decir dónde conseguirlo?

¡Hola, Vladimir!

Hay muchos módulos de trading en CodeBase. Busque allí. Si no lo encuentras, tienes dos opciones más: o intentas escribir tu propia señal de trading pero gratis!) basándote en el artículo MQL5 Wizard: Cómo escribir tu propio módulo de señal de trading o contacta con Freelance y ellos escribirán cualquier módulo de trading para ti, pero por dinero.

Saludos, Vladimir.

 
Rost17 #:

Me podéis decir cómo interrumpir y eliminar del informe (o no poner en el informe) una determinada ejecución bajo determinadas condiciones (igualdad de valores de dos parámetros a buscar) al optimizar en MT5. Si sólo interrumpo la ejecución, el valor cero sigue en la listade ejecuciones (Optimización Resultado), atascando y ralentizando el proceso de optim ización.

Prueba a comprobar en Init() que no se necesita ninguna ejecución con estos parámetros, y si es así, devuelve INIT_PARAMERTERS_INCORRECT desde esa función.
Esto probablemente te dará lo que necesitas.
P.D. Comprueba los nombres en la ayuda, escribí de memoria
 
Yuriy Bykov #:
Intente comprobar en Init() que no se necesita ejecutar con dichos parámetros, y si es así, devuelva INIT_PARAMERTERS_INCORRECT desde esta función.
Esto probablemente le dará lo que necesita.
P.D. Comprueba los nombres en la ayuda, escribí de memoria

¡Gracias, Yuri!

 

Chicos, hola a todos los profesionales y quién sabe cómo!

Tengo un problema con la obtención de datos de un indicador -- por favor, ayúdame, que puede hacerlo....

Función Objetivo: Calcular la distancia media en puntos entre las líneas exteriores del indicador"Bandas de Bollinger", para el período especificado.

La esencia del problema: No puedo obtener los valores reales del precio en las líneas del indicador para la barra especificada, porque por alguna razón el mismo valor de precio se escribe en diferentes búferes del indicador, que tampoco corresponde a los valores reales de ninguna de las líneas de esta barra. Y como resultado, algún valor de precio desconocido se escribe en diferentes buffers (en diferentes peticiones), lo que anula todo el trabajo posterior de la función.
Además, utilizando exactamente el mismo método que en esta función, pude obtener indicadores de cualquier otro indicador, pero aquí no funciona....

int Bollinger_Bands(int _Average_Period, int _Number)
{
   double   Buffer_BASE_LINE[];                                                                          // Массив Буффера Линии BASE_LINE
   double   Buffer_UPPER_BAND[];                                                                         // Массив Буффера Линии UPPER_BAND
   double   Buffer_LOWER_BAND[];                                                                         // Массив Буффера Линии LOWER_BAND
   int      Bar_Cash             = _Average_Period;                                                                       // Количество плучаемых значений от индикатора
   int      Bands_Handel         = 0;                                                                       // Хендл индикатора Bollinger_Bands
   //---//
   double   Base_Line            = 0;                                                                       // Значение линии BASE_LINE
   double   Upper_Line           = 0;                                                                       // Значение линии UPPER_BAND
   double   Lower_Line           = 0;                                                                       // Значение линии LOWER_BAND
   //---//
   double   Band_Size_Buffer[];											// Буфер расчётных значений разницы между линиями индикатора 
   int      Band_Size_Total      = 0;										// Итог среднего значения расстояния между линиями в пунктах
   ENUM_APPLIED_PRICE   applied_price = PRICE_CLOSE; // тип цены 
   //---//
      ArrayResize(Band_Size_Buffer,_Average_Period+1);  
      ArrayResize(Buffer_UPPER_BAND,_Average_Period+1);
      ArrayResize(Buffer_LOWER_BAND,_Average_Period+1);
      //---//
         Bands_Handel = iBands(_Symbol,PERIOD_CURRENT,20,2,0,applied_price);
         //---//      
            CopyBuffer(Bands_Handel,0,_Number,_Average_Period,Buffer_BASE_LINE);       ArraySetAsSeries(Buffer_BASE_LINE,true);
            CopyBuffer(Bands_Handel,1,_Number,_Average_Period,Buffer_UPPER_BAND);      ArraySetAsSeries(Buffer_UPPER_BAND,true);
            CopyBuffer(Bands_Handel,2,_Number,_Average_Period,Buffer_LOWER_BAND);      ArraySetAsSeries(Buffer_LOWER_BAND,true);
            //---//

         //---//  Тут получение значений для выбранного номера бара из переменной которая передаётся в функцию (использовал как проверку получения данных по линиям)
         Base_Line   = NormalizeDouble(Buffer_BASE_LINE[_Number], _Digits);      //Alert("Base_Line[",_Number,"] = ",Base_Line);
         Upper_Line  = NormalizeDouble(Buffer_UPPER_BAND[_Number], _Digits);     //Alert("Upper_Line[",_Number,"] = ",Upper_Line);
         Lower_Line  = NormalizeDouble(Buffer_LOWER_BAND[_Number], _Digits);     //Alert("Lower_Line[",_Number,"] = ",Lower_Line);
             //---//
         
         
         //---// ** А это расчёт среднего расстояния между внешними линиями Боллинджера за указанный период. Получается 0 потому что одно число отнимается само от себя.
         for(int i=_Average_Period; i>=0; i--) { 
         //---//
            Upper_Line  = NormalizeDouble(Buffer_UPPER_BAND[i], _Digits);     //Alert("Upper_Line[",i,"] = ",Upper_Line);
            Lower_Line  = NormalizeDouble(Buffer_LOWER_BAND[i], _Digits);     //Alert("Lower_Line[",i,"] = ",Lower_Line);
            //---//
               Band_Size_Buffer[i] = NormalizeDouble( ((Upper_Line - Lower_Line) / _Point), 2);     //Alert("Band_Size_Buffer[",i,"] = ",Band_Size_Buffer[i]);
              }//---//
         
               Band_Size_Total = (int) MathMean(Band_Size_Buffer);
               //---//

   
 return(Band_Size_Total);
}
 

Hay una confusión con el uso de la biblioteca estándar.
¿Cómo obtener un ticket después de abrir un pedido utilizando la biblioteca estándar?
¿Puedoestar seguro de que la respuesta del servidor ya se recibe aquí? ¿El terminal se cuelga mientras se espera una respuesta del servidor? No está claro.

                     if(!m_trade.BuyLimit(...))
                       {
                        ...
                       }
                     else
                       {
                       int ticket=m_trade.RequestOrder();  // ??? 
                        ...
                        a[n]=ticket; 
                       }

En MQ4 todo era sencillo:

         ticket=OrderSend(...);
         if(ticket>0)
           {
            ...
            a[n]=ticket;
           }
 
Nauris Zukas uso de la biblioteca estándar.
¿Cómo obtener un ticket después de abrir un pedido utilizando la biblioteca estándar?
¿Puedoestar seguro de que la respuesta del servidor ya se recibe aquí? ¿El terminal se cuelga mientras se espera una respuesta del servidor? No lo entiendo.

En MQ4 todo era sencillo:

Es mejor usar el manejo de eventos OnTradeTransaction()

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Функции обработки событий - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5