Chaqueta, no ensucies tu imagen aquí entre los "nubs y los de relaciones públicas" según tu clasificación. Ve a tu QQ.
P.D. Para los operadores existe la alfabetización, donde pueden reponer sus conocimientos sobre las realidades del mercado FOREX y sus diversas características desde sus bolsas habituales. ¡Amplía tus horizontes!
Как ущербный, могу позволить себе написать правду. И паук и qq - для новичка полное дерьмо. Когда человек, вне зависимости от опыта, приходит на рынок, он сталкивается со сложной задачей: найди то, не знаю что. Но чтобы был профит. И самое сложное определиться, ГДЕ именно копать и КАК копать. На форумах этой информации практически нет. А если и...
MetaQuotes, por supuesto, exageró (subestimó) el formato del historial almacenado (MqlRates). Esto es comprensible. Cuando se desarrolló el formato, los diferenciales fijos prevalecían en el mercado de divisas, mientras que los diferenciales de mercado (flotantes) eran todavía exóticos.Aunque estaba claro que incluso los diferenciales fijos de hecho flotaban, porque las empresas de corretaje "no garantizan su fijeza en los momentos de novedades y cambios rápidos del mercado" (las comillas representan aquí una cita de una oferta típica de casi cualquier empresa de corretaje de la época).
Pero los tiempos han cambiado y tenemos lo que tenemos: los diferenciales flotan en cada tic, y eso está bien. Sólo que las citas históricas no lo reflejan, por desgracia.
Sólo se almacena en el historial un valor de spread para cada barra. Y no es suficiente ahora. Y conduce a distorsiones cuando se prueba en la historia, porque no hay coincidencia de la historia de comercio real y el comercio en el probador, incluso si un corredor suministra absolutamente honesto (correspondiente a la traducción real de tic-fe) base de la historia. La razón es insuficiente poder descriptivo del formato MqlRates.
structMqlRates
{
datetime time; // время начала периода 8 байт
double open; // цена открытия 8 байтdouble high; // наивысшая цена за период 8 байтdouble low; // наименьшая цена за период 8 байтdouble close; // цена закрытия 8 байтlong tick_volume; // тиковый объем8 байтint spread; // спред 4 байта
long real_volume; // биржевой объем 8 байт
};
// итого: size_of(MqlRates) = 52 байта
Esta estructura supone la invariabilidad del diferencial dentro de una barra, lo que no se corresponde con la realidad comercial actual.
Para seguir discutiendo lo que podría ser el formato "completo", lo he llamado "Mql_6_Rates" de forma condicional para dejar claro que actualmente no está soportado.
A continuación se presentan dos variantes. La primera es una estructura empaquetada (para disco) sin compresión por algoritmos especiales. Se podría comprimir muchas veces más pequeño (2-3, presumiblemente) para reducir el tráfico de transferencia. El formato comprimido no se discute aquí.
struct Mql_6_PackedRates
{
time_t time; // время начала периода 4 байта // восьмибайтный time64_t неактуален до 2038 годаfloat average_price; // средняя цена бара грубо (на три значащих цифры меньше точности _digits) 4 байтаfloat d_open; // поправка к цене открытия 4 байтаfloat d_high; // поправка к наивысшей цене за период 4 байтаfloat d_low; // поправка к наименьшей цене за период 4 байтаfloat d_close; // поправка к цене закрытия 4 байтаushort spread; // средний спред 2 байтаchar d_open_spread; // поправка к спреду открытия 1 байтchar d_high_spread; // поправка к спреду high 1 байтchar d_low_spread; // поправка к спреду low 1 байтchar d_close_spread;// поправка к спреду close 1 байтuint tick_volume; // тиковый объем 4 байтuint real_volume; // биржевой объем 4 байтdouble OpenBid() {return (average_price+d_open); } // функции на лету вычисляющие точные значенияdouble OpenAsk() {return (average_price+d_open+OpenSpread()); }
double HighBid() {return (average_price+d_high); }
и т.д...... // функции на лету вычисляющие точные значения
...
...
double OpenSpread() { return ((spread+d_open_spread) * _digits); }
...
и т.п ......
Mql_6_Rates UnpackRates() { Mql_6_Rates Rates; ..../*заполняем*/..... return (Rates);}
};
// Итого у меня получилось 38 байт, всё правильно? Вся информация об 4 точках bid-ask упакована без искажений
El formato "empaquetado" se supone que es óptimo cuando se almacena en el disco del operador. Cuando se carga desde el disco a la memoria, se puede desempaquetar sobre la marcha, las funciones de desempaquetado se "adjuntan" a la estructura.
El historial desempaquetado (para acceder desde MQL) podría ser, por ejemplo, esto:
struct Mql_6_Rates
{
datetime time; // время начала периода 8 байтdouble open_bid; // цена открытия 8 байтdouble open_ask; // цена открытия 8 байтdouble high_bid; // наивысшая цена за период 8 байтdouble high_ask; // наивысшая цена за период 8 байтdouble low_bid; // наименьшая цена за период 8 байтdouble low_ask; // наименьшая цена за период 8 байтdouble close_bid; // цена закрытия 8 байт double close_ask; // цена закрытия 8 байт long tick_volume; // тиковый объем 8 байт long real_volume; // биржевой объем 8 байт
};
//итого = 88 байт
Es mayor que ahora, pero la dispersión se calcula en todos los puntos fijos de la barra. Es decir, si tenemos que escribir la información en barras de minutos según el esquema tradicional {Apertura+Alto+Bajo+Cierre}, entonces debemos escribirla "completa".
En mi opinión, esta información es redundante y tiende a crear las máximas ilusiones en el punto de apertura. Los momentos de apertura de las barras para los diferentes símbolos no coinciden, mientras que exactamente en el momento del inicio del minuto (astronómico) los precios de compra-venta de los símbolos corresponden a las últimas ofertas negociadas, es decir, a los precios de cierre. Por lo tanto, el formato más adecuado para comprobar los minutos (el compromiso más saludable entre la tradición y el sentido común) podría ser el siguiente
struct Mql_6_Rates
{
datetime time; // время начала периода 8 байтdouble high_bid; // наивысшая цена за период 8 байтdouble high_ask; // наивысшая цена за период 8 байтdouble low_bid; // наименьшая цена за период 8 байтdouble low_ask; // наименьшая цена за период 8 байтdouble close_bid; // цена закрытия 8 байт double close_ask; // цена закрытия 8 байт long tick_volume; // тиковый объем 8 байт long real_volume; // биржевой объем 8 байт
};
//итого = 72 байта
// El ahorro correspondiente en formato de disco empaquetado sería de otros 7 bytes, es decir, SizeOf(Mql_6_PackedRates) se reduciría a 31 bytes.
Para la prueba ecológica (más razonable) "por precios de apertura", se debe tomar la hora de inicio astronómica de un minuto, es decir, el precio de cierre de la barra anterior. En este caso, se lograría un sincronismo exacto de los precios en varias divisas. Este sincronismo es vital para la depuración de EAs multidivisa que operan con órdenes de mercado. Para la operativa de órdenes limitadas y stop, la información de los extremos en cada barra es vital. También está totalmente disponible en el formato que estamos comentando.
--
En realidad, estoy desarrollando estos formatos ahora mismo para mis propios fines. Publicarlos aquí es sólo un subproducto de mi desarrollo. Quizás alguien pueda encontrarlos útiles.
En una prueba de "precios de apertura" respetuosa con el medio ambiente (lo más sensato), se debe tomar la hora de inicio astronómica del minuto, es decir, el precio de cierre de la barra anterior.
ignorar la brecha será fundamental en algunos casos
p.d. si necesita ahorrar en tráfico, puede almacenar compensaciones en lugar de valores de precios absolutos, para lo cual el doble es muy
MetaQuotes, por supuesto, exageró (subestimó) el formato del historial almacenado (MqlRates). Esto es comprensible. Cuando se desarrolló el formato, los diferenciales fijos prevalecían en el mercado de divisas, mientras que los diferenciales de mercado (flotantes) eran todavía exóticos.Aunque estaba claro que incluso los diferenciales fijos eran, de hecho, flotantes, porque las empresas de corretaje "no garantizan su fijeza en tiempos de noticias y cambios rápidos en el mercado" (las comillas aquí representan una cita de una oferta típica de casi cualquier empresa de corretaje de ese período).
El MT5 se posicionó originalmente como un terminal de intercambio. Y en las bolsas las leyes de precios de ECN han estado vigentes durante MUCHO tiempo. Es decir, la excusa del bajo rendimiento es insostenible. Pues no había (ni hay) en su equipo un algotrader fuerte, al que se le pudiera hacer caso. Por lo visto, sólo rige "el número de años de desarrollo exitoso de la plataforma" que la sana lógica.
hrenfx: MT5 se posicionó originalmente como un terminal de intercambio. Y en las bolsas las leyes ECN de formación de precios son MUY antiguas. Por lo tanto, la excusa de la deficiencia es insostenible. Pues no había (ni hay) en su equipo un algotrader fuerte, al que se le pudiera hacer caso. Por lo visto, sólo rige "el número de años de desarrollo exitoso de la plataforma" que la sana lógica.
No estaba tratando de poner excusas. Para poner excusas, tienes que acusar primero. No tengo tiempo para eso de alguna manera.... :)
Entonces se trata de una indulgencia (hay que desconfiar de tal cosa: es peor que la crítica desnuda):
MetaDriver:
Cuando se desarrolló el formato del historial almacenado (MqlRates), MetaQuotes, por supuesto, exageró (subestimó). Es comprensible. Cuando se desarrolló el formato en el mercado de divisas, prevalecían los spreads fijos, los spreads de mercado (flotantes) eran todavía exóticos.Aunque estaba claro que incluso los diferenciales fijos eran, de hecho, flotantes, porque las empresas de corretaje "no garantizan su fijeza en tiempos de noticias y cambios rápidos en el mercado" (las comillas aquí representan una cita de una oferta típica de casi cualquier empresa de corretaje de ese período).
ignorar la brecha será fundamental en algunos casos
Hay una carta de este tipo. Pero el gap (salto discontinuo de la cotización) puede ocurrir en cualquier momento, no sólo al principio de la barra. Por lo tanto, cualquier formato "adelgazado" no está libre de pecado, por definición. La alimentación completa sólo en los ticks. Y podría ser aún más completa en la historia. Estoy tratando de hacer un formato de minutos para mí, mientras que he encontrado tal compromiso.Puedo dejarlo como se describe arriba (sin Open, sólo {Hi-Lo-Close}), entiendo todas las desventajas, es sólo una versión de mi codificación para mi probador. También preveo probar con ticks crudos, o con adelgazamiento artificial por cualquier método (con formato de ahorro de ticks {bid-ask-time}).
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.
No se puede.
No mientas, vete a PR la cocina ;)
Chaqueta, no ensucies tu imagen aquí entre los "nubs y los de relaciones públicas" según tu clasificación. Ve a tu QQ.
P.D. Para los operadores existe la alfabetización, donde pueden reponer sus conocimientos sobre las realidades del mercado FOREX y sus diversas características desde sus bolsas habituales. ¡Amplía tus horizontes!
Chaqueta, no ensucies tu imagen aquí entre los "nubs y los de relaciones públicas" según tu clasificación. Ve a tu QQ.
MetaQuotes, por supuesto, exageró (subestimó) el formato del historial almacenado (MqlRates). Esto es comprensible. Cuando se desarrolló el formato, los diferenciales fijos prevalecían en el mercado de divisas, mientras que los diferenciales de mercado (flotantes) eran todavía exóticos.Aunque estaba claro que incluso los diferenciales fijos de hecho flotaban, porque las empresas de corretaje "no garantizan su fijeza en los momentos de novedades y cambios rápidos del mercado" (las comillas representan aquí una cita de una oferta típica de casi cualquier empresa de corretaje de la época).
Pero los tiempos han cambiado y tenemos lo que tenemos: los diferenciales flotan en cada tic, y eso está bien. Sólo que las citas históricas no lo reflejan, por desgracia.
Sólo se almacena en el historial un valor de spread para cada barra. Y no es suficiente ahora. Y conduce a distorsiones cuando se prueba en la historia, porque no hay coincidencia de la historia de comercio real y el comercio en el probador, incluso si un corredor suministra absolutamente honesto (correspondiente a la traducción real de tic-fe) base de la historia. La razón es insuficiente poder descriptivo del formato MqlRates.
Esta estructura supone la invariabilidad del diferencial dentro de una barra, lo que no se corresponde con la realidad comercial actual.
Para seguir discutiendo lo que podría ser el formato "completo", lo he llamado "Mql_6_Rates" de forma condicional para dejar claro que actualmente no está soportado.
A continuación se presentan dos variantes. La primera es una estructura empaquetada (para disco) sin compresión por algoritmos especiales. Se podría comprimir muchas veces más pequeño (2-3, presumiblemente) para reducir el tráfico de transferencia. El formato comprimido no se discute aquí.
El formato "empaquetado" se supone que es óptimo cuando se almacena en el disco del operador. Cuando se carga desde el disco a la memoria, se puede desempaquetar sobre la marcha, las funciones de desempaquetado se "adjuntan" a la estructura.
El historial desempaquetado (para acceder desde MQL) podría ser, por ejemplo, esto:
Es mayor que ahora, pero la dispersión se calcula en todos los puntos fijos de la barra. Es decir, si tenemos que escribir la información en barras de minutos según el esquema tradicional {Apertura+Alto+Bajo+Cierre}, entonces debemos escribirla "completa".
En mi opinión, esta información es redundante y tiende a crear las máximas ilusiones en el punto de apertura. Los momentos de apertura de las barras para los diferentes símbolos no coinciden, mientras que exactamente en el momento del inicio del minuto (astronómico) los precios de compra-venta de los símbolos corresponden a las últimas ofertas negociadas, es decir, a los precios de cierre. Por lo tanto, el formato más adecuado para comprobar los minutos (el compromiso más saludable entre la tradición y el sentido común) podría ser el siguiente
// El ahorro correspondiente en formato de disco empaquetado sería de otros 7 bytes, es decir, SizeOf(Mql_6_PackedRates) se reduciría a 31 bytes.
Para la prueba ecológica (más razonable) "por precios de apertura", se debe tomar la hora de inicio astronómica de un minuto, es decir, el precio de cierre de la barra anterior. En este caso, se lograría un sincronismo exacto de los precios en varias divisas. Este sincronismo es vital para la depuración de EAs multidivisa que operan con órdenes de mercado. Para la operativa de órdenes limitadas y stop, la información de los extremos en cada barra es vital. También está totalmente disponible en el formato que estamos comentando.
--
En realidad, estoy desarrollando estos formatos ahora mismo para mis propios fines. Publicarlos aquí es sólo un subproducto de mi desarrollo. Quizás alguien pueda encontrarlos útiles.
En una prueba de "precios de apertura" respetuosa con el medio ambiente (lo más sensato), se debe tomar la hora de inicio astronómica del minuto, es decir, el precio de cierre de la barra anterior.
ignorar la brecha será fundamental en algunos casos
p.d. si necesita ahorrar en tráfico, puede almacenar compensaciones en lugar de valores de precios absolutos, para lo cual el doble es muy
MetaQuotes, por supuesto, exageró (subestimó) el formato del historial almacenado (MqlRates). Esto es comprensible. Cuando se desarrolló el formato, los diferenciales fijos prevalecían en el mercado de divisas, mientras que los diferenciales de mercado (flotantes) eran todavía exóticos.Aunque estaba claro que incluso los diferenciales fijos eran, de hecho, flotantes, porque las empresas de corretaje "no garantizan su fijeza en tiempos de noticias y cambios rápidos en el mercado" (las comillas aquí representan una cita de una oferta típica de casi cualquier empresa de corretaje de ese período).
MT5 se posicionó originalmente como un terminal de intercambio. Y en las bolsas las leyes ECN de formación de precios son MUY antiguas. Por lo tanto, la excusa de la deficiencia es insostenible. Pues no había (ni hay) en su equipo un algotrader fuerte, al que se le pudiera hacer caso. Por lo visto, sólo rige "el número de años de desarrollo exitoso de la plataforma" que la sana lógica.
No estaba tratando de poner excusas. Para poner excusas, tienes que acusar primero. No tengo tiempo para eso de alguna manera.... :)
Entonces se trata de una indulgencia (hay que desconfiar de tal cosa: es peor que la crítica desnuda):
Cuando se desarrolló el formato del historial almacenado (MqlRates), MetaQuotes, por supuesto, exageró (subestimó). Es comprensible. Cuando se desarrolló el formato en el mercado de divisas, prevalecían los spreads fijos, los spreads de mercado (flotantes) eran todavía exóticos.Aunque estaba claro que incluso los diferenciales fijos eran, de hecho, flotantes, porque las empresas de corretaje "no garantizan su fijeza en tiempos de noticias y cambios rápidos en el mercado" (las comillas aquí representan una cita de una oferta típica de casi cualquier empresa de corretaje de ese período).
ignorar la brecha será fundamental en algunos casos
Entonces es la condescendencia (cuidado con esas cosas - peor que la crítica desnuda):
:-)
Es un poco tarde para beber borjomi o para enmendar la plana. Hace tiempo que me han reservado un lugar en el infierno.
No creo que intentar comprender sin juzgar sea el más grave de mis pecados. ;)