Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 113

 
Alexey Kozitsyn:

Hay varias formas de obtener los precios actuales:

1. Para cualquier símbolo: si quiere obtener precios actuales garantizados, llame a SymbolInfoDouble() con los identificadores correctos antes de utilizarlos.

2. Para el símbolo actual, también puede obtener los precios actuales a través de las variables predefinidas Bid y Ask. Pueden quedar desfasados, por lo que si se está ejecutando OnTick(), debería refrescarlos con RefreshRates().

Gracias.
 
Advertencia del compilador:

"posible pérdida de datos debido a la conversión de tipos"

¿Cómo puedo superar esta advertencia?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));
 
Maksym Mudrakov:
Advertencia del compilador:

"posible pérdida de datos debido a la conversión de tipos"

¿Cómo puedo superar esta advertencia?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));

Es necesario conocer los tipos exactos de los valores devueltos por las funciones y utilizar la conversión explícita. https://www.mql5.com/ru/docs/basis/types/casting

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:
No tiene una plantilla completa: probablemente no ha configurado los búferes de los indicadores en el asistente, donde se escribirán los datos calculados.

Pero el principio básico para la mayoría de los indicadores es el siguiente:

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   if(rates_total<1) return(0);              // проверка достаточности данных для расчёта индикатора, если не достаточно - выходим
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то проверять нужно это количество, а не 1
  
   //--- Действия для полного перерасчёта индикатора
   int limit=rates_total-prev_calculated;    // количество посчитанных уже баров
   if(limit>1) {                             // если количество больше 1, значит имеем новые данные, и нужно полностью пересчитать индикатор
      limit=rates_total-1;                   // задаём количество требуемых для расчёта баров равным количеству баров в истории,
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то это количество тоже нужно вычесть из rates_total чтобы не выйти за пределы массива
                                             // так же тут нужно при необходимости произвести инициализацию буферов индикатора
      }
  
   //--- Основной цикл индикатора
   for(int i=limit; i>=0; i--) {
      // тут выполняем нужные расчёты и записываем их результат в нужные буферы, например:
      ExtMapBuffer[i]=(open[i]+high[i]+low[i]+close[i])/4.0;   // Выведем на график среднюю цену каждой свечи (OHLC/4.0)
      }
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Artem, hay un error en el compilador: 'ExtMapBuffer' - identificador no declarado

 
Andrey Koldorkin:
Artem, el compilador dio un error: 'ExtMapBuffer' - identificador no declarado

Por supuesto que sí. Lo escribí de la nada. Y antes de escribir el ejemplo, te dije que no se especifica ninguna variable externa en la plantilla (no es necesario) y no se especifica ningún buffer para mostrar los cálculos del indicador. Por supuesto, hay algunos indicadores que no utilizan la salida del buffer, pero no en su caso.

Por eso he puesto este tope. Debería volver a crear la plantilla, pero debería ser más responsable de esta simple acción y preguntarse: "¿Pero qué me pide el asistente y qué necesita?
 
Hola! Hace unos cuatro meses empecé a estudiar MQL4 usando el tutorial de Kovalev. También tengo vídeos. Estoy viendo el vídeo, estudiando el tutorial, copiando los códigos que se utilizan allí. entiendo que esto es un asunto muy serio y se necesita tiempo para dominarlo. pero se exactamente que necesito practica. necesito tareas simples y escribirlas y que alguien las revise entonces podre ir mas lejos! otro problema es que el libro y los videos han sido actualizados, incluso repito el codigo del libro, lo compilo, me da errores, parezco una oveja en la nueva puerta...... esa es la tristeza!
 
FOTOGRAF14:
Hola! Hace unos cuatro meses empecé a estudiar MQL4 usando el tutorial de Kovalev. También tengo vídeos. Veo el vídeo y estudio el tutorial, repito los códigos que se utilizan allí. entiendo que esto es un asunto muy serio y se necesita tiempo para dominarlo. pero se exactamente que necesito practica. necesito tareas simples y escribirlas y que alguien las revise entonces podre ir mas lejos! otro problema es que el libro y los videos han sido actualizados, incluso repito el codigo del libro, lo compilo, me da errores, parezco una oveja en la nueva puerta...... esa es la tristeza!

Lee la documentación por una vez. El libro de texto está desfasado en algunos puntos. La documentación le ayudará a ello. En cuanto a las tareas - resolver las mismas tareas que se describen en el libro de texto. Lee el problema, mira la solución, repítelo. Y así sucesivamente hasta que le cojas el tranquillo. Es mejor tomar las tareas lo más cerca posible de las que quieres aprender a implementar tú mismo.

Todo, por supuesto, en mi opinión.

 
Sergey Gritsay:
A mí me compila bien.

Bien, ¿quieres explicar por qué esos objetos no se diferencian?

Si cambia el tipo de objeto, las propiedades se colapsarán con 2 etiquetas o líneas de tendencia

 
Alexey Kozitsyn:

Lee la documentación por una vez. El libro de texto está desfasado en algunos puntos. La documentación le ayudará a ello. En cuanto a las tareas - resolver las mismas tareas que se describen en el libro de texto. Lee el problema, mira la solución, repítelo. Y así sucesivamente hasta que le cojas el tranquillo. Es mejor tomar las tareas lo más cerca posible de las que quieres aprender a implementar tú mismo.

Todo, por supuesto, en mi opinión.

Gracias.

 
trader781:

Bien, ¿quieres explicar por qué esos objetos no se diferencian?

Si cambia el tipo de objeto, las propiedades se colapsarán con 2 etiquetas o líneas de tendencia

R ¿Qué objetos no se diferencian? y ¿qué quiere decir que al sustituir el tipo de objeto, las propiedades se colapsan?