← Zurück

newOrder.Comment

Добрый день! Подскажите, пожалуйста, как решить такой момент?:

Я хочу иметь возможность привязывать сделки в терминале к определенной стратегии, чтобы потом после перезапуска стратегии можно было вновь связать сделки к этой же стратегии. Для этих целей пытаюсь прописывать в каждый newOrder.Comment какое-то имя стратегии в качестве идентификатора, а потом при следующем запуске отлавливать по этому имени сделки

1. String OwnStrategyName = "123" // из класса ActionStrategy формируются сделки Ecng.Trading.BusinessEntities.Order newOrder = CreateOrder(Ecng.Trading.BusinessEntities.OrderDirections.Buy, price, _lastPosition.order.Volume);

newOrder.Comment = _OwnStrategyName;

RegisterOrder(newOrder);

  1. Получаю сделки, с комментарием "123" из терминала Name = 123 IEnumerable<Ecng.Trading.BusinessEntities.MyTrade> myTrades = Trader.MyTrades.TakeWhile(t => t.Order.Comment == Name);

//////////////////////////////////////////////////

Проблема в том, что в Comment все время находится "S#". Т.е. после RegisterOrder(newOrder) из 1 пункта, в колонке комментарий таблицы терминала <Мои сделки> появляется "S#" и соответственно при Trader.MyTrades.TakeWhile(t => t.Order.Comment == Name) в t.Order.Comment тоже все время "S#". Как можно разрешить проблему? Заранее благодарю!

War dieses Thema hilfreich?

Thema teilen

Kommentare (5)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Артем
Артем Autor

Попробовал через ClientCode

newOrder.ExtensionInfo = new Dictionary<Object, Object>(); newOrder.ExtensionInfo.Add(Ecng.Trading.Quik.DdeOrderColumns.ClientCode, Name); RegisterOrder(newOrder);

тоже не работает😭

Mikhail Sukhov
Mikhail Sukhov

Артем: Попробовал через ClientCode

newOrder.ExtensionInfo = new Dictionary<Object, Object>(); newOrder.ExtensionInfo.Add(Ecng.Trading.Quik.DdeOrderColumns.ClientCode, Name); RegisterOrder(newOrder);

тоже не работает😭

А ручками комментарий проставляется к заявке из самого Квик? Эта опция по словам квиковцев иногда отключена на стороне брокера, чтобы серверное ПО могло свои комментарии вставлять.

А S# - код клиента, тот что QuikTrader.ClientCode. С использованием newOrder.ExtensionInfo.Add(DdeOrderColumns.ClientCode, "другое имя"); должно работать. У Вас все равно S#?

Артем
Артем Autor

Mikhail Sukhov:

Артем: Попробовал через ClientCode

newOrder.ExtensionInfo = new Dictionary<Object, Object>(); newOrder.ExtensionInfo.Add(Ecng.Trading.Quik.DdeOrderColumns.ClientCode, Name); RegisterOrder(newOrder);

тоже не работает😭

А ручками комментарий проставляется к заявке из самого Квик? Эта опция по словам квиковцев иногда отключена на стороне брокера, чтобы серверное ПО могло свои комментарии вставлять.

А S# - код клиента, тот что QuikTrader.ClientCode. С использованием newOrder.ExtensionInfo.Add(DdeOrderColumns.ClientCode, "другое имя"); должно работать. У Вас все равно S#?

Ручками тоже действительно не вставляется, вообще поля Комментарий нет в заявке.

Мне ClientCode больше нравится, но он, к сожалению не хочет работать... Версию обновлял до 2.6...

newOrder.ExtensionInfo.Add(DdeOrderColumns.ClientCode, "другое имя"); - Вот это вот не работает 😭 . Может быть дело в том. что я регистрирую заявку через RegisterOrder(newOrder) из класса ActionStrategy?

Если менять имя QuikTrader.ClientCode, то работает... Но это не по понятиям получается...

lock (Trader) { ((Ecng.Trading.Quik.QuikTrader)Trader).ClientCode = _OwnStrategyName; RegisterOrder(newOrder); }

Артем
Артем Autor

Не пойму, что произошло, но сегодня код

order.ExtensionInfo = new Dictionary<Object, Object>(); order.ExtensionInfo.Add(Ecng.Trading.Quik.DdeOrderColumns.ClientCode, ClientCode); RegisterOrder(order);

заработал... Видать, я чего-то наковыял с библитеками в Reference солюшена... Все, вопрос закрыт... Спасибо!

Mikhail Sukhov
Mikhail Sukhov

Артем: Не пойму, что произошло, но сегодня код

order.ExtensionInfo = new Dictionary<Object, Object>(); order.ExtensionInfo.Add(Ecng.Trading.Quik.DdeOrderColumns.ClientCode, ClientCode); RegisterOrder(order);

заработал... Видать, я чего-то наковыял с библитеками в Reference солюшена... Все, вопрос закрыт... Спасибо!

Ок, но я все равно добавил соответствующий юнит тест. У меня тоже все работает как часики.