Для изменения размера нажмите или перетащите
Синтетика

Для построения синтетических позиций по опционам (или, наоборот, опционных позиций по базовому инструменту) можно воспользоваться специальным классом Synthetic. Данный класс через методы SyntheticBuy и SyntheticSell возвращает комбинацию из синтетических инструментов для определения их возможной позиции.

Синтетическую комбинацию можно использовать совместно с определением степени ликвидности по опциону (когда нет возможности реализовать необходимую позицию). Для этого можно воспользоваться методами анализа ликвидности стакана TraderHelperGetTheoreticalTrades:

C#
// получить стакан опциона
var depth = trader.GetMarketDepth(option);

// получить теоритические сделки на покупку 100 контрактов
var trades = depth.GetTheoreticalTrades(OrderDirections.Buy, 100);

// расчитать реализованный объем
var matchedVolume = trades.Sum(t => t.Trade.Volume);

// регистрируем заявку по основному опциону
trader.RegisterOrder(new Order
{
    Security = option,
    Volume = matchedVolume,
    Direction = OrderDirections.Buy,
    // максимальная цена, чтобы реализовать требуемый объем
    Price = trades.Max(t => t.Trade.Price),
});

// определяем оставшийся объем
var elapsedVolume = 100 - matchedVolume;

// если реализованный объем меньше планируемого
if (elapsedVolume > 0)
{
    // получаем синтетические инструменты
    var syntheticBuy = new Synthetic(option).Buy();

    // регистрируем оставшийся объем по синтетическим инструментам
    foreach (var pair in syntheticBuy)
    {
        trader.RegisterOrder(new Order
        {
            Security = pair.Key,
            Volume = elapsedVolume,
            Direction = pair.Value,
            Price = pair.Key.LastTrade.Price,
        });
    }
}

Аналогично опционам также можно получить опционную позицию для базового инструмента через методы SyntheticBuy(Decimal) и SyntheticSell(Decimal).