Przejdź do treści

Szacowanie depozytu zabezpieczającego

W cTrader Windows 4.5 dodaliśmy szacowane obliczenia depozytu zabezpieczającego do Algo API. Innymi słowy, możesz teraz użyć metody, aby sprawdzić, jaka część Twojego depozytu zabezpieczającego zostanie wykorzystana przez nową pozycję lub zlecenie.

Jak działa szacowanie depozytu zabezpieczającego

Aby obliczyć szacowany depozyt zabezpieczający, wywołaj metodę Symbol.GetEstimatedMargin() i przekaż wymagane argumenty, a mianowicie typ transakcji (kupno lub sprzedaż) oraz wolumen zlecenia.

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

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

Ponieważ GetEstimatedMargin() jest metodą interfejsu, możesz jej używać z dowolnymi obiektami Symbol lub SymbolInfo, jak pokazano poniżej.

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

Uwaga

Podczas backtestingu lub optymalizacji metoda GetEstimatedMargin() zwróci szacowany depozyt zabezpieczający bez uwzględnienia ekspozycji.