← Zurück

Определение позиции по инструменту.

Здравствуйте, Михаил Подскажите пожалуйста:

  1. Как определить текущую позицию по инструменту, то есть сколько контрактов и в какую сторону открыто. Думал свойство Strategy.Position за него отвечает, но оно у меня всегда 0
  2. Как получить доступ сегодняшним сделкам внутри стратегии, думал base.Trades, но к сожалению в base.Trades ничего нет.
  3. Не нашел свойство MarketOffsetTime для задания часового пояса

Kommentare (7)

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

denis
denis

по первому пункту: сделал в симплСМА this._trader.ProcessUnknownDdeData += (name, rows) => { // узнаем, что пришедшие данные отвечают за папир if (string.Compare(name, "papir", true) == 0) { foreach (var row in rows) { if ((string)row[0] == "LKOH") } } }; а в квике таблицу лимитов по бумагам со столбцами: 1) "Код бумаги", 2) "Текущий остаток", 3) "Доступно" экспорт запускаю так private void StartDde() { _isDdeStarted = true; _trader.StartDde(); _trader.StartDde("папир"); } а в настройках квика вкладка ДДЕ написано: ДДЕ сервер wrapper, рабочая книга papir а через "редактирование таблицы" ставлю название "папир"

Геннадий Ванин (Gennady Vanin)
Dmitri Kaptsov
Dmitri Kaptsov Autor

Спасибо за помощь. Но вопрос в том, что как часто ProcessUnknownDdeData будет вызываться с параметрами papir? Быть может все-таки есть какое-то свойство. Ну а если нет, то я буду просто хранить все сделки в БД и по ним отслеживать позицию.

denis
denis

как только в порфеле квика изменится один из параметров(переменных) этой таблицы, то по ДДЕ будет отправлено это изменение... на все про все где-то от 10 до 200 миллисекунд, если проц не перегружен осталось только сконверить дабл в инт и передать в стратеги, после чего можно радоваться :)

Dmitri Kaptsov
Dmitri Kaptsov Autor

Ну это нормально:) Тогда наверное так и сделаю. Еще раз спасибо.

Dmitri Kaptsov
Dmitri Kaptsov Autor

Порывшись в документации нашел, что SecurityPnLManager соджержит свойство position. Создав этот менеджер внутри класса стратегии пытаюсь получить к ней достур _securityPnLManager.Position. Но свойство также равен 0. Похоже на баг. Остальные два вопрос до сих пор остаются открытыми.

Mikhail Sukhov
Mikhail Sukhov

Я глянул в доку и заметил, что не описал следующее поведение (но показал в примере SampleSMA). Когда регистрируются заявки, их нужно после регистрации добавлять через Strategy.AddOrder. Это запускает механизм подсчета позиции проскальзывания ПнЛ для данной заявки (а при совокупности заявок - для всей стратегии в целом). Без этого метода Strategy никогда не узнает о том, какие заявки (а следовательно и сделки) прошли через него. Вы так сделали?

true
true

подскажи, пожалуйста,совсем не шарю в программировании(((( каким образом можно передать параметры и как к ним обратится если у меня будет несколько счетов клиента и несколько бумаг по каждому из них??? как обратиться к таблице из стратегии????