Discusión sobre el artículo "Indicadores personalizados para principiantes en MQL5"

 

Artículo publicado Indicadores personalizados para principiantes en MQL5:

Cualquier materia parece complicada y difícil de aprender para un principiante. Materias que ahora nos parecen muy simples y claras. Pero no olvidemos que todos tenemos que aprender desde cero, incluso nuestro propio idioma. Lo mismo ocurre con el lenguaje de programación MQL5 que ofrece grandes posibilidades para desarrollar nuestras propias estrategias de trading. Podemos empezar a aprenderlo comenzando con nociones más básicas y los ejemplos más sencillos. En este artículo vamos a considerar la interacción de un indicador técnico con el terminal de cliente con un ejemplo de indicador personalizado SMA.

Autor: Nikolay Kositsin

 
Artículo muy interesante para los que empiezan..... Espero que otros como este.... gracias
 
Escrito y narrado con un sobresaliente. Después de leerlo, querrás crear algo propio. No es muy interesante reescribir el código cada vez y los autores de MQL5, dándose cuenta de ello, han creado una gran biblioteca de funciones incorporadas. He aquí una de ellas:

int iMA(
string symbol, // nombre del símbolo
ENUM_TIMEFRAMES period, // periodo
int ma_period, // periodo de promediado
int ma_shift, // desplazamiento horizontal del indicador
ENUM_MA_METHOD ma_method, // tipo de suavizado
ENUM_APPLIED_PRICE applied_price // tipo de precio o manejador
);
con el que se puede obtener el mismo resultado. Pero. Cómo obtener applied_price cuando se utiliza la forma corta int OnCalculate(). Es decir, ¿cómo llegar a los valores de la pestaña "Parámetros" al inicializar el indicador?

Gracias.

 
gracias. una explicacion muy clara para un novato como yo. esperando el proximo articulo...
 

Gracias. Es muy claro y útil para los principiantes.

 

if(prev_calculated==0) // comprueba el primer inicio del indicador
first=MAPeriod-1+begin; // índice de inicio para todas las barras
else first=prev_calculated-1; // índice de inicio para las nuevas barras

when first=MAPeriod-1+begin; ¿cuál es la barra actual ? [0] o [rates_total] ?

when first=prev_calculated-1; es un número grande, ¿hay que repetir el cálculo?

 
En el artículo " Indicadores personalizados en MQL5 para novatos" se dice: "Es mejor utilizar el orden creciente [en lugar de "orden inverso"] en los indicadores". Pero si el programa se ejecuta sin parar, con el tiempo tendería hacia el infinito, es decir, el búfer (entero) para los números de índice pronto se agotaría, ¿no? ¿Cómo se soluciona esto?
Custom Indicators in MQL5 for Newbies
  • 2010.03.03
  • Nikolay Kositsin
  • www.mql5.com
Any new subject seems complicated and hard-to-learn for a newbie. Subjects that we know seem very simple and clear to us. But we simply do not remember, that everyone has to study something from scratch, and even our native language. The same is with the MQL5 programming language that offers wide possibilities of developing one's own trading strategies - you can start learning it from basic notions and simplest examples. Interaction of a technical indicator with the MetaTrader 5 client terminal is consider in this article on the example of the simple custom indicator SMA.
 

Gracias por el artículo. Material muy útil para un principiante y
para alguien que está en transición desde otro idioma.

 

¿Ordenador traducido? Hazlo.

En comparación con MQL4, los subíndices de la matriz de métricas se calculan a partir del pasado y son fijos, no dinámicos. Me pregunto qué pasa cuando se ejecuta durante una semana o un mes? ¿Son todos los datos en la memoria? Si todo está en la memoria, ¿no se ejecutará más y más lento?

Sin embargo, en https://www.mql5.com/zh/articles/31中又说:

  1. "Establecer el índice de un elemento como una secuencia es el mismo que en MQL4" - ¿Qué significa esto? En nuestro ejemplo, utilizamos el índice del elemento como una serie de tiempo. En otras palabras, la columna actual (aún no formada) siempre tiene índice [0], la anterior (ya formada) tiene índice [1], y así sucesivamente.

Así que tenga cuidado de qué caso se utiliza realmente. la mayoría de los ejemplos MQL4 utilizar una matriz de índice con la corriente como 0, la mayoría de los ejemplos MQL5 utilizar una matriz de índice subíndice con pasado como 0.

MQL5 初学者:EA 交易技术指标使用指南
MQL5 初学者:EA 交易技术指标使用指南
  • 2013.09.04
  • Sergey Pavlov
  • www.mql5.com
为在EA 交易中获得内置或自定义指标的值,首先应使用相应函数创建指标的处理函数。本文中的示例说明了在创建自己的程序时如何使用技术指标。在本文中说明的指标使用 MQL5 语言构建。本文的目标受众是那些在交易策略开发上不具备太多经验的读者,并旨在通过使用提供的函数库提供简单明了的指标使用方式。
 
DxdCn:

¿Ordenador traducido? Arréglatelas.

En comparación con MQL4, los subíndices de la matriz de métricas se calculan a partir del pasado y son fijos, no dinámicos. Me pregunto qué pasa cuando se ejecuta durante una semana o un mes? ¿Son todos los datos en la memoria? Si todo está en la memoria, ¿no se ejecutará más y más lento?

Sin embargo, en https://www.mql5.com/zh/articles/31中又说:

  1. "Establecer el índice de un elemento como una secuencia es lo mismo que en MQL4" - ¿qué significa esto? En nuestro ejemplo, utilizamos el índice del elemento como una serie de tiempo. Es decir, la columna actual (aún no formada) siempre tiene índice [0], la anterior (ya formada) tiene índice [1], y así sucesivamente.

La mayoría de los ejemplos MQL4 utilizan un array de indicadores con el actual como 0, y la mayoría de los ejemplos MQL5 utilizan un array de indicadores con subíndices con el pasado como 0.

La funcion ArraySetAsSeries() debe ser usada en MQL5 para convertir arrays dinamicos (asignando memoria para almacenar los valores mas recientes en la direccion del indice mayor) en una forma de serie de tiempo, es decir, el dato mas reciente se almacena en el indice 0, el siguiente dato mas reciente se almacena en el indice 1, y asi sucesivamente, con el dato mas reciente almacenado en el indice 0 para siempre.

Leer con la función copybuffer (), desde la posición del índice 0 para empezar a leer hacia atrás los elementos de la matriz, leer cuántos de su propia definición en la línea.

 

¡Nicholas!

¿Puedes decirme por qué cuando intento rellenar un array de indicadores en un bucle utilizando la fórmula Masa[ i ]= Masa[ i+1]+A; donde A es una variable, la compilación pasa sin errores, pero cuando se adjunta a la ventana, aparece el mensaje array fuera de rango (out of array size)?