Overall Statistics
Total Trades
2
Average Win
0.10%
Average Loss
0%
Compounding Annual Return
1.607%
Drawdown
10.200%
Expectancy
0
Net Profit
4.724%
Sharpe Ratio
-0.159
Probabilistic Sharpe Ratio
5.131%
Loss Rate
0%
Win Rate
100%
Profit-Loss Ratio
0
Alpha
-0.012
Beta
-0.07
Annual Standard Deviation
0.064
Annual Variance
0.004
Information Ratio
0.03
Tracking Error
0.362
Treynor Ratio
0.144
Total Fees
â‚®4.03
Estimated Strategy Capacity
â‚®39000000.00
Lowest Capacity Asset
BTCUSDT 2V3
Portfolio Turnover
0.01%
#region imports
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Globalization;
    using System.Drawing;
    using QuantConnect;
    using QuantConnect.Algorithm.Framework;
    using QuantConnect.Algorithm.Framework.Selection;
    using QuantConnect.Algorithm.Framework.Alphas;
    using QuantConnect.Algorithm.Framework.Portfolio;
    using QuantConnect.Algorithm.Framework.Execution;
    using QuantConnect.Algorithm.Framework.Risk;
    using QuantConnect.Parameters;
    using QuantConnect.Benchmarks;
    using QuantConnect.Brokerages;
    using QuantConnect.Util;
    using QuantConnect.Interfaces;
    using QuantConnect.Algorithm;
    using QuantConnect.Indicators;
    using QuantConnect.Data;
    using QuantConnect.Data.Consolidators;
    using QuantConnect.Data.Custom;
    using QuantConnect.DataSource;
    using QuantConnect.Data.Fundamental;
    using QuantConnect.Data.Market;
    using QuantConnect.Data.UniverseSelection;
    using QuantConnect.Notifications;
    using QuantConnect.Orders;
    using QuantConnect.Orders.Fees;
    using QuantConnect.Orders.Fills;
    using QuantConnect.Orders.Slippage;
    using QuantConnect.Scheduling;
    using QuantConnect.Securities;
    using QuantConnect.Securities.Equity;
    using QuantConnect.Securities.Future;
    using QuantConnect.Securities.Option;
    using QuantConnect.Securities.Forex;
    using QuantConnect.Securities.Crypto;   
    using QuantConnect.Securities.Interfaces;
    using QuantConnect.Storage;
    using QuantConnect.Data.Custom.AlphaStreams;
    using QCAlgorithmFramework = QuantConnect.Algorithm.QCAlgorithm;
    using QCAlgorithmFrameworkBridge = QuantConnect.Algorithm.QCAlgorithm;
#endregion

public class BybitBrokerageExampleAlgorithm : QCAlgorithm
{
    private Symbol _symbol;
    public override void Initialize()
    {
        SetStartDate(2021, 1, 1);
        SetAccountCurrency("USDT", 100_000);

        SetBrokerageModel(BrokerageName.Bybit, AccountType.Margin);

        _symbol = AddCryptoFuture("BTCUSDT", Resolution.Minute).Symbol;

        // Set default order properties
        DefaultOrderProperties = new BybitOrderProperties
        {
            TimeInForce = TimeInForce.GoodTilCanceled,
            PostOnly = false,
            ReduceOnly = false
        };
    }

    public override void OnData(Slice data)
    {
        if (Portfolio.Invested)
            return;

        // Place an order with the default order properties
        MarketOrder(_symbol, 0.1);

        // Place an order with new order properties
        var orderProperties = new BybitOrderProperties
        {
            TimeInForce = TimeInForce.GoodTilCanceled,
            PostOnly = true,
            ReduceOnly = false
        };
        var ticket = LimitOrder(_symbol, -0.5m, Math.Round(data[_symbol].Price + 5000, 1), orderProperties: orderProperties);

        // Update the order
        var orderFields = new UpdateOrderFields
        {
            Quantity = -0.4m,
            LimitPrice = Math.Round(data[_symbol].Price + 1000, 1),
            Tag = "Informative order tag"
        };
        var response = ticket.Update(orderFields);
        if (!LiveMode && response.IsSuccess)
        {
            Debug("Order updated successfully");
        }
    }
}