マージン見積もり

cTrader Desktop 4.5では、Algo APIに推定マージン計算機能が追加されました。つまり、新しいポジションや注文によってどれくらいのマージンが使用されるかを確認するためのメソッドが利用できるようになりました。

マージン推定の仕組み

推定マージンを計算するには、Symbol.GetEstimatedMargin() メソッドを呼び出し、取引タイプ(買いまたは売り)と注文ボリュームの必要な引数を渡します。

1
2
3
4
var estimatedMargin = Symbol.GetEstimatedMargin(TradeType.Buy, 10000);
if (estimatedMargin > Account.FreeMargin)
    Print("マージンが不足しています");

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($"買い: {Symbols.GetSymbolInfo(UserSymbolName).GetEstimatedMargin(TradeType.Buy, Volume)}");
            Print($"売り: {Symbols.GetSymbolInfo(UserSymbolName).GetEstimatedMargin(TradeType.Sell, Volume)}"); 
        }
    }
}

注意

バックテスト/最適化中に、GetEstimatedMargin() メソッドは、アカウントエクスポージャーを考慮せずに推定マージンを返します。

目次