Discusión sobre el artículo "Sincronización de varios gráficos del mismo símbolo en timeframes diferentes"
Estoy buscando sincronizar los niveles de soporte y resistencia en diferentes marcos de tiempo, es decir, soporte añadido en un marco de tiempo aparece en todos los gráficos de otros marcos de tiempo
Hola,
¿Cómo ha añadido los niveles de resistencia en el gráfico? ¿Como una línea horizontal o un rectángulo?
¿Hay alguna forma de clonar sólo determinados tipos de objetos e ignorar el resto? Además, ¿cómo puedo clonar también las propiedades de visibilidad de los objetos, ya que parece que la configuración de visibilidad de los objetos clonados no se copia y debe configurarse manualmente de nuevo en los otros gráficos?
Muchas gracias.
¿Hay alguna forma de clonar sólo determinados tipos de objetos e ignorar el resto? Además, ¿cómo puedo clonar también las propiedades de visibilidad de los objetos, ya que parece que la configuración de visibilidad de los objetos clonados no se copia y debe establecerse manualmente de nuevo en los otros gráficos?
Muchas gracias
Hola, yousurfer.
Si quieres seleccionar objetos por alguna propiedad puedes añadirla en esta función
string CCopyObject::CreateMessage(long chart) { string result = NULL; int total = ObjectsTotal(chart, 0); for(int i=0;i<total;i++) { string name = ObjectName(chart, i, 0); // // if(!( comprueba la propiedad del objeto a copiar) ) // si no quieres copiar este objeto // continuar;// pasar al siguiente objeto // switch((ENUM_OBJECT)ObjectGetInteger(chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_HLINE)+"|"+HLineToString(chart, name)+"}"; break; case OBJ_VLINE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_VLINE)+"|"+VLineToString(chart, name)+"}"; break; case OBJ_TREND: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_TREND)+"|"+TrendToString(chart, name)+"}"; break; case OBJ_RECTANGLE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_RECTANGLE)+"|"+RectangleToString(chart, name)+"}"; break; } } return result; }
Saludos,
Dmitriy.
Con 8 gráficos abiertos de un instrumento con diferentes TF, el indicador se ralentiza notablemente y se cuelga MT, por ejemplo, un cuadrado recién dibujado llega a otros gráficos con un retraso de 5-10 segundos. ¿Cuál puede ser la razón?
Gracias.
¿Podrías hacer uno para MT4? Preferiblemente con un filtro sobre objetos (clonar sólo horizontal o tendencia...) Hay uno similar para MT4, pero el código está cerrado, no se puede añadir el filtro.
Para usarlo en MT4, simplemente cambia la extensión del archivo del indicador de mq5 a mq4 y recompila el indicador.
Para añadir el filtro de objetos, necesitas añadir los parámetros
sinput bool CloneHLine = true; sinput bool CloneVLine = true; sinput bool CloneTrend = true; sinput bool CloneRectangle = true;
y corregir OnChartEvent con la adición de la función CheckToClone.
//+------------------------------------------------------------------+ //| Función ChartEvent| //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- string message1=NULL; string message2=NULL; int total=0; //--- switch(id) { case CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_OBJECT_DRAG: if(!CheckToClone(sparam)) return; message1=CloneObjects.CreateMessage(l_Chart,sparam,0); message2=CloneObjects.CreateMessage(l_Chart,sparam,1); total=ArraySize(ar_Charts); for(int i=0;i<total;i++) { EventChartCustom(ar_Charts[i],(ushort)id,0,0,message1); EventChartCustom(ar_Charts[i],(ushort)id,0,0,message2); } break; //--- case CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; total=ArraySize(ar_Charts); for(int i=0;i<total;i++) EventChartCustom(ar_Charts[i],(ushort)id,0,0,sparam); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DRAG: CloneObjects.DrawObjects(l_Chart,sparam); ChartRedraw(l_Chart); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; ObjectDelete(l_Chart,sparam); ChartRedraw(l_Chart); break; } } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ bool CheckToClone(string name) { bool result = false; if(l_Chart>=0 && ObjectFind(l_Chart,name)==0) { switch((ENUM_OBJECT)ObjectGetInteger(l_Chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result=CloneHLine; break; case OBJ_VLINE: result=CloneVLine; break; case OBJ_TREND: result=CloneTrend; break; case OBJ_RECTANGLE: result=CloneRectangle; break; } } return result; }
Con 8 gráficos abiertos de un instrumento con diferentes TF, el indicador se ralentiza notablemente y se cuelga MT, por ejemplo, un cuadrado recién dibujado llega a otros gráficos con un retraso de 5-10 segundos. ¿Cuál puede ser la razón?
Gracias.
Buenas tardes.
La cuestión es que los indicadores trabajan en un hilo y un gran número de cualquier indicador en el terminal puede ralentizar mucho su trabajo. Además, el trabajo con elementos gráficos es bastante laborioso para el terminal. Para su uso en un gran número de gráficos, yo recomendaría reformatear el programa en un Asesor Experto sin ninguna pérdida de funcionalidad. Pero sólo funcionará si no utiliza Asesores Expertos al mismo tiempo que el análisis. Porque el terminal tiene una restricción de no más de un Asesor Experto por gráfico.
Para usarlo en MT4, simplemente cambie la extensión del archivo del indicador de mq5 a mq4 y recompile el indicador.
Gracias por su rápida respuesta y ayuda. ChartIndicatorGet, CloneAllObjects y otras funciones no están soportadas en mq4. En general, 9 errores durante la compilación. Soy cero en programación. Por favor, ayúdeme.
- 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 Sincronización de varios gráficos del mismo símbolo en timeframes diferentes:
Para tomar decisiones sobre la realización de las transacciones, a menudo es necesario analizar simultáneamente los gráficos en el proceso del trading. Además, los gráficos disponen de los objetos del análisis gráfico. Es bastante incómodo colocar los mismos objetos en todos los gráficos. En este artículo, yo propongo automatizar la clonación de los objetos en los gráficos.
Autor: Dmitriy Gizlyk