Estimación de los requisitos de margen en MQL5 - página 7

 
Vladimir:

Entiendes que no se trata del código, todo el que sabe recalcular... eso es todo. Pero usted ha añadido la volatilidad a la lista de características, cuyo impacto ha identificado realmente. Y si te adentras en el bosque, recogerás más y más leña. ¿Cómo debemos tenerlo en cuenta? El caso parece bastante desesperado...

No sé a qué te refieres en absoluto.

Todo está descrito en las condiciones de negociación, en las propias normas de negociación.

El fenómeno es esencialmente común.

En consecuencia, el cálculo es diferente.

Pero el problema tiene solución

Cómo tener en cuenta - el puesto anterior.
 
Renat Akhtyamov:

No sé a qué se refiere.

Todo está descrito en las condiciones de negociación, en las propias normas de negociación.

El fenómeno es esencialmente común.

En consecuencia, el cálculo es diferente

Pero el problema tiene solución.

Intentaré explicarlo. El algoritmo es el siguiente: observamos varias decenas de símbolos en varias decenas de empresas de corretaje. Las estimaciones se hacen por etapas; las llamaré por simplicidad: la rentabilidad esperada de una operación sobre el margen tomado por ella. Es diferente para cada par (símbolo, CC). Incluso no sólo en el momento de la apertura de la transacción. Para seleccionar los símbolos y las empresas de corretaje, en las que abriremos una operación, tenemos que comparar esta cifra. Para esta elección necesitamos estimar el apalancamiento, en qué límites estará en un período previsto antes de cerrar la transacción. Después de todo, tendremos que reservar esta cantidad.

Este es el programa máximo. Hasta ahora, no sé si puedo tomar OrderCalcMargin() como base para estimar el margen requerido. Que sea sólo el margen para el momento actual. Dijiste que al cambiar la volatilidad, cambia el apalancamiento. Por lo tanto, tendremos que recoger las estadísticas - en qué rangos cambia en cada uno de VC para cada símbolo. O será posible encontrar rangos aceptables de estas fluctuaciones. Lo peor sería que resultara que el apalancamiento varía de forma imprevisible...

Mi pregunta "¿tiene OrderCheck() o OrderCalcMargin() en cuenta las características de apalancamiento especificadas en la especificación?" es un punto de partida en este enfoque.
 
Vladimir:

Permítanme que intente explicarlo. El algoritmo es el siguiente: se supervisan varias decenas de símbolos en varias decenas de CC. Las estimaciones se realizan en un determinado paso, las llamaré para simplificar la rentabilidad esperada de un acuerdo sobre el margen tomado por el mismo. Es diferente para cada par (símbolo, CC). Incluso no sólo en el momento de la apertura de la transacción. Para seleccionar los símbolos y las empresas de corretaje, en las que abriremos una operación, tenemos que comparar esta cifra. Para esta elección necesitamos estimar el apalancamiento, en qué límites estará en un período previsto antes de cerrar la transacción. Después de todo, tendremos que reservar esta cantidad.

Este es el programa máximo. Hasta ahora, no sé si puedo tomar OrderCalcMargin() como base para estimar el margen requerido. Que sólo sea el margen para el momento actual. Dijiste que al cambiar la volatilidad, cambia el apalancamiento. Por lo tanto, tendremos que recoger las estadísticas - en qué rangos cambia en cada uno de VC para cada símbolo. O será posible encontrar rangos aceptables de estas fluctuaciones. Lo peor sería que resultara que el apalancamiento varía de forma imprevisible...

Escribo por última vez:

Lea las condiciones de negociación de una determinada empresa de corretaje y no necesitará ninguna estadística.

 
Renat Akhtyamov:

La última vez que escribí:

Puede cambiar el ap alancamiento a su discreción y puede obtener sólo 20 durante algunas horas.

//Mi pregunta "¿tiene OrderCheck() o OrderCalcMargin() en cuenta las características de apalancamiento especificadas en la especificación?" es un punto de partida en este enfoque.

Actual

Nunca se ve cuándo llega un correo de reducción de apalancamiento, y puede haber muchos factores, no es sólo para las elecciones en los países. Pueden cambiar el apalancamiento sobre la "marcha" a su discreción, puede fijarlo de 100 a 20, y sólo por unas horas.

 
Vitaly Muzichenko:

Alguna vez ha visto una carta en el correo informándole de una reducción de apalancamiento, y puede haber muchos factores, no sólo en las elecciones del país. También es posible que no recibas una carta: cambian el apalancamiento sobre la marcha según les convenga, pueden pasar de 100 a 20, y sólo por unas horas.

Vitaly, ya he escrito el algoritmo de seguimiento en el anterior, lo usé yo mismo, porque el apalancamiento era de 1:2000

En las condiciones de negociación especifican específicamente los límites del cambio de apalancamiento, las condiciones, el tiempo, bajo qué condiciones no lo cambian en absoluto, etc.

También puedes cambiarlo sobre la marcha, por eso lo estaba rastreando.

 
Vladimir:.
Mi pregunta "¿tiene OrderCheck() o OrderCalcMargin() en cuenta las características de apalancamiento especificadas en la especificación?" es un punto de partida en este enfoque.

Lo siento, en tus propias palabras:

"No se trata del código, sino de todos los que pueden recalcular".

Es probable que tú también te hayas asignado a todos.

Haz las cuentas y todo será
 

¿O tal vez el terminal no tiene la información correcta?
He comprobado si el terminal envía una petición al servidor cada vez, o comprueba si tengo suficientes fondos. He encontrado sólo una empresa de corretaje en MT5 que registra sus solicitudes en dos líneas con dos puntos si hay una cantidad insuficiente de dinero. Puede ser porque de los MT5 este terminal es el único conectado a una cuenta real, los otros MT5 los tengo demo. Registro de 6 intentos de apertura manual de operaciones:

2018.07.03 04:59:35.231 Operaciones '3038119': mercado comprar 1.26 EURUSD.m
2018.07.03 04:59:35.331 Operaciones '3038119': mercado comprar 1,26 EURUSD.m [Sin dinero]
2018.07.03 05:00:51.667 Operaciones '3038119': mercado comprar 1.26 EURUSD.m
2018.07.03 05:00:51.747 Operaciones '3038119': fallida compra de mercado 1.26 EURUSD.m [Sin dinero]
2018.07.03 05:00:55.001 Operaciones '3038119': mercado comprar 1,26 EURUSD.m
2018.07.03 05:00:55.091 Operaciones '3038119': mercado comprar 1,26 EURUSD.m [Sin dinero]
2018.07.03 05:01:00.008 Operaciones '3038119': mercado vender 1.26 EURUSD.m
2018.07.03 05:01:00.091 Operaciones '3038119': fallida venta de mercado 1.26 EURUSD.m [Sin dinero]
2018.07.03 05:01:02.911 Operaciones '3038119': mercado vender 1.26 EURUSD.m
2018.07.03 05:01:03.007 Operaciones '3038119': fallida venta de mercado 1.26 EURUSD.m [Sin dinero]
2018.07.03 05:01:05.952 Operaciones '3038119': mercado vender 1.26 EURUSD.m
2018.07.03 05:01:06.035 Operaciones '3038119': fallida venta de mercado 1.26 EURUSD.m [Sin dinero]

Intervalos de tiempo entre la línea de petición y la respuesta de No money (en milisegundos): 100 80 90 83 96 87.
El ping al servidor mostrado en el terminal es de 73,56 ms. ¿Por qué el terminal espera 80 ms o más antes de decidir que no es suficiente dinero? Parece que envía todas las peticiones al servidor sin comprobar la suficiencia. ¿Por qué? Veo una razón natural: el terminal no tiene la información necesaria para esa comprobación.
Y siempre estuve seguro de que ese mensaje de "No hay suficiente dinero..." lo da el propio terminal, que no es sólo el envío de decisiones del servidor.

Dennis Kirichenko parece ser la respuesta más precisa a mi pregunta https://www.mql5.com/ru/forum/261955/page4#comment_7949343

Renat Akhtyamov, ¿qué método has sugerido en https://www.mql5.com/ru/forum/261955/page2#comment_7945930"Solicitar información de márgenes al servidor"? Aunque tarde un segundo, vale, pero ¿a qué tipo de petición al servidor te referías? ¿Es sólo un intento de abrir una operación anticipada para la que se hace una estimación preliminar del margen?

 
Vladimir:

