Como obter a "Porcentagem de Margem" de forma programática - página 8

 
Alexey Viktorov:

Que chato... Verifique como você está contando.

OURO em metaquotas (margem percentual - 1, alavancagem -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

Em cruzes e posições bloqueadas os cálculos também estão errados, mas pessoalmente não me importo, e vejo que seu roteiro simplesmente não lida com isso... Não acho que valha a pena o esforço, se todas as dificuldades até agora estão de qualquer forma relacionadas ao cálculo do percentual de margem e garantias para pelo menos uma ordem de CFD.

p.s. Eu também começo a pensar que não é coincidência que os desenvolvedores não tenham dado acesso direto ao percentual de margem :D

 

Você pode compartilhar sua experiência como abrir uma demonstração no MetaQuote-Demo com uma alavancagem de 300? Eu tenho um máximo de 100...


OURO no 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.)

Imprimir

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 tela



 
Alexey Viktorov:

Você pode compartilhar sua experiência como abrir uma demonstração no MetaQuote-Demo com uma alavancagem de 300? Eu tenho um máximo de 100...


oops... Ficou confuso nos terminais com estes testes. Esta foi insta, senão correta, GOLD, percentual de margem - 1, alavancagem 300, screenshots acima...

desculpe!

 
ir0407:
A porcentagem da margem não é um depósito calculado. É apenas um dos componentes para o cálculo da margem. O resultado deste cálculo (de acordo com as fórmulas da tabela) retorna na moeda da margem, que deve então (se for diferente da moeda do depósito) ser convertida na moeda do depósito.

E isso é algo em que eu também não consigo colocar meu dedo. Por exemplo, tomamos uma fórmula:

Lots*Contract_Size/Leverage

Onde, Lotes - este é o lote na moeda base do instrumento e do contrato - também na moeda base, e então, se necessário, multiplique a moeda base para a moeda cotada pela taxa de câmbio. E com tudo isso, o resultado é obtido na moeda da margem. Como assim?

 
K-2SO:

E isso é algo em que eu também não consigo colocar meu dedo. Por exemplo, tomamos uma fórmula:

Onde, Lotes - este é o lote na moeda base do instrumento e do contrato - também na moeda base, e então, se necessário, multiplique a moeda base para a moeda cotada pela taxa de câmbio. E com tudo isso, o resultado é obtido na moeda da margem. Como assim?

Esta fórmula

Lots*Contract_Size/Leverage

é válido para o cálculo da margem para moedas USD****.


Primeiro, determinamos qual o preço que precisamos traduzir para a moeda do depósito.

Se o nome do instrumento começa com a moeda do depósito, neste caso USD, então o preço não é levado em consideração

Se o pedido for OP_BUY, precisamos do preço de Licitação

Se o pedido for OP_SELL então Pergunte

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 ter explicado as coisas claramente...

 
Alexey Viktorov:

Espero ter me feito entender...

Um... Acho que estamos falando de coisas diferentes novamente. Decidi apenas tentar esclarecer não o método de cálculo da margem (não os cálculos), mas como acontece que na saída da fórmula de cálculo da margem, onde praticamente não trabalhamos com a moeda da margem, obtemos o resultado exatamente na moeda da margem. Pelo menos foi assim que entendi da mensagemir0407. E foi por isso que dei a fórmula de cálculo mais simples, onde ainda não há contabilização por aspas...

Quanto ao resto (o método de intuição), também tentei tudo, mas notei que ainda não foi encontrada uma solução única. Eu misturei os corretores, mas os resultados não, ou seja, na instauração de sua última opção com os parâmetros acima, ainda produz números cósmicos também: https://www.mql5.com/ru/forum/193833/page8#comment_5243991

p.s. Mas obrigado pelos comentários! De qualquer forma eu entendo a maneira de pensar, os cálculos descritos por você)

 
K-2SO:

Erm... Acho que estamos falando de coisas diferentes novamente. Decidi apenas tentar esclarecer não o método de cálculo da margem (não os cálculos), mas como é que a saída da fórmula de cálculo da margem, onde praticamente não trabalhamos com a moeda da margem, obtemos o resultado na moeda da margem. Pelo menos foi assim que entendi da mensagemir0407. E foi por isso que dei a fórmula de cálculo mais simples, onde ainda não há contabilização por aspas...

Quanto ao resto (o método de intuição), também tentei tudo, mas notei que ainda não foi encontrada uma solução única. Eu misturei os corretores, mas os resultados não, ou seja, na instauração de sua última opção com os parâmetros acima, ainda produz números cósmicos também: https://www.mql5.com/ru/forum/193833/page8#comment_5243991

p.s. Mas obrigado pelos comentários! De qualquer forma, entendo a maneira de pensar, os cálculos que você descreveu)

Não quero nem mesmo abrir uma demonstração no Instaurante. Se não for difícil, no depurador pode mostrar quais valores intermediários são obtidos. Como na minha captura de tela


 
Alexey Viktorov:

Não quero nem mesmo abrir uma demonstração na insta. Se você não se importa, no depurador você pode mostrar quais valores intermediários você obtém. Como na minha captura de tela



Mais uma vez, meu azar! Aparentemente, ao analisar seu código, devo ter mudado algo nele (esqueci de devolvê-lo) e é por isso que ele vomitou um erro tão grande. Agora (só para o caso de) recopiou o original - corretamente e na instalação conta. Vou testá-lo com outros corretores então.
 

Tire o chapéu para você, você quase acertou! Em todos os três corretores previamente revisados com diferentes percentuais de margem, o cálculo para o ouro (para pedidos em uma direção) está correto.

Mas o roteiro ainda falha com a exotismo. Eu parei na fxcm broker. A margem percentual para o ouro é de 70000, para pares de moedas convencionais é de 130, a moeda da margem parece ser USD. Eu também não vi nenhum sinal de correção em nenhum lugar! (. Eu mesmo tenho procurado a chave para isso há dois dias e, de fato, como resultado disso, agora estou procurando uma resposta à pergunta, como é que, como resultado dos cálculos das moedas base e suas taxas com moedas cotadas, obtemos uma moeda margem... Talvez seja isto, ou talvez seja o fato de este corretor levar em conta o percentual de margem mesmo para pares de moedas normais.

Aqui você pode baixar o terminal ru.files.fm/u/xfezz883#_ , descompactá-lo, executá-lo usando o arquivo exe, fazer uma demonstração...

 
K-2SO:

Tire o chapéu para você, você quase acertou! Em todos os três corretores previamente revisados com diferentes percentuais de margem, o cálculo para o ouro (para pedidos em uma direção) está correto.

Mas o roteiro ainda falha com a exotismo. Eu parei na fxcm broker. A margem percentual para o ouro é de 70000, para pares de moedas convencionais é de 130, a moeda da margem parece ser USD. Eu também não vi nenhum sinal de correção em nenhum lugar! (. Eu mesmo tenho procurado a chave para isso há dois dias e, de fato, como resultado disso, estou agora procurando uma resposta à pergunta, como é que, como resultado dos cálculos das moedas base e suas taxas com moedas cotadas, obtemos uma moeda margem... Talvez seja isto, ou talvez seja o fato de este corretor levar em conta o percentual de margem mesmo para pares de moedas normais.

Você pode baixar o terminal aqui ru.files.fm/u/xfezz883#_ , descompactá-lo, executá-lo usando o arquivo exe, iniciar a demonstração...

Não é um problema calcular as cruzes. Basta pegar uma cotação, que se traduz da moeda da margem para a moeda do depósito.

Por exemplo, preço EURJPY

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

Se seu depósito for em USD, você deve usar EURUSD. Se você calcular CADJPY, você deve usar USDCAD. Aqui devemos ver como adicionar a moeda de depósito à moeda de margem, não devemos simplesmente inseri-la na lista.

Os balcões não são tão difíceis de ter MarketInfo(símbolo, MODE_MARGINHEDGED). O único problema é encontrar primeiro a moeda cotada, e depois decompor parte dela com a moeda cotada, e o resto - na sua totalidade...

Em geral, vejo que o único benefício deste artigo é que o trader sabe antecipadamente qual margem será tomada quando a ordem pendente for ativada e pode apagar a ordem pendente se não for suficiente a tempo para evitar erros. Uma vez tive dificuldades com isso ao colocar um EA no mercado.

Razão: