newOrder.Comment
Atom Ответить
01.12.2010


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

Я хочу иметь возможность привязывать сделки в терминале к определенной стратегии, чтобы потом после перезапуска стратегии можно было вновь связать сделки к этой же стратегии. Для этих целей пытаюсь прописывать в каждый 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);

2. Получаю сделки, с комментарием "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#".
Как можно разрешить проблему?
Заранее благодарю!

Теги:


Спасибо:




5 Ответов
Артем

Фотография
Дата: 01.12.2010
Ответить


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

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

тоже не работаетCrying
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.12.2010
Ответить


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

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

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


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

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

Артем

Фотография
Дата: 01.12.2010
Ответить


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

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

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


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

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


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

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

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

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

lock (Trader)
{
((Ecng.Trading.Quik.QuikTrader)Trader).ClientCode = _OwnStrategyName;
RegisterOrder(newOrder);
}
Автор топика
Спасибо:

Артем

Фотография
Дата: 02.12.2010
Ответить


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

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

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 02.12.2010
Ответить


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

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

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


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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy