Como você calcula a margem? - página 4

 
Janis Ozols:

Se a alavancagem de um instrumento mudasse devido a um aumento no lote total ou algum outro motivo, seria lógico esperar que essas consultas devolvessem uma quantidade maior de margem, não?

Não, estas funções utilizam a alavancagem da conta.

 
Andrey Khatimlianskii:

Sim, é.

Apenas, muito provavelmente, a alavancagem muda não para um comércio individual, mas para o instrumento como um todo, mas não muda a essência.

Vou acrescentar um alerta ao meu informante para este caso...

Sábio, é sábio.

 
Andrey Khatimlianskii:

Não, estas funções utilizam a alavancagem da conta.

Por favor, diga-me qual função pode ser usada para calcular a margem atual para um determinado instrumento se a alavancagem desse instrumento não for a mesma que a alavancagem da conta no momento?

 
Janis Ozols:

Diga-me, qual função pode ser usada para obter a margem atual para um determinado instrumento, se a alavancagem desse instrumento no momento é diferente da alavancagem da conta?

Já seria há muito tempo
 
Janis Ozols:

Diga-me, qual função pode ser usada para obter a margem real para um determinado instrumento, se a alavancagem deste instrumento no momento é diferente da alavancagem da conta?

Talvez SymbolInfoDouble(Símbolo,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:

Talvez SymbolInfoDouble(Símbolo,SYMBOL_MARGIN_INITIAL/SYMBOL_MARGIN_MAINTENANCE)?

Infelizmente, a função SymbolInfoDouble com qualquer uma destas constantes retorna zero quando se lida com instrumentos de mercado FOREX.

 

Então, agora podemos responder à questão do fio

Fórmula para calcular a margem para uma cotação direta

M=CC/CP

  • Onde M - margem,
  • CC - montante da transação,
  • MP - alavancagem.

Por exemplo, para fazer um acordo com o volume de 1 lote padrão (100 000 unidades) no par de moedas USD/CAD, com uma alavancagem de 1:200, você precisa fazer uma margem

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

Ou seja, o valor da margem será de $500. E com uma alavancagem de 1:500, a margem será de apenas 100.000/500=200 $. Mas com uma alavancagem de 1:500 você poderá comprar 10 lotes de 1 milhão de dólares, e realizar transações com uma margem de 100 000/500=2 000 dólares.

Cálculo da margem para cotação inversa

M=MSC/KP x KP

  • Onde M - margem;
  • CC - montante da transação;
  • CC - alavancagem;
  • VC - taxa de câmbio.

Tomemos o GBR/USD como exemplo.

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

Você não recebe somas redondas, mas o valor de um pip será sempre em números redondos. E para citações diretas, há alguns inconvenientes no cálculo de uma tubulação.

Cálculo da margem para taxas cruzadas

M = CC/KP x EF

  • M - margem;
  • CC - soma da transação;
  • CC - alavancagem;
  • EF - taxa de câmbio da moeda (base) para o dólar.

exemplo:


//+-------------- РАСЧЕТ МАРЖИ ---------------------+
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:

Diga-me, qual função pode ser usada para obter a margem atual para um determinado instrumento, se a alavancagem desse instrumento no momento é diferente da alavancagem da conta?

Você pode encontrar as fórmulas. Mas por quê?

Pegue a margem real em todas as posições do instrumento e calcule qual é a alavancagem real.

 
Andrey Khatimlianskii:

Fórmulas podem ser encontradas. Mas por quê?

Pegue a margem real em todas as posições no instrumento e calcule qual é a alavancagem real.

Não vai funcionar.

A alavancagem é flutuante.

Estou farto como ele descreve,

é realmente uma infelicidade com um risco bastante alto.

 
Renat Akhtyamov:

Então, agora podemos responder à pergunta do ramo

Desculpe, eu não coloquei minha pergunta corretamente no título do tópico. Na verdade, não estou interessado em como calcular a margem, mas como obter seu valor real (não calculado) a partir do terminal. E não para a conta inteira, mas para uma única posição separadamente. É sobre isso que estamos falando no primeiro posto. Já entendi que isso não pode ser feito por meio da MQL4, tal função simplesmente não existe. No entanto, @Andrey Khatimlianskii sugeriu há algum tempo que a alavancagem pode variar não para uma única posição, mas para um instrumento como um todo. Agora é importante para mim descobrir como obter o valor dessa alavancagem caso ela difira da alavancagem da conta.


Renat Akhtyamov:

A fórmula para calcular a margem para uma cotação direta

M=CC/CP

  • Onde M - margem,
  • CC - a soma da transação,
  • KP - alavancagem.

O problema com isto e todas as fórmulas subsequentes é que elas contêm KP (alavancagem). Infelizmente, eu ainda não descobri como obter este valor para um único instrumento. Funções AccountMargin() e AccountInfoInteger(ACCOUNT_LEVERAGE) retornam a alavancagem da conta, não a alavancagem do símbolo, e a função MarketInfo(_Symbol,MODE_MARGINREQUIRED) retorna o valor da margem correspondente à alavancagem da conta, mesmo que as posições para este símbolo sejam realmente abertas com uma alavancagem absolutamente diferente. A função SymbolInfoDouble com constantes SYMBOL_MARGIN_INITIAL ou SYMBOL_MARGIN_MAINTENANCE sempre retorna zero quando se trabalha com símbolos FOREX.

Assim, não entendo como esta e todas as outras fórmulas podem ser usadas, se a alavancagem de um corretor, que difere do PK da conta em geral, for definida para um instrumento específico.


Andrey Khatimlianskii:

As fórmulas podem ser encontradas. Mas por quê?

Não estou tentando encontrar fórmulas (elas já foram propostas o suficiente), mas exatamente a função da MQL4. A fim de obter o valor real, não o calculado. Graças ao Andrey, já entendi que é impossível fazer isso para uma única posição separadamente. Agora estou me perguntando como obter a alavancagem para o instrumento como um todo, se ele é diferente do da conta.


Andrey Khatimlianskii:

Pegue a margem real para todas as posições no instrumento e calcule qual será a alavancagem real.

Isto é exatamente o que eu fiz agora. O Expert Advisor compara o valor real da margem com o valor calculado e, no caso de um excesso significativo, ele pára de negociar e envia uma notificação ao trader. Até agora, não recebi nenhuma notificação desse tipo (ouch*3).

Mas o que fazer se houver posições sobre outros instrumentos? Afinal, ficou claro acima que é impossível obter o valor real da margem para uma única posição a partir do terminal. Mas certamente isso pode ser feito para o instrumento como um todo?