Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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.
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.
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?
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?
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)?
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
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
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
Tomemos o GBR/USD como exemplo.
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
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);
}
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.
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.
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.
A fórmula para calcular a margem para uma cotação direta
M=CC/CP
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.
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.
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?