¿Cómo puedo cambiar el color del programa indicador estándar?
Nunca he hecho esto antes, pero aquí hay una idea. Debe abrir el código del indicador estándar y encontrar allí las líneas con indicator_color*
Algo así como.
//--- японские свечи будут рисоваться цветом clrDodgerBlue #property indicator_color1 clrDodgerBlue
A continuación, introducirá el color deseado. Ver también Referencia MQL5 / Indicadores Personalizados / Relación entre Propiedades y Funciones de los Indicadores y Referencia MQL5 / Constantes, Enumeraciones y Estructuras Estándar / Constantes de los Indicadores / Estilos de Dibujo
Gracias, por supuesto.
Pero resulta que cada vez que tengo que corregir el código...
Mikhail
Gracias, por supuesto.
Pero, ¿significa eso que hay que cambiar el código cada vez?
Gracias, por supuesto.
¿Pero resulta que hay que corregir el código cada vez?
Hay algo en tu lógica. Su pregunta original era:
¿Cómo cambiar el color del indicador estándar mediante programación?
Hay algo en tu lógica. Usted preguntó originalmente:
¡Querida abolk!
Obviamente, por su código.
Mikhail
Haz tuyo el indicador "interno", - e introduce en él tus opciones. Por ejemplo (pura idea): poner los colores en los parámetros de entrada, y luego procesarlos en Oninit() mediante la función PlotIndexSetInteger(N-1, PLOT_LINE_COLOR, nColor). Los ejemplos de la Referencia pueden ayudar. Entonces no se puede editar el código en sí, sino establecer el color deseado a través de las propiedades del indicador al iniciarlo o modificarlo.
Muchas gracias.
Lástima que los desarrolladores no hayan pensado en eso.
Este código debería haber funcionado, PERO.... por desgracia...
params[0].type = TYPE_INT; params[0].integer_value = 10; params[1].type = TYPE_INT; params[1].integer_value = 0; params[2].type = TYPE_INT; params[2].integer_value = MODE_SMA; params[3].type = TYPE_INT; params[3].integer_value = PRICE_MEDIAN; params[4].type = TYPE_COLOR; params[4].double_value = clrBlue; ma_handle = IndicatorCreate( NULL, PERIOD_CURRENT, IND_MA, 5, params ); if ( ma_handle != INVALID_HANDLE ) { ChartIndicatorAdd( 0, 0, ma_handle ); }
Este código debería haber funcionado, PERO.... por desgracia...
No funcionó con la función IndicatorCreate() - resultó ser más fácil crear sus indicadores personalizados. No obstante, como sólo has citado una parte del código, una pregunta: ¿has puesto a cero la variable params antes de utilizarla? Por ejemplo, así:
MqlParam params; ZeroMemory(params);
¿Y qué código de error reclama su entrada?
Lo hiciste:
ArrayResize(params,5);?
Además, el indicador IND_MA(iMA) no tiene el parámetro "Color", y tú lo tienes especificado. Vea un ejemplo de uso de iMA aquí: MQL5 Reference / Access to timeseries and indicators / IndicatorCreate.
Este código debería haber funcionado
¿Por qué? Explica primero por qué el color es un número real.
params[4].type = TYPE_COLOR; params[4].double_value = clrBlue;
¡Buenas tardes, stringo y Yedelkin!
Seguramente no has leído bien mi mensaje, que decía
"Lástima que los desarrolladores no hayan pensado en eso. "
Ahora, permítanme explicar por qué escribí el código anterior.
Desde la configuración de la Media Móvil, se puede ver claramente que el indicador tiene 7 parámetros (5 parámetros principales + 2 líneas).
Esto es lo que dice la pestaña "Parámetros".
Si puede cambiar TODOS los parámetros "manualmente", significa que debe haber
lo que han hecho los desarrolladores: ¡cambiar TODOS los parámetros de forma programada!
En la función IndicatorCreate, pero no hasta el final (o es un BAG).
La estructura MqlParam permite introducir un color - TYPE_COLOR(ENUM_DATATYPE);
De la referencia MQL5:
El tipo de color está diseñado para almacenar información de color y ocupa 4 bytes en la memoria. El primer byte se ignora, los 3 bytes restantes contienen los componentes RGB.
......
La representación de números enteros se escribe como número hexadecimal o decimal. Unnúmero hexadecimal es 0x00BBGGRR
//--- representación de enteros
0xFFFFFFFF //blanco
16777215 //blanco
0x008000 //verde
32768 //verde
Fin de la cita.
struct MqlParam
{
ENUM_DATATYPE type; // tipo de parámetro de entrada, valor de enumeración ENUM_DATYPE
long integer_value; // campo para almacenar un valor entero
double double_value; // campo para almacenar el valor de double o float
string string_value; // campo para almacenar el valor de tipo string
};
(Primero probé con el largo no funcionó, y luego probé con el doble - tampoco funcionó, lo que queda en el código).
Debería ser así:
MqlParam params[5];
.........
params[4].type = TYPE_COLOR;
params[4].integer_value = clrBlue; // - color azul 0x00FF0000 (16711680)
stringo, he respondido a tu pregunta "¿por qué no?
Una vez más, es una pena que los desarrolladores no hayan hecho un cambio de color.
Respetuosamente, Mikhail
¡Buenas tardes, stringo y Yedelkin!
Seguramente no has leído bien mi mensaje, que decía
"Lástima que los desarrolladores no hayan pensado en eso. "
Mikalas, aquí ya hay tantos expertos sacando conclusiones por los demás que da miedo. No aumenten su número, por favor.
A continuación, te ayudé haciendo preguntas concretas y no emocionales. En lugar de contestarles me dices "cómo has llegado a este punto de tu vida" ¿Qué quieres? -¿Convencer a alguien de que hay errores que has detectado, o mejorar "programáticamente" tu código? Si ves algún "bug" - ponte en contacto con el Service Desk con una descripción completa de la situación. Si quieres trabajar de forma "programada", profundiza en la creación y el funcionamiento de los indicadores.
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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
¡Buenas tardes!
¿Cómo se cambia el color del indicador estándar?
Gracias, Mikhail