Características del lenguaje mql5, sutilezas y técnicas - página 16

 
Andrey Dik:
¿Puede hacer que el comando"Abrir gráfico" en la pestaña "Backtest" añada automáticamente todos los indicadores que se utilizaron en el EA con los parámetros adecuados al gráfico abierto después de la prueba?

Todavía no.

Por ahora puede guardar la plantilla de pruebas visuales y aplicarla en el terminal del cliente

 
Slawa:

Todavía no.

Por ahora puede guardar una plantilla de pruebas visuales y aplicarla en el terminal del cliente

Y si haces lo siguiente en el EA en OnDeinit

ChartSaveTemplate ()


con el nombre tester.tpl y después de abrir el gráfico con el comando"Abrir gráfico", ¿obtendrá lo que necesita?

 
Andrey Dik:

Y si en el Asesor Experto en OnDeinit hacer

ChartSaveTemplate ()


con el nombre tester.tpl, obtendrá lo que necesita después de abrir el gráfico con el comando"Open Chart"?

No. ChartSaveTemplate guardará la plantilla en la carpeta local Files del agente de pruebas

Me refería a guardar manualmente la plantilla desde el renderizador a través del menú principal.

Tester.tpl sólo funciona en un sentido: desde el terminal del cliente hasta el visualizador

 
Slawa:

No. ChartSaveTemplate guardará la plantilla en la carpeta local Files del agente de pruebas

Me refiero a guardar manualmente la plantilla desde el visualizador a través del menú principal.

Tester.tpl sólo funciona en un sentido: desde el terminal del cliente hasta el visualizador

No, es demasiado lento, es demasiado trabajo, y a menudo es demasiado caro hacer todas las pruebas visuales sólo para salvar la plantilla, especialmente cuando tienes que hacerlo a menudo...

Significa que debería ser posible abrir un gráfico después de probar con indicadores.

SZY. En el probador no funciona:

//——————————————————————————————————————————————————————————————————————————————
void OnDeinit (const int reason)
{
  if(ChartSaveTemplate(0, "testersdfsdfsdfsdf"))
    Print (__FUNCTION__ + ": Шаблон сохранён");
  else
    Print (__FUNCTION__ + ": Шаблон НЕ сохранён");
    
  EventKillTimer ();
}
//——————————————————————————————————————————————————————————————————————————————

//——————————————————————————————————————————————————————————————————————————————
double OnTester ()
{
  if(ChartSaveTemplate(0, "testersdfsdfsdfsdf"))
    Print (__FUNCTION__ + ": Шаблон сохранён");
  else
    Print (__FUNCTION__ + ": Шаблон НЕ сохранён");
  return (-DBL_MAX);
}
//——————————————————————————————————————————————————————————————————————————————

resultado:

2017.03.07 12:22:15.422 Core 1 2017.03.06 23:58:59 OnTester: Plantilla NO guardada
2017.03.07 12:22:15.422 Núcleo 1 saldo final 1129,18 USD
2017.03.07 12:22:15.422 Core 1 OnTester resultado -1.797693134862316e+308
2017.03.07 12:22:15.422 Core 1 2017.03.06 23:58:59 OnDeinit: Plantilla NO guardada

 
void OnStart()
  {
   int indic = iCustom(Symbol(), Period(), "Examples\\ATR", 7, PRICE_CLOSE, clrGreen);
   ChartIndicatorAdd(0, 1, indic);  
   Sleep(10000);
  }

El color del indicador no puede ajustarse de esta manera.

Entonces, ¿por qué algunos dicen "no es un error, es una característica"?

Sin embargo, la respuesta oficial me ha satisfecho por completo:

Vamos a pensar en cómo cambiar el color y el estilo del indicador desde el programa MQL5.

Mientras tanto, utilice las variables de entrada del tipo de color para establecer el color del indicador

 
Roffild:
void OnStart()
  {
   int indic = iCustom(Symbol(), Period(), "Examples\\ATR", 7, PRICE_CLOSE, clrGreen);
   ChartIndicatorAdd(0, 1, indic);  
   Sleep(10000);
  }

El color del indicador no puede ajustarse de esta manera.

Entonces, ¿por qué algunos dicen "no es un error, es una característica"?

Sin embargo, la respuesta oficial me parece totalmente satisfactoria:

Porque no se pueden establecer las propiedades de visualización (parte de dibujo) a través de la manija del indicador (parte de cálculo). Un error es cuando algo está escrito de una manera y funciona de otra.

En este caso es necesario un enfoque diferente. Acceso al indicador por nombre corto, como en el grupo de funciones ChartIndicatorXXX. Algo como ChartIndicatorSetInteger(chart_id,sub_window,indicator_name,PROP_COLOR,mod,value)

Ya hemos pensado en ello, pero aún no nos hemos puesto a ello.

 

¿Por qué hay que fijar algo a través de una manilla? El color se establece en el propio indicador a través de la propiedad PLOT_LINE_COLOR.

El indicador_colorN sólo establece el color original que se cambia a través de PLOT_LINE_COLOR.

indicator_colorN no es diferente de la entrada cuando se llama a un indicador y luego se establece a través de PLOT_LINE_COLOR.

No debería permitirse cambiar dichas propiedades a través de la manija en absoluto.

Y es el momento de permitir la configuración de indicator_buffers dinámicamente.

 
Roffild:

¿Por qué hay que fijar algo a través de una manilla? El color se establece en el propio indicador a través de la propiedad PLOT_LINE_COLOR.

El indicador_colorN sólo establece el color original que se cambia a través de PLOT_LINE_COLOR.

indicator_colorN no es diferente de la entrada cuando se llama a un indicador y luego se establece a través de PLOT_LINE_COLOR.

No debería permitirse cambiar dichas propiedades a través de la manija en absoluto.

Y es el momento de permitir la configuración de indicator_buffers dinámicamente.

No menciones el mango. Me he dicho a mí mismo que el tirador no se puede utilizar para establecer las propiedades de dibujo. Y le expliqué por qué.

No olvide que además de los indicadores personalizados también hay indicadores incorporados, que también deben cambiar de color después de añadirlos al gráfico.

 

Sólo sugiero ampliar las funciones de la llamada del indicador:

iCustom(... inputs, PRICE_CLOSE,
         [color color1, int width1, int style1]... );

iAlligator(... params, PRICE_CLOSE,
         [color color1, int width1, int style1]... );
No es necesario añadir nada más.
 
Roffild:

Sólo sugiero ampliar las funciones de la llamada del indicador:

Err, ¿por qué cuando no se puede ver de todos modos?
Razón de la queja: