¿Cómo se calcula el margen? - página 4

 
Janis Ozols:

Si el apalancamiento de un instrumento cambió debido a un aumento del lote total o alguna otra razón, sería lógico esperar que estas consultas devolvieran una cantidad mayor de margen, ¿no?

No, estas funciones utilizan el apalancamiento de la cuenta.

 
Andrey Khatimlianskii:

Sí, lo es.

Sólo que, muy probablemente, el apalancamiento no cambia para una operación individual, sino para el instrumento en su conjunto, pero no cambia la esencia.

Añadiré una alerta a mi informador para este caso...

Sabio, es sabio.

 
Andrey Khatimlianskii:

No, estas funciones utilizan el apalancamiento de la cuenta.

Por favor, dígame qué función se puede utilizar para calcular el margen actual de un instrumento concreto si el apalancamiento de ese instrumento no es el mismo que el apalancamiento de la cuenta en ese momento.

 
Janis Ozols:

Por favor, dígame, ¿qué función se puede utilizar para obtener el margen actual para un instrumento en particular, si el apalancamiento de ese instrumento en el momento es diferente del apalancamiento de la cuenta?

Sería hace mucho tiempo
 
Janis Ozols:

Por favor, dígame, ¿qué función se puede utilizar para obtener el margen real para un determinado instrumento, si el apalancamiento de este instrumento en el momento es diferente del apalancamiento de la cuenta?

¿Quizás SymbolInfoDouble(Symbol,SYMBOL_MARGIN_INITIAL/SYMBOL_MARGIN_MAINTENANCE)?

SymbolInfoDouble - Market Info - MQL4 Reference
SymbolInfoDouble - Market Info - MQL4 Reference
  • docs.mql4.com
2. Returns true or false depending on whether a function is successfully performed. In case of success, the value of the property is placed into a recipient variable, passed by reference by the last parameter. It is recommended to use SymbolInfoTick() if the function is used for getting information about the last tick. It may well be that not a...
 
Stanislav Korotky:

¿Quizás SymbolInfoDouble(Symbol,SYMBOL_MARGIN_INITIAL/SYMBOL_MARGIN_MAINTENANCE)?

Lamentablemente, la función SymbolInfoDouble con cualquiera de estas constantes devuelve cero cuando se trata de instrumentos del mercado FOREX.

 

Así que, ahora podemos responder a la pregunta del hilo

Fórmula para calcular el margen de una cotización directa

M=CC/CP

  • Donde M - margen,
  • CC - la suma de la transacción,
  • MP - apalancamiento.

Por ejemplo, para realizar una operación con el volumen de 1 lote estándar (100 000 unidades) en el par de divisas USD/CAD, con un apalancamiento de 1:200, es necesario realizar un margen

  • M=CC/CP
  • М=100 000/200
  • М=500

Es decir, el importe del margen será de 500 $. Y con un apalancamiento de 1:500, el margen sólo será de 100.000/500=200 $. Pero con un apalancamiento de 1:500 podrá comprar 10 lotes de 1 millón de dólares, y realizar operaciones con un margen de 100 000/500=2 000 $.

Cálculo del margen para la cotización inversa

M=MSC/KP x KP

  • Donde M - margen;
  • CC - importe de la transacción;
  • CC - apalancamiento;
  • VC - tipo de moneda.

Tomemos como ejemplo el GBR/USD.

  • M = MOP / KP x TOR
  • M = 100.000/200 x 1, 5074
  • М= 753,7 $

No se obtienen sumas redondas, pero el valor de un pip siempre estará en números redondos. Y en el caso de las cotizaciones directas, hay algún inconveniente en el cálculo de un pip.

Cálculo del margen de los tipos cruzados

M = CC/KP x EF

  • M - margen;
  • CC - suma de la transacción;
  • CC - apalancamiento;
  • EF - tipo de cambio de la moneda (base) con respecto al dólar.

ejemplo:


//+-------------- РАСЧЕТ МАРЖИ ---------------------+
double calcMGN(string SYMB, double VOL)
{
   double Res=0,Price=0;
   if(LEVERAGE!=0)
   {
      if(StringSubstr(SYMB,0,3)!="USD")
      {
         SYMB=StringSubstr(SYMB,0,3)+"USD";
         Price=iClose(SYMB,Period(),0);
         Res=VOL*Price/LEVERAGE;
      }
      else Res=VOL/LEVERAGE;
   }
   return(Res);
}


 
Janis Ozols:

Por favor, dígame, ¿qué función se puede utilizar para obtener el margen actual para un instrumento en particular, si el apalancamiento de ese instrumento en el momento es diferente del apalancamiento de la cuenta?

Puede encontrar las fórmulas. ¿Pero por qué?

Tome el margen real de todas las posiciones del instrumento y calcule cuál es el apalancamiento real.

 
Andrey Khatimlianskii:

Se pueden encontrar fórmulas. ¿Pero por qué?

Tome el margen real de todas las posiciones del instrumento y calcule cuál es el apalancamiento real.

No funcionará.

El apalancamiento es flotante.

Lo he tenido como él describe,

es realmente desafortunado con un riesgo bastante alto.

 
Renat Akhtyamov:

Así que, ahora podemos responder a la pregunta de la rama

Lo siento, no he formulado bien mi pregunta en el título del hilo. En realidad, no me interesa cómo calcular el margen, sino cómo obtener su valor real (no calculado) del terminal. Y no para toda la cuenta, sino para una sola posición por separado. De eso hablamos en el primer post. Ya entendí que no se puede hacer por medio de MQL4, tal función simplemente no existe. Sin embargo, @Andrey Khatimlianskii sugirió hace algún tiempo que el apalancamiento puede variar no para una sola posición, sino para un instrumento en su conjunto. Ahora es importante para mí averiguar cómo obtener el valor de este apalancamiento en caso de que difiera del apalancamiento de la cuenta.


Renat Akhtyamov:

La fórmula para calcular el margen de una cotización directa

M=CC/CP

  • Donde M - margen,
  • CC - la suma de la transacción,
  • KP - apalancamiento.

El problema de ésta y de todas las fórmulas posteriores es que contienen KP (apalancamiento). Por desgracia, aún no he descubierto cómo obtener este valor para un solo instrumento. Las funciones AccountMargin() y AccountInfoInteger(ACCOUNT_LEVERAGE) devuelven el apalancamiento de la cuenta, no el apalancamiento del símbolo, y la función MarketInfo(_Symbol,MODE_MARGINREQUIRED) devuelve el valor del margen correspondiente al apalancamiento de la cuenta, incluso si las posiciones para este símbolo se abren realmente con un apalancamiento absolutamente diferente. La función SymbolInfoDouble con las constantes SYMBOL_MARGIN_INITIAL o SYMBOL_MARGIN_MAINTENANCE siempre devuelve cero cuando se trabaja con símbolos FOREX.

Por lo tanto, no entiendo cómo se puede utilizar esta y todas las demás fórmulas, si el apalancamiento de un corredor, que difiere del PK de la cuenta en general, se establece para un instrumento específico.


Andrey Khatimlianskii:

Las fórmulas se pueden encontrar. ¿Pero por qué?

No estoy tratando de encontrar fórmulas (ya se han propuesto bastante), pero exactamente la función de MQL4. Para obtener el valor real, no el calculado. Gracias a Andrey, ya he comprendido que es imposible hacer esto para una sola posición por separado. Ahora me pregunto cómo obtener el apalancamiento del instrumento en su conjunto, si es diferente al de la cuenta.


Andrey Khatimlianskii:

Tome el margen real de todas las posiciones del instrumento y calcule cuál es el apalancamiento real.

Esto es exactamente lo que hice ahora. El Asesor Experto compara el valor real del margen con el valor calculado y, en caso de un exceso significativo, detiene la negociación y envía una notificación al operador. Hasta ahora no he recibido ninguna notificación de este tipo (ay*3).

¿Pero qué hacer si hay posiciones en otros instrumentos? Al fin y al cabo, ya ha quedado claro que es imposible obtener el valor real del margen para una sola posición del terminal. Pero seguro que se puede hacer para el instrumento en su conjunto.

Razón de la queja: