Discusión sobre el artículo "Ampliación de la librería estándar de MQL5 y la reutilización del código"
Gracias. Muy informativo.
Trato de entender lo que significa este código en este artículo por qué tenemos un * cerca de la CINDICATOBUFFER y luego usar at.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
Agradecería una explicación detallada
gracias
Trato de entender lo que significa este código en este artículo por qué tenemos un * cerca de la CINDICATOBUFFER y luego usar at.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
Agradecería una explicación detallada
gracias
cadena
m_handle=iCustom(symbol,period,zigzag,depth,deviation_create,backstep);
No encuentro la ruta al indicador.
¿Cuál es la forma correcta de especificar aquí, los indicadores que estoy tratando de llamar se encuentran en la carpeta estándar.
Standard Zigzag se encuentra en la carpeta Examples, debe añadir el nombre de la carpeta a la ruta.

2017.07.12 10:38:05.703 Proba2 (EURUSD.m,M1) no puede cargar el indicador personalizado 'Examples\ZigZag'[4302]
¿Quién va a mirar el código de error?
ERR_MARKET_NOT_SELECTED | 4302 | Símbolo no seleccionado en MarketWatch |
¿Quién va a mirar el código de error?
ERR_MERCADO_NO_SELECCIONADO | 4302 | Símbolo no seleccionado en MarketWatch |
¡¡¡¡Pongo NULL - funciona, pongo "EURUSD" - no funciona!!!!
bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- comprobar historial if(!SetSymbolPeriod(symbol,period)) return(false); //--- crear //m_handle=iCustom(symbol,period, "Examples\\ZigZag",depth,deviation_create,backstep); //m_handle=iCustom("EURUSD",period, "Examples\\ZigZag",depth,deviation_create,backstep); - NO funciona m_handle=iCustom(NULL,period,"Examples\\ZigZag",depth,deviation_create,backstep); - работает //--- comprueba el resultado if(m_handle==INVALID_HANDLE) return(false); //--- indicador creado con éxito if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- error de inicialización IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); } IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
//+------------------------------------------------------------------+ //|| Crear el indicador "Zig Zag| //+------------------------------------------------------------------+ bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- comprobar historial if(!SetSymbolPeriod(symbol,period)) return(false); //--- crear m_handle=iCustom(symbol,period,"zigzag",depth,deviation_create,backstep); //--- comprueba el resultado if(m_handle==INVALID_HANDLE) return(false); //--- indicador creado con éxito if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- error de inicialización IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
bool CiZigZag::Initialize(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_init,const int backstep) { if(CreateBuffers(symbol,period,3)) { //--- renderización de la línea de estado m_name ="ZigZag"; m_status="("+symbol+","+PeriodDescription()+","+ IntegerToString(depth)+","+IntegerToString(deviation_init)+","+ IntegerToString(backstep)+") H="+IntegerToString(m_handle); //--- guardar configuración m_depth=depth; m_deviation=deviation_init; m_backstep=backstep; //--- crear buffers ((CIndicatorBuffer*)At(0)).Name("ZIGZAG"); ((CIndicatorBuffer*)At(1)).Name("HIGH"); ((CIndicatorBuffer*)At(2)).Name("LOW"); //--- ok return(true); } //--- error return(false); }
Ayúdame a entender cómo se establece aquí la dirección de indexación de la matriz del búfer del indicador, es decir, lo mismo que ArraySetAsSeries. La dirección por defecto es de presente a pasado, pero necesito que sea de pasado a presente. Desde ayer estoy luchando con esta pregunta ¡Ayuda!
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Ampliación de la librería estándar de MQL5 y la reutilización del código:
La librería estándar de MQL5 le facilita la vida como desarrollador. No obstante, no abarca todas las necesidades de todos los desarrolladores del mundo, con lo cual querrá tener a su disposición más material personalizado para dar un paso más y ampliarla. En este artículo, se describe la integración del indicador técnico Zig-Zag de MetaQuotes en la librería estándar. Para conseguir nuestro objetivo, nos hemos basado en la filosofía de diseño de MetaQuotes.
En pocas palabras, la interfaz de programación de aplicaciones (API por sus siglas en inglés) está diseñada para proporcionarle fiabilidad, flexibilidad y facilidad de mantenimiento, así como la ventaja de reutilizar el código. Esto es lo que dice la teoría, pero más allá de todo esto, si planea seguir progresando en MQL5 y desarrollar cosas más sofisticadas, como los Asesores Expertos multidivisa, tendrá primero que dominar la librería estándar para garantizar el éxito de sus aplicaciones.
Autor: Jordi Bassaganas