jaffer wilson: ¿Funcionará la biblioteca en el Probador de Estrategias? Quiero probar la prueba manual en el Probador de Estrategias.
Sí, funcionará. Pero hay que tener cuidado con un par de cosas, porque los eventos en el probador no funcionan correctamente y no sobrecargar el probador con cálculos de lienzo debido a la mayor densidad de tiempo.
jaffer wilson: ¿Funcionará la biblioteca en el Probador de Estrategias? Quiero probar manualmente en el Probador de Estrategias.
#property indicator_chart_window#include <Canvas\iCanvas.mqh> //https://www.mql5.com/es/code/22164//+------------------------------------------------------------------+int max=0,min=0;
double Max=0,Min=0;
intOnInit() {
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+intOnCalculate (constint rates_total,
constint prev_calculated,
constdatetime& time[],
constdouble& open[],
constdouble& high[],
constdouble& low[],
constdouble& close[],
constlong& tick_volume[],
constlong& volume[],
constint& spread[]) {
max= ArrayMaximum(high,rates_total-W.Left_bar,W.BarsInWind);
min= ArrayMinimum(low,rates_total-W.Left_bar,W.BarsInWind);
Max=high[max];
Min=low[min];
max=rates_total-1-max;
min=rates_total-1-min;
if (rates_total>0) Draw();
return(rates_total);
}
//+------------------------------------------------------------------+voidOnChartEvent(constint id, // identificador del eventoconstlong& lparam, // parámetro de evento de tipo longconstdouble& dparam, // parámetro de evento de tipo dobleconststring& sparam) { // parámetro de evento de tipo cadenaif (id==CHARTEVENT_MOUSE_MOVE) Draw();
}
//+------------------------------------------------------------------+void Draw () {
staticdouble pr=0;
staticuint clr=0;
staticuint lastCalc=0;
uint cur=GetTickCount();
if (cur-lastCalc<30) return;
lastCalc=cur; double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
if (Canvas.tester) ChartChanged(); // actualizar los parámetros del gráfico si está en modo testerif (pr<Ask) clr=0x800000FF; // rojoif (pr>Ask) clr=0x80FF0000; // azul
Canvas.Erase(clr);
Canvas.FillCircle((int)Canvas.X(double(max)),(int)Canvas.Y(Max),20,0xAA50FF50);
Canvas.FillCircle((int)Canvas.X(double(min)),(int)Canvas.Y(Min),20,0xAAFFFF50);
Canvas.CurentFont("Tahoma",50,50,0xFF80FF80,0.4);
Canvas.TextPosition(W.MouseX,W.MouseY);
Canvas.Comm("Ask = " + DoubleToString(Ask,_Digits));
Canvas.Comm("Bid = " + DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits));
Canvas.Comm("Spread = " + DoubleToString((Ask-Bid)/_Point,0));
Canvas.Update();
pr=Ask;
}
//+------------------------------------------------------------------+
Lo que está resaltado en amarillo es lo necesario para reducir la carga en el probador Lo que está resaltado en verde es lo necesario para renderizar las coordenadas correctamente. Trate de eliminar esta línea y ver qué pasa en el probador.
En este indicador el color de la pantalla cambia dependiendo de la dirección del cambio de precio, el precio mínimo y máximo en la pantalla se resalta y se muestra información de texto sobre la Oferta y la Demanda en la posición actual del puntero del ratón.
Pero, desafortunadamente, en el Probador el evento de movimiento del ratón se ejecuta sólo cuando se presiona el botón izquierdo del ratón. Esto se aplica no sólo a mi clase iCanvas, sino también a cualquier salida gráfica en el Probador. Sólo que tengo una manera más simple de implementarlo. E incluso el control GUI funciona bastante bien:
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
¿Funcionará la biblioteca en el Probador de Estrategias? Quiero probar la prueba manual en el Probador de Estrategias.
¿Funcionará la biblioteca en el Probador de Estrategias? Quiero probar manualmente en el Probador de Estrategias.
Lo que está resaltado en amarillo es lo necesario para reducir la carga en el probador
Lo que está resaltado en verde es lo necesario para renderizar las coordenadas correctamente. Trate de eliminar esta línea y ver qué pasa en el probador.
En este indicador el color de la pantalla cambia dependiendo de la dirección del cambio de precio, el precio mínimo y máximo en la pantalla se resalta y se muestra información de texto sobre la Oferta y la Demanda en la posición actual del puntero del ratón.
Pero, desafortunadamente, en el Probador el evento de movimiento del ratón se ejecuta sólo cuando se presiona el botón izquierdo del ratón.
Esto se aplica no sólo a mi clase iCanvas, sino también a cualquier salida gráfica en el Probador.
Sólo que tengo una manera más simple de implementarlo.
E incluso el control GUI funciona bastante bien:
Muchas gracias por la respuesta y el ejemplo.
Hola,
muy buen trabajo. Gracias.
¿Puedes comprobar el ejemplo de CanvasBar? No funciona en tester incluso con las modificaciones sugeridas.
Saludos, Mighty
Hola,
muy buen trabajo. Muchas gracias.
¿Puedes comprobar el ejemplo de CanvasBar? No funciona en tester incluso con las modificaciones sugeridas.
Saludos, Mighty
Intenta mover ChartChanged antes de CopyRates
Gracias por la rápida respuesta, pero sigue sin funcionar.
Esto se debe a que la llamada proviene de OnChartEvent, que no está funcionando correctamente en el probador.
Prueba con esto.
En el futuro, por favor, adjunta un código o enlace. Después de todo, no recuerdo el nombre de mi código, que escribí hace casi 2 años."En el futuro, por favor, adjunta un código o enlace. Después de todo, no recuerdo el nombre de mi código, que escribí hace casi 2 años."
Ok, lo haré. Ahora ya funciona (tuve que quitar las líneas GetTickCount para que se sincronizara). Gracias.