( Una vez que pregunté - pero todavía necesito ayuda )
Llamo a mis funciones de cálculo por el OnTick() o Start(), y dependen de los Ticks del símbolo del gráfico. Y he empezado a investigar cómo puedo hacer las actualizaciones de cálculo de mi EA no depende de los Ticks y los Símbolos ( / Chart - Ticks, Symbols ). Sólo estoy tratando de hacer 'Todos los cálculos de las órdenes y la información de la cuenta' se actualizala sincronización ( / tiempo real) con 'Terminal> Comercio'.
Buen comentario, el cual me ayudó, muchas gracias. Ahora, estoy usando OnTick() y OnTimer(), ambas funciones funcionan bien para mí. ( Es la primera vez que uso OnTimer() para EA's )
---
También me gustaría probar Ticks. Sólo necesito los Ticks de los símbolos ( Pares ) en 'Terminal > Trade' y el símbolo del gráfico actual. ¿Esta SymbolName() podría ayudarme? Por favor, ayúdeme o aconséjeme, ¿cómo puedo hacerlo?
Increíble ejemplo y comentario realmente útil para mí, muchas gracias hombre.
¿Es posible que los Ticks provengan de los Pares / Símbolos comerciales, por favor? Porque casi todo el tiempo mi Market Watch muestra todos los símbolos - especialmente busco nuevos y buenos Pares para las Operaciones y esa es la única razón por la que estoy investigando algunas formas de cómo puedo obtener ' Terminal > Comercio ' símbolos / pares, sólo la apertura de las operaciones de garrapatas.
No, pero puedes actualizar el precio en la función OnTimer() con un valor bajo, por ejemplo, 250 milisegundos será igual a 4 ticks por segundo, así que ¿por qué lo necesitas?
Marco vd Heijden: no, pero puedes actualizar el precio en la función OnTimer() con un valor bajo, por ejemplo, 250 milisegundos será igual a 4 ticks por segundo, así que ¿por qué lo necesitas?
Gracias por su comentario.
( subtema -#Cálculos de órdenes y actualizaciones de la información de la cuenta - Abierto) Como he mencionado que uso los cálculos de beneficios de las órdenes y que no se está ejecutando la sincronización con ' Terminal > Comercio ', que es la única razón. Por lo tanto, a veces la volatilidad muy baja, Ticks viene menos cantidades, y creo que las funciones podrían estar ejecutando 4 veces en un segundo, por lo que correr para nada ( / vano ).
Si no puedo encontrar la manera que me puede dar ' Terminal > Comercio ' garrapatas para órdenes cálculos de ganancias y cuenta info ( / actualizaciones ) sincronización. Utilizaré sus métodos muy útiles - que me mostró que las formas en sus últimos comentarios, muchas gracias. ( Ya he probado y esa manera me funciona )
structMqlTick { datetime time; // Time of the last prices update double bid; // Current Bid price double ask; // Current Ask price double last; // Price of the last deal (Last) ulong volume; // Volume for the current Last price long time_msc; // Time of a price last update in milliseconds uint flags // Tick flags };
La estructura para devolver los precios actuales (MqlTick)
Esta es una estructura para almacenar los últimos precios del símbolo. Está diseñada para obtener rápidamente la información más solicitada sobre los precios actuales.
La variable de tipo MqlTick permite obtener los valores de Ask, Bid, Last y Volume en una sola llamada a la función SymbolInfoTick().
Los parámetros de cada tick se rellenan independientemente de si hay cambios respecto al tick anterior. Así, es posible averiguar un precio correcto para cualquier momento del pasado sin necesidad de buscar valores anteriores en el historial de ticks. Por ejemplo, aunque sólo cambie el precio de la oferta durante la llegada de un tic, la estructura sigue conteniendo también otros parámetros, como el precio de la demanda anterior, el volumen, etc.
Puede analizar las banderas de los ticks para saber qué datos se han modificado exactamente:
TICK_FLAG_BID - el tick ha cambiado un precio de Oferta
TICK_FLAG_ASK - un tick ha cambiado un precio Ask
TICK_FLAG_LAST - un tick ha cambiado el precio de la última operación
TICK_FLAG_VOLUME - un tick ha cambiado un volumen
TICK_FLAG_BUY - un tick es el resultado de una operación de compra
TICK_FLAG_SELL - un tick es el resultado de una operación de venta
Así que puedes usarlo para comprobar si hay un nuevo tick para un símbolo específico, pero esto será en realidad un paso más que leer directamente los niveles de precios, así que una vez más, ¿por qué lo necesitas?
Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure - Reference on algorithmic/automated trading language for MetaTrader 5
Bueno, si su realmente en él se puede utilizar: ... Así que u puede utilizarlo para comprobar si había una nueva garrapata para un símbolo específico, pero esto será en realidad un paso más entonces directamente la lectura de los niveles de precios directamente así que una vez más, ¿por qué lo necesita.
Gracias por su comentario informativo, muy apreciado.
---
Si estoy en lo cierto esta parte de la frase es una pregunta.
... por qué lo necesitaría. Sólo hay una razón, estoy tratando de evitar que los bucles de la función irrelevante / se ejecuta.
( Me gustaría mencionar que hoy mientras estaba probando el cálculo de las órdenes de ganancias de mi EA, el cálculo se actualiza continuamente ( / bucles para nada ) Lo estaba probando en el gráfico EURUSD, y mientras estaba probando, vi un volumen muy bajo casi 20 ( no más ) por minuto. Y mientras estaba probando, una vez más estaba seguro, pude encontrar una manera que me dará sólo 'Terminal > Trade' Ticks. Me gustaría decir una vez más, no hay ninguna razón. Sólo sé que las formas que me pueden dar ticks OnTick() sólo ticks podrían venir de Chart Symbol. Y otros OnTimer() podría darme 4 ticks por segundo... y así sucesivamente, lo cual aprendí de sus muy útiles y grandes comentarios, una vez más muchas gracias por eso. )
Y tengo que describir mi situación.
Mi Cálculo de Ganancias de Órdenes podría ser sincronizado con el panel de Comercio de la Terminal mientras mi EA está corriendo en el símbolo del gráfico que uno ( por ejemplo: EURUSD ) si el símbolo del gráfico es igual al Símbolo de la Orden, pero si abro una nueva posición para GBPUSD y luego la sincronización se interrumpirá con el panel de Comercio de la Terminal. Y si tengo órdenes para EURUSD, pero trato de buscar nuevos pares buenos para el comercio en otro símbolo gráfico ( por ejemplo: GBPUSD, NZDUSD y así sucesivamente. ) Órdenes de cálculo de beneficios no se sincroniza con el panel de 'Terminal > Comercio'. ( No olvide que ya conozco OnTimer(), que me ayudó como puedo usarlo para 4 ticks por segundo. )
Toda esa preocupación viene de aquí.
Hoy en día, abro posiciones para plazos cortos, si abro posiciones para plazos largos, no voy a dar atención a esa sincronización con el Comercio de la Terminal.
Bueno, si realmente quieres esperar por cada tick tendrás que escribir un EA separado para cada símbolo y usar la función OnTick().
Pero te puedo decir que también programo microcontroladores y están en un bucle while interminable (para siempre) hasta que se produce un fallo de alimentación, o una interrupción.
Para comprobar si una condición es verdadera o falsa, utiliza el tipo de datos booleano más pequeño y su procesador ya hace eso millones si no miles de millones de veces por segundo con todos los procesos que se ejecutan en segundo plano y los gráficos, etc.
Es cuando empiezas a hacer cálculos pesados que implican tipos de datos más grandes, que esto se convierte en un problema.
#Cálculos de pedidos y actualizaciones de la información de la cuenta- Abierto
( Una vez que pregunté - pero todavía necesito ayuda )
Llamo a mis funciones de cálculo por el OnTick() o Start(), y dependen de los Ticks del símbolo del gráfico.
Y he empezado a investigar cómo puedo hacer las actualizaciones de cálculo de mi EA no depende de los Ticks y los Símbolos ( / Chart - Ticks, Symbols ).
Sólo estoy tratando de hacer 'Todos los cálculos de las órdenes y la información de la cuenta' se actualizala sincronización ( / tiempo real) con 'Terminal> Comercio'.
Por favor, ayúdeme, gracias.
Gracias de antemano.
OnTimer()
https://www.mql5.com/en/docs/basis/function/events#ontimer
Y SymbolName(x,1);Y SymbolName(x,1);
Buen comentario, el cual me ayudó, muchas gracias.
Ahora, estoy usando OnTick() y OnTimer(), ambas funciones funcionan bien para mí. ( Es la primera vez que uso OnTimer() para EA's )
---
También me gustaría probar Ticks. Sólo necesito los Ticks de los símbolos ( Pares ) en 'Terminal > Trade' y el símbolo del gráfico actual. ¿Esta SymbolName() podría ayudarme?
Por favor, ayúdeme o aconséjeme, ¿cómo puedo hacerlo?
Todo lo mejor.
{
Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
}
{
Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
}
Increíble ejemplo y comentario realmente útil para mí, muchas gracias hombre.
¿Es posible que los Ticks provengan de los Pares / Símbolos comerciales, por favor?
Porque casi todo el tiempo mi Market Watch muestra todos los símbolos - especialmente busco nuevos y buenos Pares para las Operaciones y esa es la única razón por la que estoy investigando algunas formas de cómo puedo obtener ' Terminal > Comercio ' símbolos / pares, sólo la apertura de las operaciones de garrapatas.
Muchas gracias de antemano.
no, pero puedes actualizar el precio en la función OnTimer() con un valor bajo, por ejemplo, 250 milisegundos será igual a 4 ticks por segundo, así que ¿por qué lo necesitas?
Gracias por su comentario.
( subtema -#Cálculos de órdenes y actualizaciones de la información de la cuenta - Abierto) Como he mencionado que uso los cálculos de beneficios de las órdenes y que no se está ejecutando la sincronización con ' Terminal > Comercio ', que es la única razón.
Por lo tanto, a veces la volatilidad muy baja, Ticks viene menos cantidades, y creo que las funciones podrían estar ejecutando 4 veces en un segundo, por lo que correr para nada ( / vano ).
Si no puedo encontrar la manera que me puede dar ' Terminal > Comercio ' garrapatas para órdenes cálculos de ganancias y cuenta info ( / actualizaciones ) sincronización. Utilizaré sus métodos muy útiles - que me mostró que las formas en sus últimos comentarios, muchas gracias. ( Ya he probado y esa manera me funciona )
Gracias de antemano.
Bueno, si su realmente en él se puede utilizar:
{
datetime time; // Time of the last prices update
double bid; // Current Bid price
double ask; // Current Ask price
double last; // Price of the last deal (Last)
ulong volume; // Volume for the current Last price
long time_msc; // Time of a price last update in milliseconds
uint flags // Tick flags
};
La estructura para devolver los precios actuales (MqlTick)
Esta es una estructura para almacenar los últimos precios del símbolo. Está diseñada para obtener rápidamente la información más solicitada sobre los precios actuales.
La variable de tipo MqlTick permite obtener los valores de Ask, Bid, Last y Volume en una sola llamada a la función SymbolInfoTick().
Los parámetros de cada tick se rellenan independientemente de si hay cambios respecto al tick anterior. Así, es posible averiguar un precio correcto para cualquier momento del pasado sin necesidad de buscar valores anteriores en el historial de ticks. Por ejemplo, aunque sólo cambie el precio de la oferta durante la llegada de un tic, la estructura sigue conteniendo también otros parámetros, como el precio de la demanda anterior, el volumen, etc.
Puede analizar las banderas de los ticks para saber qué datos se han modificado exactamente:
Ejemplo:
{
MqlTick last_tick;
//---
if(SymbolInfoTick(Symbol(),last_tick))
{
Print(last_tick.time,": Bid = ",last_tick.bid,
" Ask = ",last_tick.ask," Volume = ",last_tick.volume);
}
else Print("SymbolInfoTick() failed, error = ",GetLastError());
//---
}
Véase también
https://www.mql5.com/en/docs/constants/structures/mqltick
Estructuras y Clases, CopyTicks(), SymbolInfoTick()
Así que puedes usarlo para comprobar si hay un nuevo tick para un símbolo específico, pero esto será en realidad un paso más que leer directamente los niveles de precios, así que una vez más, ¿por qué lo necesitas?
Marco vd Heijden:
Bueno, si su realmente en él se puede utilizar: ...
Así que u puede utilizarlo para comprobar si había una nueva garrapata para un símbolo específico, pero esto será en realidad un paso más entonces directamente la lectura de los niveles de precios directamente así que una vez más, ¿por qué lo necesita.
Gracias por su comentario informativo, muy apreciado.
---
Si estoy en lo cierto esta parte de la frase es una pregunta.
Y tengo que describir mi situación.
Toda esa preocupación viene de aquí.
---
Espero que me entiendas ahora más claramente.
Todo lo mejor.
Bueno, si realmente quieres esperar por cada tick tendrás que escribir un EA separado para cada símbolo y usar la función OnTick().
Pero te puedo decir que también programo microcontroladores y están en un bucle while interminable (para siempre) hasta que se produce un fallo de alimentación, o una interrupción.
Para comprobar si una condición es verdadera o falsa, utiliza el tipo de datos booleano más pequeño y su procesador ya hace eso millones si no miles de millones de veces por segundo con todos los procesos que se ejecutan en segundo plano y los gráficos, etc.
Es cuando empiezas a hacer cálculos pesados que implican tipos de datos más grandes, que esto se convierte en un problema.