Cómo obtener el "Porcentaje de margen" mediante programación - página 8

 
Alexey Viktorov:

Qué dolor de cabeza... Comprueba cómo estás contando.

ORO en metaquotes (porcentaje de margen - 1, apalancamiento -300), CFD

2017.06.05 21:57:42.015 Script gold_test_vik2 GOLD,H4: removed
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: uninit reason 0
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: ******** AccountMargin = 19188.75 USD
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: ******** Процент маржи 300 Маржа ордера GOLD 0.05 = 19188.75
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: initialized

En los cruces y en las posiciones bloqueadas los cálculos también son erróneos, pero personalmente no me importa, y veo que tu script simplemente no lo maneja... No creo que merezca la pena el esfuerzo, si todas las dificultades hasta ahora están relacionadas con el cálculo del porcentaje de margen y la garantía para al menos una orden de CFD.

p.d. También empiezo a pensar que no es casualidad que los desarrolladores no hayan dado acceso directo al porcentaje de margen :D

 

¿Puedes compartir tu experiencia sobre cómo abrir una demo en MetaQuote-Demo con un apalancamiento de 300? Tengo un máximo de 100...


GOLD en MetaQuote-Demo

2017.06.06 09:07:32.780 Data Folder: D:\MetaTrader 4\Programming
2017.06.06 09:07:32.780 Windows 7 Home Premium (x64 based PC), IE 11.00, UAC, 4 x AMD FX-4170 Quad-Core Processor , RAM: 10402 / 12255 Mb, HDD: 31535 / 244198 Mb, GMT+03:00
2017.06.06 09:07:32.780 MetaTrader 4 build 1090 started (MetaQuotes Software Corp.)

Impresión

2017.06.06 09:09:25.812 test GOLD,H1: ******** AccountMargin = 160.95 USD
2017.06.06 09:09:25.812 test GOLD,H1: ******** Процент маржи 1 Маржа ордера GOLD 0.05 = 160.9525

Capturas de pantalla



 
Alexey Viktorov:

¿Puedes compartir tu experiencia de cómo abrir una demo en MetaQuote-Demo con un apalancamiento de 300? Tengo un máximo de 100...


oops... Se confundió en los terminales con estas pruebas. Este fue insta, por lo demás correcto, ORO, porcentaje de margen - 1, apalancamiento 300, capturas de pantalla arriba...

¡Lo siento!

 
ir0407:
El porcentaje de margen no es un depósito calculado. Es sólo uno de los componentes para calcular el margen. El resultado de este cálculo (según las fórmulas de la tabla) vuelve en la moneda del margen, que luego (si es diferente de la moneda del depósito) debe convertirse en la moneda del depósito.

Y eso es algo que tampoco puedo precisar. Por ejemplo, tomamos una fórmula:

Lots*Contract_Size/Leverage

Donde, Lotes - es el lote en la moneda base del instrumento y el contrato - también en la moneda base, y luego, si es necesario, multiplicar la moneda base a la moneda cotizada por el tipo de cambio. Y con todo esto el resultado se obtiene en la moneda del margen. ¿Cómo es eso?

 
K-2SO:

Y eso es algo que tampoco puedo precisar. Por ejemplo, tomamos una fórmula:

Donde, Lotes - es el lote en la moneda base del instrumento y el contrato - también en la moneda base, y luego, si es necesario, multiplicar la moneda base a la moneda cotizada por el tipo de cambio. Y con todo esto el resultado se obtiene en la moneda del margen. ¿Por qué?

Esta fórmula

Lots*Contract_Size/Leverage

es válido para el cálculo del margen para las monedas USD***.


En primer lugar, determinamos el precio que debemos traducir a la moneda del depósito.

Si el nombre del instrumento empieza por la moneda del depósito, en este caso el USD, no se tiene en cuenta el precio

Si la orden es OP_BUY, necesitamos el precio de la oferta

Si la orden es OP_SELL entonces Ask

double price = stringFind == 0 ? 1 : type%2 == OP_BUY ? bid : ask;
percentage = NormalizeDouble(
                             margin          // Маржа получена в валюте депозита с учётом плеча
                           /(contractSize    // Размер контракта в базовой валюте
                            *price           // Умножаем на текущую цену и получаем в валюте депозита
                            /100)            // Это для того чтобы коэффициент перевести в проценты
                           *(calcMode == 0 ? leverage : 1) // Это получено методом научно-технического тыка.
                                    // Если способ расчёта 0 - Forex; то надо учесть плечо
                                    //                     1 - CFD; то плечо не учитывается
                                    //                     2 - Futures; 3 - CFD на индексы НЕ проверялись, их у меня нету...
                           , 0);
orderMargin = (orderLots         // правильно, в базовой валюте
              *contractSize      // и это тоже в базовой
              *orderOpenPrice    // а вот тут переводим в валюту депозита
              *percentage/100)   // у меня слов не хватает чтобы объяснить что это такое, но видимо очень нужное.
             /(calcMode == 0 ? leverage : 1);  // Это тоже получено методом научно-технического тыка.

Espero haber explicado las cosas con claridad...

 
Alexey Viktorov:

Espero haber sido claro...

Um... Creo que estamos hablando de cosas diferentes otra vez. Sólo decidí intentar aclarar no el método de cálculo del margen (no los cálculos), sino cómo resulta que a la salida de la fórmula de cálculo del margen, donde prácticamente no trabajamos con la moneda del margen, obtenemos el resultado exactamente en la moneda del margen. Al menos así lo entendí del mensajede ir0407. Y por eso di la fórmula de cálculo más sencilla, donde aún no hay contabilidad de cotizaciones...

Para el resto (el método de la intuición), también lo he probado todo, pero he observado que aún no se ha encontrado una solución única. He mezclado los corredores, pero los resultados-no, es decir, en insta su última opción con los parámetros anteriores, sigue produciendo números cósmicos también: https://www.mql5.com/ru/forum/193833/page8#comment_5243991

p.d. ¡Pero gracias por los comentarios! De todas formas entiendo la forma de pensar, los cálculos descritos por ti)

 
K-2SO:

Um... Creo que estamos hablando de cosas diferentes otra vez. Sólo decidí intentar aclarar no el método de cálculo del margen (no los cálculos), sino cómo es que a la salida de la fórmula de cálculo del margen, donde prácticamente no trabajamos con la moneda del margen, obtenemos el resultado en la moneda del margen. Al menos así lo entendí del mensajede ir0407. Y por eso di la fórmula de cálculo más sencilla, donde aún no hay contabilidad de cotizaciones...

Para el resto (el método de la intuición), también lo he probado todo, pero he observado que aún no se ha encontrado una solución única. He mezclado los corredores, pero los resultados-no, es decir, en insta su última opción con los parámetros anteriores, sigue produciendo números cósmicos también: https://www.mql5.com/ru/forum/193833/page8#comment_5243991

p.d. ¡Pero gracias por los comentarios! De todas formas, entiendo la forma de pensar, los cálculos que has descrito)

No quiero ni abrir una demo en insta. Si no es difícil, en el depurador puede mostrar qué valores intermedios se obtienen. Como en mi captura de pantalla


 
Alexey Viktorov:

No quiero ni abrir una demo en insta. Si no te importa, en el depurador puedes mostrar los valores intermedios que obtienes. Como en mi captura de pantalla



De nuevo, ¡mi mala suerte! Al parecer, al parsear tu código, debí cambiar algo en él (se me olvidó devolverlo) y por eso arrojó tal error. Ahora (por si acaso) re-copiado el original - correctamente y en insta cuenta. Lo probaré con otros corredores entonces.
 

Me quito el sombrero, ¡casi aciertas! En los tres corredores revisados anteriormente con diferentes porcentajes de margen, el cálculo para el oro (para órdenes en una dirección) es correcto.

Pero el guión sigue fallando con los exóticos. He parado en el broker fxcm. El porcentaje de margen para el oro es de 70000, para los pares de divisas convencionales es de 130, la moneda de margen parece ser el USD. Tampoco he visto señales de corrección en ningún sitio. (. Yo mismo he estado buscando la clave durante dos días, y de hecho a raíz de esto ahora estoy buscando una respuesta a la pregunta, cómo es que como resultado de los cálculos de las monedas base y sus tipos con las monedas cotizadas, obtenemos una moneda de margen... Quizás sea esto, o quizás sea el hecho de que este broker tiene en cuenta el porcentaje de margen incluso para los pares de divisas normales.

Aquí puedes descargar el terminal ru.files.fm/u/xfezz883#_ , descomprimirlo, ejecutarlo con el archivo exe, hacer una demo...

 
K-2SO:

Me quito el sombrero, ¡casi aciertas! En los tres corredores revisados anteriormente con diferentes porcentajes de margen, el cálculo para el oro (para órdenes en una dirección) es correcto.

Pero el guión sigue fallando con los exóticos. He parado en el broker fxcm. El porcentaje de margen para el oro es de 70000, para los pares de divisas convencionales es de 130, la moneda de margen parece ser el USD. ¡Y nada cuenta correctamente en ninguna parte! (. Yo mismo he estado buscando la clave durante dos días, y de hecho a raíz de esto ahora estoy buscando una respuesta a la pregunta, cómo es que como resultado de los cálculos de las monedas base y sus tipos con las monedas de cotización, obtenemos una moneda de margen... Quizás sea esto, o quizás sea el hecho de que este broker tiene en cuenta el porcentaje de margen incluso para los pares de divisas normales.

Puedes descargar el terminal aquí ru.files.fm/u/xfezz883#_ , descomprimirlo, ejecutarlo con el archivo exe, iniciar la demo...

No es un problema calcular los cruces. Sólo tiene que tomar una cotización, que se traduce de la moneda del margen a la moneda del depósito.

Por ejemplo, el precio del EURJPY

double price = stringFind == 0 ? 1 : type%2 == OP_BUY ? bid : ask;

Si su depósito es en USD, debe utilizar EURUSD. Si calcula el CADJPY, debería utilizar el USDCAD. Aquí debemos ver cómo añadir la moneda del depósito a la moneda del margen, no debemos simplemente introducirla en la lista.

Los contadores no son tan difíciles teniendo MarketInfo(symbol, MODE_MARGINHEDGED). El único problema es encontrar primero la contra-moneda, y luego descomponer una parte con la contra-moneda, y el resto - en su totalidad...

En general, veo que la única ventaja de este artículo es que el operador sabe de antemano qué margen se tomará cuando se active la orden pendiente y puede eliminar la orden pendiente si no es suficiente a tiempo para evitar errores. Una vez tuve problemas con esto al colocar un EA en el mercado.

Razón de la queja: