Cáculo de margem requerida antes de abrir operação na B3

 

Olá a todos.

Meu foco na programação sempre foi o mercado Forex, e tudo funciona lindamente por lá. Porém ao programar para a "querida" B3 comecei a ter dificuldades ao calcular a margem requerida antes de abrir uma posição.

Funciona muito bem no Forex mas na B3 sempre reporta como zero, assim toda hora tenho que depender da corretora para me informar a margem vigente.

void OnStart()
  {
    double margem;
    if (OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1,SymbolInfoDouble(_Symbol,SYMBOL_ASK),margem)) {Print("Margem: "+margem);}
    else {Print("Erro: "+GetLastError());}
  }

Alguém já teve uma solução? Abraço.

 

Olá,

A alternativa é criar uma variável e pedir qual a margem necessária por ordem. Exemplo: 25,00.

E usar sempre o valor em dobro para cada posição em aberto (uma para abrir e outra para fechar a posição).

No caso mínimo de 50,00 por ordem. 

Além disso considerar o risco até o Stop Loss e também o deságio do saldo conforme a corretora (pode ser outra variável a ser informada).

Razão: