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

 
Artyom Trishkin:

Simplemente añade otra matriz CArrayObj a la matriz CArrayObj: Add()

No funciona así. No se permite la conversión de parámetros

Por cierto, si importa. Mi objeto a añadir al array es una clase heredada de CArrayObj.

class CCustomClass : public CArrayObj
{
}




CCustomClass obj1;
CCustomClass obj2;
...

CArrayObj objects_array;
objects_array.Add(obj1); 
Bien, jura en la última línea - conversión de parámetros no permitida.
 
objects_array.Add(GetPointer(obj1)); 
Está funcionando, no vi que no tenía un puntero.
 
TaywinLannister:

¡¡¡Estimados miembros del foro ayuda por favor!!!

Quiero asignar un paso de precio a una variable:

int V=SymbolInfoInteger(Symb,SYMBOL_POINT);

error: 'SymbolInfoInteger' - no se puede aplicar ninguna de las sobrecargas a la llamada a la función

¿Cuál es mi error?


int V=(int)SymbolInfoInteger(Symb,SYMBOL_POINT);

Así que pruébalo.

 
foreXteller:

Estimados miembros del Foro

Por favor, ¡acompáñeme!

La ventana de MetaTrader 5 muestra los valores Bid& Ask, que (según tengo entendido) determinan la ganancia/pérdida.

Sin embargo, cuando intento utilizar las cotizaciones por minuto del historial para probar mi estrategia, estas cotizaciones no contienen los valores de Oferta y Demanda, sino que dan los valores " OPEN", "HIGH" "LOW", "CLOSE", "TICKVOL","VOL","SPREAD". No está del todo claro cómo tomar el Bid y el Ask de estos valores, así como la forma de calcular el spread.

Todo está absolutamente claro. Describa con más detalle lo que significa exactamente "cuando intento utilizar las citas del historial de minutos". ¿Qué hace o quiere hacer exactamente?

 
TaywinLannister:

¡¡¡Estimados miembros del foro ayuda por favor!!!

Quiero asignar un paso de precio a una variable:

int V=SymbolInfoInteger(Symb,SYMBOL_POINT);

error: 'SymbolInfoInteger' - no se puede aplicar ninguna de las sobrecargas a la llamada a la función

¿Cuál es mi error?


Ayuda deSymbolInfoInteger:

1. Devuelve directamente el valor de la propiedad.

long  SymbolInfoInteger( 
   string                    name,      // символ 
   ENUM_SYMBOL_INFO_INTEGER  prop_id    // идентификатор свойства 
   );

2. Devuelve true o false dependiendo del éxito de la función. Si tiene éxito, el valor de la propiedad se coloca en la variable de destino pasada por referencia por el último parámetro.

bool  SymbolInfoInteger( 
   string                    name,      // символ 
   ENUM_SYMBOL_INFO_INTEGER  prop_id,   // идентификатор свойства 
   long&                     long_var   // сюда примем значение свойства 
   );


Es decir, OR long OR bool.

 
TaywinLannister:

¡¡¡Estimados miembros del foro ayuda por favor!!!

Quiero asignar un paso de precio a una variable:

int V=SymbolInfoInteger(Symb,SYMBOL_POINT);

error: 'SymbolInfoInteger' - no se puede aplicar ninguna de las sobrecargas a la llamada a la función

¿Cuál es mi error?


double V=SymbolInfoDouble(Symb,SYMBOL_POINT);

Point es un valor de tipo double. Cuando se recibe como int tendrá un valor cero.

 
Vladimir Karputov:

Ayuda deSymbolInfoInteger:

1. Devuelve directamente el valor de la propiedad.

2. Devuelve true o false dependiendo del éxito de la función. Si tiene éxito, el valor de la propiedad se coloca en la variable de destino pasada por referencia por el último parámetro.


Es decir, OR long OR bool.

Lo tengo, gracias)

 
#property copyright "Copyright 2018, Sergey S Morozov"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//#property indicator_separate_window    // Индик. рисуется в новом окне
#property indicator_chart_window    // Индик. рисуется в основном окне

#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Red     // Цвет первой линии

extern int History  =50;            // Колич.баров в расчётной истории
extern int Aver_Bars=5;             // Количество баров для расчёта

double ArrayBuff[];

//----------------------------------------------------------------------------------------------------

int OnInit()
{
   SetIndexBuffer(0,ArrayBuff);
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1);
   return(INIT_SUCCEEDED);
}

int OnCalculate(

                const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])

  {

      int i,                           // Индекс бара
      n,                               // Формальный параметр
      Counted_bars;                    // Количество просчитанных баров 
      double
      Sum_H,                           // Сумма значений High за переиод
      Sum_L;                           // Сумма значений Low  за переиод
   //--------------------------------------------------------------------
      Counted_bars=IndicatorCounted(); // Количество просчитанных баров
      i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
      if (i>History-1)                 // Если много баров то ..
         i=History-1;                  // ..рассчитывать заданное колич.
      while(i>=0)                      // Цикл по непосчитанным барам
        {
         Sum_H=0;                      // Обнуление в начале цикла
         Sum_L=0;                      // Обнуление в начале цикла
         for(n=i;n<=i+Aver_Bars-1;n++) // Цикл суммирования значений
           {
            Sum_H=Sum_H + High[n];     // Накопление суммы макс.значений
            Sum_L=Sum_L + Low[n];      // Накопление суммы мин. значений
           }
         ArrayBuff[i]=(Sum_H-Sum_L)/Aver_Bars;  // Знач. 0 буфера на i-ом баре
         i--;                                   // Расчёт индекса следующего бара
        }

   return(rates_total);

  }
//+------------------------------------------------------------------+

Acabo de empezar, todavía no sé escribir en este idioma. Pero el problema es que si en una nueva ventana, el gráfico aparece. Pero no puedo mostrarlo en el actual... ¿Cuál es mi error? Teniendo en cuenta que yo mismo no pude escribirlo y no encuentro ejemplos aquí. Además, está claro que no es a través de una función como SetChartData(punto1,punto2); simplemente ocurre por sí mismo...

Y la variable parece estar configurada(indicator_chart_window), pero sigue sin funcionar....

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Как прописать расписание торговли робота? Здравствуйте...
 
Vladimir Karputov:

Todo está disponible. Describa con más detalle lo que significa exactamente "cuando intento utilizar las citas del historial de minutos". ¿Qué hace o quiere hacer exactamente?

Para descargar las cotizaciones del historial cargue MetaTrader 5, haga clic en el icono con el símbolo del dólar : "Symbol List Display" (o puede pulsar Ctrl U). Aparecerá la ventana "Símbolos". En la pestaña "ESPECIFICACIÓN" busque el par de divisas deseado, por ejemplo, GBPCHF. En la pestaña "Bares" establezca las cotizaciones de los minutos (M1) y las fechas de inicio y fin del periodo requerido. Después de hacer clic en el botón "SOLICITAR", se descargará un archivo csv, que puede utilizarse para probar estrategias con el Metatrader o con sus propios programas.

Utilizando EXCEL puede ver el contenido de este archivo, donde la primera línea revela la información del archivo, es decir, "fecha, hora" y luego" OPEN", "HIGH" "LOW", "CLOSE", "TICKVOL", "VOL", "SPREAD"

Sé exactamente lo que significan estos datos, pero ¿cómo hacer BIT y ASK de estos datos, que MetaTrader 5 utiliza?

 
Por favor, aconséjeme dónde en mt5 se puede comprobar la información sobre un símbolo? Recuerdo que en mt 4 se podía comprobar en el probador de estrategias, pero en el probador de mt5 no he encontrado esta función.