Beispiel #1
0
        //Инициализируем алгоритмические заявки
        private void InitializationAlgoOrders()
        {
            //Используем алгоритмические стоп заявки
            _algoStopOrders = new AlgoStopOrders();
            //Выводим в лог сообщение об активации алгоритмической стоп заявки
            _algoStopOrders.Activated += (id, stopPrice) => MessageToLog($"Activated Stop Order ID{id} - Stop Price {stopPrice}");
            //Выводим в лог сообщение о снятии алгоритмической стоп заявки
            _algoStopOrders.Cancelled += (stopPrice, id) => MessageToLog($"Cancelled Stop Order ID{id} - StopPrice {stopPrice}");
            //Выводим в лог сообщение об изменеии трейлинг стоп заявки
            _algoStopOrders.TrailingPriceChanged += (id, stopPrice, price) => MessageToLog($"Trailing Price Changed Stop Order ID{id} - stop price {stopPrice}, order price {price}");
            //Алгоритмическая стоп-заявка исполнилась
            _algoStopOrders.Filled += (price, volume, direction, comment, id) =>
            {
                MessageToLog($"Filled Stop Order ID{id} - {direction}, {comment}");

                //Создаем лимитную заявку для закрытия позиции
                var limitOrder = new Order
                {
                    Type      = OrderType.Limit,
                    Direction = direction,
                    Volume    = volume,
                    Price     = price,
                    Comment   = comment
                };

                //Закрываем позицию
                RegisterOrder(limitOrder);
            };

            //Используем алгоритмическое снятие лимитных заявок по таймеру
            _algoCancelOrdersByTimer = new AlgoCancelOrderByTimer(this, TimeSpan.FromMilliseconds(TimeFrame.TotalMilliseconds * (int)Parameter(7)));
            //Выводим в лог сообщение о деактивации алгоритмической заявки для снятия лимитной заявки по таймеру
            _algoCancelOrdersByTimer.Cancelled += orderId => MessageToLog($"Algo cancel order by timer ID{orderId} deactivated");
        }
Beispiel #2
0
        //Инициализируем алгоритмические заявки
        private void InitializationAlgoOrders()
        {
            //Используем алгоритмические стоп заявки
            _algoStopOrders = new AlgoStopOrders();
            //Регистрируем лимитные заявки сгенерированные алгоритмическими стоп заявками
            _algoStopOrders.LimitOrder += limitOrder => RegisterOrder(limitOrder);
            //Выводим в лог сообщение о снятии алгоритмической стоп заявки
            _algoStopOrders.Cancelled += orderId => MessageToLog($"Algo stop order ID{orderId} cancelled");
            //Выводим в лог сообщение об изменеии трейлинг стоп заявки
            _algoStopOrders.OrderChanged += (orderId, stopPrice, price) => MessageToLog($"Trailing stop ID{orderId} changed - stop price {stopPrice}, order price {price}");

            //Используем алгоритмическое снятие лимитных заявок по таймеру
            _algoCancelOrdersByTimer = new AlgoCancelOrderByTimer(this, TimeSpan.FromMilliseconds(TimeFrame.TotalMilliseconds * (int)Parameter(7)));
            //Выводим в лог сообщение о деактивации алгоритмической заявки для снятия лимитной заявки по таймеру
            _algoCancelOrdersByTimer.Cancelled += orderId => MessageToLog($"Algo cancel order by timer ID{orderId} deactivated");
        }