¿O tal vez no tiene la información correcta en su terminal?
Empecé a comprobar si el terminal envía la petición al servidor cada vez, o si está comprobando la suficiencia de los fondos. Sólo he encontrado una empresa de corretaje en MT5 que registra las solicitudes en dos líneas mostrando dos puntos en caso de fondos insuficientes. Puede ser porque de los MT5 este terminal es el único conectado a una cuenta real, los otros MT5 los tengo demo. Registro de 6 intentos de apertura manual de operaciones:

2018.07.03 04:59:35.231 Operaciones '3038119': mercado comprar 1.26 EURUSD.m
2018.07.03 04:59:35.331 Operaciones '3038119': mercado comprar 1,26 EURUSD.m [Sin dinero]
2018.07.03 05:00:51.667 Operaciones '3038119': mercado comprar 1.26 EURUSD.m
2018.07.03 05:00:51.747 Operaciones '3038119': fallida compra de mercado 1.26 EURUSD.m [Sin dinero]
2018.07.03 05:00:55.001 Operaciones '3038119': mercado comprar 1,26 EURUSD.m
2018.07.03 05:00:55.091 Operaciones '3038119': mercado comprar 1,26 EURUSD.m [Sin dinero]
2018.07.03 05:01:00.008 Operaciones '3038119': mercado vender 1.26 EURUSD.m
2018.07.03 05:01:00.091 Operaciones '3038119': fallida venta de mercado 1.26 EURUSD.m [Sin dinero]
2018.07.03 05:01:02.911 Operaciones '3038119': mercado vender 1.26 EURUSD.m
2018.07.03 05:01:03.007 Operaciones '3038119': fallida venta de mercado 1.26 EURUSD.m [Sin dinero]
2018.07.03 05:01:05.952 Operaciones '3038119': mercado vender 1.26 EURUSD.m
2018.07.03 05:01:06.035 Operaciones '3038119': fallida venta de mercado 1.26 EURUSD.m [Sin dinero]

Intervalos de tiempo entre la línea de petición y la respuesta de No money (en milisegundos): 100 80 90 83 96 87.
Además, el ping del servidor en el terminal es de 73,56 ms. ¿Por qué el terminal espera 80 ms o más antes de decidir que no es suficiente dinero? Parece que envía todas las peticiones al servidor sin comprobar la suficiencia. ¿Por qué? Veo una razón natural: el terminal no tiene la información necesaria para esa comprobación.
Y siempre estuve seguro de que ese mensaje de "No hay suficiente dinero..." lo da el propio terminal, que no es sólo el envío de decisiones del servidor.

Dennis Kirichenko parece haber respondido a mi pregunta con mayor precisión https://www.mql5.com/ru/forum/261955/page4#comment_7949343

Renat Akhtyamov, ¿qué método has sugerido en https://www.mql5.com/ru/forum/261955/page2#comment_7945930"Solicitar información de márgenes al servidor"? Aunque tarde un segundo, vale, pero ¿a qué tipo de petición al servidor te refieres? ¿Es sólo un intento de abrir una operación anticipada para la que se hace una estimación preliminar del margen?

Te entiendo, por supuesto.

Al principio no entendía las cosas sencillas de inmediato

Una vez más, aquí está el margen de 1 lote para vender

OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,1,BID,Mgn)

Pero para comprar

OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1,ASK,Mgn)

El apalancamiento es la relación con ella, no más de

k=100/apalancamiento

así

Y su registro le dice que no tiene dinero y que no puede abrir un pedido gratis.

Puede abrir una orden con dinero de demostración. Sin embargo, por lo que tengo entendido, tampoco tiene dinero de demostración.

El saldo es cero, ¿no?
 
Chicos, dadme la dirección de una casa de bolsa donde el apalancamiento de un símbolo o el apalancamiento de una cuenta cambie con frecuencia. O, al menos, para algunos símbolos condiciones de apalancamiento independientes.
 

ForexClub.

Comprobado su margen relativo a este lote utilizando ::OrderCalcMargin(). Cuenta real, apalancamiento 1:500.

EURUSDLotePrecioValor del volumen, $Margen, $Apalancamiento teórico
100 0001.001.16716116 716233.43500

11.001.167161 283 8762 567.75500

51.001.167165 952 51611 905.03500

101.00
1.1671611 788 31623 576.63500


Resulta que el apalancamiento no cambia cuando aumenta el volumen de operaciones, lo que no se corresponde con la Especificación.