Ir para o conteúdo

Estimativas de margem

No cTrader Windows 4.5, adicionámos cálculos de margem estimada à API Algo. Por outras palavras, agora pode usar um método para verificar quanto da sua margem será usada por uma nova posição ou uma ordem.

Como funcionam as estimativas de margem

Para calcular a margem estimada, chame o método Symbol.GetEstimatedMargin() e passe os argumentos necessários, nomeadamente o tipo de negociação (compra ou venda) e o volume da ordem.

1
2
3
4
var estimatedMargin = Symbol.GetEstimatedMargin(TradeType.Buy, 10000);

if (estimatedMargin > Account.FreeMargin)
    Print("Not enough margin");

Como GetEstimatedMargin() é um método de interface, pode usá-lo com quaisquer objetos Symbol ou SymbolInfo como mostrado abaixo.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using cAlgo.API;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None)]
    public class ExpectedMargin : Robot
    {
        [Parameter("Volume", DefaultValue = 10000, MinValue = -1)]
        public double Volume {get; set;}

        [Parameter("Symbol Name")]
        public string UserSymbolName {get; set;}

        protected override void OnStart()
        {
            if (string.IsNullOrWhiteSpace(UserSymbolName))
                UserSymbolName = SymbolName;

            Print($"Buy: {Symbols.GetSymbolInfo(UserSymbolName).GetEstimatedMargin(TradeType.Buy, Volume)}");
            Print($"Sell: {Symbols.GetSymbolInfo(UserSymbolName).GetEstimatedMargin(TradeType.Sell, Volume)}"); 
        }
    }
}

Nota

Durante o backtesting ou otimização, o método GetEstimatedMargin() retornará a margem estimada sem ter em conta a exposição.