Feedback sobre a MQL5 - página 4

 

Não há como fazer almofadas

Nenhuma herança múltipla em qualquer forma

Indicadores pouco claros

Sem referências

Política pouco clara de cópia de estruturas. E aulas também.

Não há descrições adequadas de erros e avisos gerados pelo compilador com exemplos.

Problemas com a tipificação de tipos inteiros (e enumeros, eu acho).

Este é apenas um relance rápido.

É que todos estão acostumados a isso. É possível codificar, mas a linguagem da MQL5 certamente não pode ser chamada de fina e milagrosa.

 
Os desenvolvedores só podem ser simpáticos, alguns estão procurando simplicidade e simplicidade, outros querem todas as características das línguas de alto nível e precisam agradar a ambos e fazer tudo funcionar )
 
Renat Fatkhullin:

Dê uma olhada aqui, por favor: https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

Em geral, a margem não pode ser calculada com base em um único instrumento, pois é a sobreposição resultante de diferentes posições/instrumentos. Além disso, na execução da troca, o cálculo da margem pode ser transferido (a troca assim o exige) para a própria troca, o que, baseado em sua lógica complexa e fechada, gera a margem final.

Para uma estimativa integral "terei margem suficiente se fizer esta transação" existe uma função padrão OrderCalcMargin: https://www.mql5.com/ru/docs/trading/ordercalcmargin

Aqui está o código

string txt=NULL;
double GetMarginInitial=0,GetMarginMain=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(!SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL,GetMarginInitial))
     {
      Print(" SYMBOL_MARGIN_INITIAL ",GetLastError());
      return(false);
     }
   txt+="\n"+(string)(GetMarginInitial*SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN));

   if(!SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_MAINTENANCE,GetMarginMain))
     {
      Print(" SYMBOL_MARGIN_MAINTENANCE ",GetLastError());
      return(false);
     }
   txt+="\n"+(string)GetMarginMain;
   
   Comment(txt);
   
   return(INIT_SUCCEEDED);
  }

Em futuros mostra a exigência de margem inicial para um lote de 5800 rublos, mas usando este código no forex diz 0 ...

Na ajuda que diz

SÍMBOLO_MARGIN_INITIAL

A margem inicial (iniciante) indica a quantidade de margem necessária para abrir uma posição de um lote. É utilizado para verificar os fundos do cliente ao entrar no mercado.


E nada mais .... Como calcular a margem para moedas? Vejo apenas uma saída, determinar o tipo de instrumento e depois calcular através de fórmulas.

 
Vladimir Pastushak:

Aqui está o código

Em futuros mostra a exigência de margem inicial para um lote de 5800 rur, mas ao usar este código em forex diz 0 ...

E na referência diz

SÍMBOLO_MARGIN_INITIAL

A margem inicial (iniciante) indica a quantidade de margem necessária para abrir uma posição de um lote. É utilizado para verificação dos fundos do cliente ao entrar no mercado.


E nada mais ....

Sim, este parâmetro é para controlar as exigências de margem para futuros.

Embora para forex possamos (precisamos fazer) nós mesmos recalcular e dar um valor bruto (porque não sabemos o que o trader quer fazer - comprar ou vender) de margem por 1 lote.

 
Фьючерсные объемы для МТ:

Não há como fazer almofadas

Nenhuma herança múltipla em qualquer forma

Faremos isso um pouco mais tarde. Temos a herança de sempre.


Indicadores pouco claros

Sem referências

Há referências e indicações. Eles são seguros e controlados.


Política pouco clara de cópia de estruturas. E das aulas, também.

Precisamente compreensível - estruturas com campos simples (não dinâmicos) são copiadas automaticamente. Para o resto, escreva uma função de cópia.

Já estamos planejando ampliar o mecanismo de cópia de estruturas com alguns tipos dinâmicos (não-classe). Isto facilitará a maior parte do trabalho.


Nenhuma descrição adequada de erros de compilação e avisos com exemplos.

Os textos de erro e aviso são os mesmos/semelhantes aos de outros compiladores. Neste caso, ninguém reinventou uma roda.


Questões de digitação com tipos inteiros (e números inteiros como)

A rigidez do tipo é uma prioridade. É por isso que não é permitida a liberdade Cish de tarefas e conversões perigosas.


A linguagem ainda está em desenvolvimento e em breve atualizaremos seriamente o compilador MQL4/MQL5 quando o novo compilador otimizador (atualmente habilitado através de Optimize=1) for lançado.

 
Serhiy Dotsenko:
dac já escreveu como você pode editar código mql em VS, você não pode compilá-lo, mas você pode editá-lo em VS e pressionar f7 em ME )

Interessado... Onde você o escreveu? E se eu quiser usar as classes padrão, você as encontrará ou terá que digitar de memória?

Estou acostumado com o código, mas o editor ao qual não consigo me acostumar, depois de outros editores, como se eu tivesse mudado para o Bloco de Notas :)

 
sigma7i:

Interessado... Onde você o escreveu? E se eu quiser usar as classes padrão, você as encontrará ou terá que digitar de memória?

Estou acostumado com o código, mas não consigo me acostumar ao editor, depois de outros editores, é como se eu estivesse usando o Bloco de Notas :)

Vamos atualizar o editor também, apenas tivemos outras prioridades.

Talvez abramos o caminho para os plugins.

 
Renat Fatkhullin:

Sim, este parâmetro é para controlar os requisitos de margem para futuros.

Embora para forex, podemos (devemos) recalcular e dar um valor aproximado (porque não sabemos o que um comerciante quer fazer - comprar ou vender) de margem para 1 lote.

Os zeros também são devolvidos para os índices cfd ... A ajuda tem fórmulas que em princípio são suficientes, mas não são comentadas ...

Talvez alguém saiba o que é


Margem: (Lotes*Tamanho do contrato*Preço de mercado*Percentagem)/Alavancagem

Lucro: (fechar_preço_aberto_preço)*Tamanho_de_contrato*Lotes


Porcentagem- o que é isso?
 
Vladimir Pastushak:


Margem: (Lotes*Tamanho do contrato*Preço de mercado*Percentagem)/Alavancagem

Lucro: (fechar_preço_aberto_preço)*Tamanho_de_contrato*Lotes


Porcentagem - ninguém sequer diz uma palavra sobre isso em qualquer parte da documentação.

Veja na ajuda do terminal - https://www.metatrader5.com/ru/terminal/help/trading_advanced/margin_forex
 
Você pode obter estes coeficientes com SymbolInfoMarginRate, tente