Beispiel #1
0
        private void OpenOrder(int dealSign, string symbol, CandleDataBidAsk lastCandle)
        {
            // функция считает и округляет объем входа
            var volume = CalculateVolume(symbol, base.Leverage);

            if (volume == 0)
            {
                events.Add(string.Format("{0} {1} отменена - объем равен 0",
                                         dealSign > 0 ? "покупка" : "продажа", symbol));
                return;
            }

            var enterPrice = dealSign > 0 ? lastCandle.closeAsk : lastCandle.close;
            var point      = pointCost[symbol];
            var stopLoss   = enterPrice - dealSign * (float)point * StopLossPoints;
            var takeProfit = enterPrice + dealSign * (float)point * TakeProfitPoints;
            var order      = new MarketOrder
            {
                Symbol        = symbol,                     // Инструмент по которому совершается сделка
                Volume        = volume,                     // Объём средств, на который совершается сделка
                Side          = dealSign,                   // Устанавливаем тип сделки - покупка или продажа
                StopLoss      = stopLoss,                   // Устанавливаем величину Stop loss для открываемой сделки
                TakeProfit    = takeProfit,                 // Устанавливаем величину Take profit для открываемой сделки
                ExpertComment = "TornAssholeRobot"          // Комментарий по сделке, оставленный роботом
            };
            var status = NewOrder(order,
                                  OrderType.Market, // исполнение по рыночной цене - можно везде выбирать такой вариант
                                  0, 0);            // последние 2 параметра для OrderType.Market не имеют значения

            if (status != RequestStatus.OK)
            {
                events.Add(string.Format("Ошибка добавления ордера ({0}): {1}",
                                         order.ToStringShort(), status));
            }
        }