Estimativa das necessidades de margem na MQL5 - página 7

 
Vladimir:

Você entende que não se trata do código, todos que sabem como recalculá-lo. Mas você adicionou volatilidade à lista de características, cujo impacto você realmente identificou. E se você for mais longe na lenha, você irá reunir cada vez mais lenha. Como levar isso em conta? O caso parece bastante desesperado...

Eu não sei o que você quer dizer.

Tudo isso está descrito nas condições comerciais, nas regras reais de comércio.

O fenômeno é essencialmente comum.

O cálculo é diferente de acordo com isso.

Mas a questão é resolúvel

Como levar em conta - post anterior.
 
Renat Akhtyamov:

Eu não sei o que você quer dizer.

Tudo isso está descrito nas condições comerciais, nas regras reais de comércio.

O fenômeno é comum em sua essência.

Assim, o cálculo é diferente

Mas o problema é resolúvel.

Vou tentar explicar. O algoritmo é o seguinte: observamos várias dezenas de símbolos em várias dezenas de empresas de corretagem. Vou chamá-lo de simplicidade, a rentabilidade esperada de um acordo sobre a margem tomada por ele. É diferente para cada par (símbolo, DC). Incluindo não apenas no momento da abertura da transação. Para selecionar esses símbolos e empresas de corretagem, onde abriremos um negócio, precisamos comparar esse número. Para esta escolha, precisamos estimar a alavancagem, em que limites ela estará em um período esperado antes de fechar a transação. Afinal de contas, teremos que reservar este montante.

Este é o programa máximo. Até agora, eu nem sei se posso tomar OrderCalcMargin() como base para estimar a margem necessária. Que seja apenas a margem para o momento atual. Você disse que à medida que a volatilidade muda, a alavancagem muda. Portanto, teremos que coletar estatísticas - em que faixa muda em cada um dos VC para cada símbolo. Ou será possível encontrar faixas aceitáveis dessas flutuações. O pior seria se se verificasse que a alavancagem varia de forma imprevisível.

Minha pergunta "a OrderCheck() ou OrderCalcMargin() leva em conta as características de alavancagem especificadas na especificação" é um ponto de partida nesta abordagem.
 
Vladimir:

Deixe-me tentar explicar. O algoritmo é o seguinte: várias dezenas de símbolos em várias dezenas de CDs são monitorados. As estimativas são feitas a um certo passo, eu as chamarei de simplicidade a rentabilidade esperada de um negócio sobre a margem tomada por ele. É diferente para cada par (símbolo, DC). Incluindo não apenas no momento da abertura da transação. Para selecionar esses símbolos e empresas de corretagem, onde abriremos um negócio, precisamos comparar esse número. Para esta escolha, precisamos estimar a alavancagem, em que limites ela estará em um período esperado antes de fechar a transação. Afinal de contas, teremos que reservar este montante.

Este é o programa máximo. Até agora, eu nem sei se posso tomar OrderCalcMargin() como base para estimar a margem necessária. Que seja apenas a margem para o momento atual. Você disse que à medida que a volatilidade muda, a alavancagem muda. Portanto, teremos que coletar estatísticas - em que faixa muda em cada um dos VC para cada símbolo. Ou será possível encontrar faixas aceitáveis dessas flutuações. O pior seria se se verificasse que a alavancagem varia de forma imprevisível.

Estou escrevendo pela última vez:

Leia as condições comerciais de uma corretora em particular e você não precisará de nenhuma estatística.

 
Renat Akhtyamov:

Última vez que escrevi:

Você pode mudar a alavancagem a seu próprio critério e você pode conseguir apenas 20 por algumas horas.

//Minha pergunta "a OrderCheck() ou OrderCalcMargin() leva em conta as características de alavancagem especificadas na especificação" é um ponto de partida nesta abordagem.

Atual

Você nunca vê quando chega um e-mail de redução de alavancagem, e pode haver muitos fatores, não é apenas para as eleições nos países. Eles podem mudar a alavancagem da "mosca" a seu critério, você pode definir de 100 para 20, e por apenas algumas horas.

 
Vitaly Muzichenko:

Você já viu uma carta no correio informando-o de uma redução de alavancagem, e pode haver muitos fatores, não apenas nas eleições nacionais. Você também pode não receber uma carta - eles mudam a alavancagem na hora que acham melhor, podem passar de 100 para 20, e por apenas algumas horas.

