Перейти к содержанию

Оценка маржи

В cTrader Windows 4.5 мы добавили расчеты оценочной маржи в Algo API. Другими словами, теперь вы можете использовать метод для проверки того, какая часть вашей маржи будет использована новой позицией или ордером.

Как работает оценка маржи

Чтобы рассчитать оценочную маржу, вызовите метод Symbol.GetEstimatedMargin() и передайте необходимые аргументы, а именно тип сделки (покупка или продажа) и объем ордера.

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

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

Поскольку GetEstimatedMargin() является методом интерфейса, вы можете использовать его с любыми объектами Symbol или SymbolInfo, как показано ниже.

 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)}"); 
        }
    }
}

Примечание

Во время бэктестинга или оптимизации метод GetEstimatedMargin() будет возвращать оценочную маржу без учета экспозиции.