Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 714
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Con el uso de OnTradeTransaction, el tiempo de optimización ha cambiado extrañamente. Un sistema en 15M, muy simple, historia anual, una carrera ocurre en 0,3 - 0,4 segundos.
Tras el inicio de la optimización, las primeras 200-300 carreras van a menos de un segundo, las siguientes se ralentizan hasta 15-20 segundos (¡50 veces!);
No hay sobrecalentamiento del procesador ni trolling, más de la mitad de la memoria está libre (de 16GB).
Antes de utilizar el manejador OnTradeTransaction no había nada parecido - incluso los Asesores Expertos más complejos en marcos temporales pequeños se optimizaban con aproximadamente la misma velocidad.
¿Afecta tanto a la velocidad HistoryDealSelect? ¿Cómo podemos eliminar los retrasos?
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
if( trans.type != TRADE_TRANSACTION_DEAL_ADD) return;
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
long deal_type =0;
double deal_volume =0;
long deal_magic =0;
if(HistoryDealSelect(trans.deal))
{
deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
}
else
return;
if (deal_type == DEAL_TYPE_BUY && deal_magic == MagicNumber) current_position += deal_volume;
if (deal_type == DEAL_TYPE_SELL && deal_magic == MagicNumber) current_position -= deal_volume;
}
¡Hola!
¿Quién sabe - cómo mostrar las barras a la derecha de la barra cero en el indicador y cuántas como máximo? (previsión de precios a realizar)
¿Es HistoryDealSelect lo que afecta negativamente a la velocidad? ¿Cómo se puede eliminar la ralentización?
Los desarrolladores recomiendan minimizar las llamadas a las funciones del Historial (costosas) - a través del almacenamiento en caché del historial.
He publicado una solución que funciona en kodobase (MT4Orders), pero probablemente no le convenga.
No he visto ningún lag después de usar la caché.
Sin embargo, su OnTradeTransaction no debería ralentizarse, aunque no esté escrito de forma óptima.
¡Hola!
¿Quién sabe - cómo mostrar las barras a la derecha de la barra cero en el indicador y cuántas como máximo? (previsión de precios a realizar)
Añade PeriodSeconds() a la hora de apertura de la última barra y dibuja allí una vela con objetos gráficos. Como mucho será visible a la derecha. Pero no he comprobado cómo se mostrará si hay una salida. Probablemente hay que tener en cuenta.
Añade PeriodSeconds() a la hora de apertura de la última barra y dibuja la vela allí. Como mucho, lo verás a la derecha. Pero no he comprobado su aspecto. Probablemente, hay que tenerlo en cuenta.
En el gráfico dibuja una continuación, pero lamentablemente no en la ventana del indicador.
Tal vez me equivoque, por supuesto...
¿Qué opinas? ¿Puedo continuar la línea del indicador más allá de la barra cero hacia la derecha?
¿Quién sabe si la línea del indicador puede extenderse más allá de la barra cero hacia la derecha?
Puedes hacerlo. Se puede desplazar, pero probablemente el cálculo no se hará con valores no existentes y la hora no se utilizará en la visualización del indicador. Por eso hablaba de la visualización de barras mediante elementos gráficos. La función ObjectCreate() contiene tanto el número de ventana (subventana) como la hora. Por lo tanto, no debería haber problemas a la hora de crear elementos gráficos.
En la ventana del gráfico, utilizando las marcas de tiempo, puede referirse a las futuras barras previstas. Ha funcionado.
Sin embargo, no puedo hacer lo mismo en la ventana del indicador. Es decir, no puedo escribir valores en el buffer del indicador con el índice -1, -2, etc.
La cuestión es la siguiente.
En principio, está claro. La solución es crear un indicador mediante objetos gráficos.
En la ventana del gráfico, utilizando las marcas de tiempo, puede referirse a las futuras barras previstas. Ha funcionado.
Sin embargo, no puedo hacer lo mismo en la ventana del indicador. Es decir, no puedo escribir valores en el buffer del indicador con el índice -1, -2, etc.
La cuestión es la siguiente.
En principio, está claro. La solución es crear el indicador mediante objetos gráficos.