Vitaly, eu já escrevi o algoritmo de rastreamento na versão anterior, eu mesmo o usei, porque a alavanca era 1:2000

Nas condições comerciais, eles especificam especificamente os limites de mudança de alavancagem, as condições, o tempo, sob quais condições não mudam em nada, etc.

Você também pode mudá-lo na mosca, por isso eu o estava rastreando.

 
Vladimir:.
Minha pergunta "a OrderCheck() ou OrderCalcMargin() leva em conta as características de alavancagem especificadas na especificação" é um ponto de partida nesta abordagem.

Desculpe, em suas próprias palavras:

"não é sobre o código, é sobre todos que podem recalcular".

É provável que você tenha se designado a todos também.

Faça as contas e tudo será
 

Ou talvez o terminal não tenha as informações corretas?
Verifiquei se o terminal envia uma solicitação ao servidor cada vez, ou se tenho fundos suficientes. Encontrei apenas uma corretora na MT5 que registra seus pedidos em duas linhas com dois pontos se não houver quantidade suficiente de dinheiro. Pode ser porque fora do MT5 este terminal é o único conectado a uma conta real, os outros MT5 que eu tenho demo. Log para 6 tentativas manuais de abertura comercial:

2018.07.03 04:59:35.231 Comércios '3038119': compra no mercado 1.26 EURUSD.m
2018.07.03 04:59:35.331 Comércios '3038119': compra no mercado 1.26 EURUSD.m [Sem dinheiro]
2018.07.03 05:00:51.667 Comércios '3038119': compra no mercado 1.26 EURUSD.m
2018.07.03 05:00:51.747 Comércios '3038119': compra falida no mercado 1.26 EURUSD.m [Sem dinheiro]
2018.07.03 05:00:55.001 Comércios '3038119': compra no mercado 1.26 EURUSD.m
2018.07.03 05:00:55.091 Comércios '3038119': compra de mercado 1.26 EURUSD.m [Sem dinheiro]
2018.07.03 05:01:00.008 Comércios '3038119': venda no mercado 1.26 EURUSD.m
2018.07.03 05:01:00.091 Comércios '3038119': venda fracassada no mercado 1.26 EURUSD.m [Sem dinheiro]
2018.07.03 05:01:02.911 Comércios '3038119': venda no mercado 1.26 EURUSD.m
2018.07.03 05:01:03.007 Comércios '3038119': venda fracassada no mercado 1.26 EURUSD.m [Sem dinheiro]
2018.07.03 05:01:05.952 Negócios '3038119': venda no mercado 1.26 EURUSD.m
2018.07.03 05:01:06.035 Negócios '3038119': venda fracassada no mercado 1.26 EURUSD.m [Sem dinheiro]

Intervalos de tempo entre a linha de pedido e a resposta Sem dinheiro (em milissegundos): 100 80 90 83 96 87.
Além disso, o ping do servidor no terminal é de 73,56 ms. Por que o terminal espera por 80 ms ou mais antes de decidir que não é dinheiro suficiente? Parece que ele envia todos os pedidos ao servidor sem verificar a suficiência. Por que isso acontece? Vejo uma razão natural - o terminal não tem as informações necessárias para tal verificação.
E eu sempre tive a certeza de que a mensagem "Não há dinheiro suficiente..." é dada pelo próprio terminal, que não é apenas o envio das decisões do servidor.

Dennis Kirichenko parece ser a resposta mais precisa à minha pergunta https://www.mql5.com/ru/forum/261955/page4#comment_7949343

Renat Akhtyamov, que método você sugeriu em https://www.mql5.com/ru/forum/261955/page2#comment_7945930"Request margin information from the server"? Mesmo que leve um segundo, tudo bem, mas a que tipo de solicitação ao servidor você estava se referindo? Trata-se apenas de uma tentativa de abrir um comércio antecipado para o qual é feita uma estimativa preliminar da margem?

 
Vladimir:

Ou talvez você não tenha as informações corretas em seu terminal?
Comecei a verificar se o terminal envia sempre o pedido ao servidor, ou se ele está verificando a suficiência dos fundos. Encontrei apenas uma corretora na MT5 que registra pedidos em duas linhas mostrando dois pontos em caso de insuficiência de fundos. Pode ser porque fora do MT5 este terminal é o único conectado a uma conta real, os outros MT5 que eu tenho demo. Log para 6 tentativas manuais de abertura comercial:

2018.07.03 04:59:35.231 Comércios '3038119': compra no mercado 1.26 EURUSD.m
2018.07.03 04:59:35.331 Comércios '3038119': compra no mercado 1.26 EURUSD.m [Sem dinheiro]
2018.07.03 05:00:51.667 Comércios '3038119': compra no mercado 1.26 EURUSD.m
2018.07.03 05:00:51.747 Comércios '3038119': compra falida no mercado 1.26 EURUSD.m [Sem dinheiro]
2018.07.03 05:00:55.001 Comércios '3038119': compra no mercado 1.26 EURUSD.m
2018.07.03 05:00:55.091 Comércios '3038119': compra de mercado 1.26 EURUSD.m [Sem dinheiro]
2018.07.03 05:01:00.008 Comércios '3038119': venda no mercado 1.26 EURUSD.m
2018.07.03 05:01:00.091 Comércios '3038119': venda fracassada no mercado 1.26 EURUSD.m [Sem dinheiro]
2018.07.03 05:01:02.911 Comércios '3038119': venda no mercado 1.26 EURUSD.m
2018.07.03 05:01:03.007 Comércios '3038119': venda fracassada no mercado 1.26 EURUSD.m [Sem dinheiro]
2018.07.03 05:01:05.952 Negócios '3038119': venda no mercado 1.26 EURUSD.m
2018.07.03 05:01:06.035 Negócios '3038119': venda fracassada no mercado 1.26 EURUSD.m [Sem dinheiro]

Intervalos de tempo entre a linha de pedido e a resposta Sem dinheiro (em milissegundos): 100 80 90 83 96 87.
Além disso, o ping do servidor no terminal é de 73,56 ms. Por que o terminal espera por 80 ms ou mais antes de decidir que não é dinheiro suficiente? Parece que ele envia todos os pedidos ao servidor sem verificar a suficiência. Por que isso acontece? Vejo uma razão natural - o terminal não tem as informações necessárias para tal verificação.
E eu sempre tive a certeza de que a mensagem "Não há dinheiro suficiente..." é dada pelo próprio terminal, que não é apenas o envio das decisões do servidor.

Dennis Kirichenko parece ter respondido minha pergunta da forma mais precisa https://www.mql5.com/ru/forum/261955/page4#comment_7949343

Renat Akhtyamov, que método você sugeriu em https://www.mql5.com/ru/forum/261955/page2#comment_7945930"Request margin information from the server"? Mesmo que leve um segundo, tudo bem, mas a que tipo de solicitação ao servidor você estava se referindo? Trata-se apenas de uma tentativa de abrir um comércio antecipado para o qual é feita uma estimativa preliminar da margem?

Eu o entendo, é claro.

No início eu não entendia as coisas simples de imediato.

Mais uma vez, aqui está a margem para 1 lote para vender

OrderCalcMargin(ORDER_TYPE_SELLL,_Symbol,1,BID,Mgn)

Mas para a compra

OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1,ASK,Mgn)

A alavancagem é a relação para ela, não mais do que

k=100/alavancagem

como este

E seu registro lhe diz que você não tem dinheiro e não pode abrir um pedido de graça.

Você pode abrir um pedido com dinheiro de demonstração. Entretanto, pelo que entendi, você também não tem nenhum dinheiro de demonstração.

O saldo é zero, não é?
 
Rapazes, me dêem o endereço de uma corretora onde a alavancagem de um símbolo ou a alavancagem de uma conta muda com freqüência. Ou, pelo menos para alguns símbolos, condições de alavancagem separadas.
 

ForexClub.

Verificaram sua margem relativa a este lote usando ::OrderCalcMargin(). Conta real, alavancagem de 1:500.

EURUSDLotePreçoValor do volume, $Margem, $Alavancagem teórica
100 0001.001.16716116 716233.43500

11.001.167161 283 8762 567.75500

51.001.167165 952 51611 905.03500

101.00
1.1671611 788 31623 576.63500


Acontece que a alavancagem não muda quando o volume comercial aumenta, o que não corresponde à Especificação.

Razão: