Я экспортирую в свою программу по DDE и с позициями по инструментам есть такая проблема: 1. Покупаю один лот чего-нибудь - появляется строчка Т2 с позицией. Она выгружается, всё хорошо. 2. Продаю это же самое день в день - строчка пропадает, но при этом ничего не выгружается и у меня зависает фантомная позиция.
Есть ли какие-нибудь варианты? Хорошо бы, чтобы уведомления о нуле приходили.
Пожалуйста, продемонстрируйте описываемый эффект при экспорте по DDE на примере снимка экрана, в котором было бы видно таблицу, в которой было бы видно результате экспорта до/после появления "фантомной позиции", желательно, чтобы при этом аналогично было видно что по конкретно этой позиции отображается в рабочем месте QUIK. Также просим представить параметры, с которыми выполняется экспорт таблицы. Дополнительно, если на снимках экрана не будет видно - просим уточнить версию рабочего места QUIK (указано в заголовке окна).
Касательно уведомлений - настроить оповещения в рабочем месте по тому, или иному изменению позиций в таблицах "Позиции по деньгам", "Позиции по инструментам", "Состояние счёта" и др. в текущей реализации нельзя. Можем зарегистрировать пожелание на соответствующую доработку. Правильно понимаем, что данный функционал Вас интересует независимо от ситуации, возникающей при экспорте, и Вам хотелось бы иметь возможность настраивать оповещения в рабочем месте в случае, если позиция по инструменту оказывается нулевой, правильно, регистрируем? При необходимости - просьба уточнить суть пожелания.
Мне кажется, мы используем разные термины. Проблема такая: 1. При входе в позицию при DDE экспорте формируется массив строк (в формате xltable). 2. При выходе из позиции формируется массив строк, в нём не будет строки с данными закрытой позиции, она пропадёт из таблицы и не породит запись в формате xltable.
Говоря об "уведомлениях" я имел ввиду, что я не получу запись о том, что конкретно закрытая позиция была закрыта по dde.
Не вполне понятно где Вы наблюдаете эти сообщения и каким образом их формируете, если делаете это самостоятельно (полагаем, что это так исходя из Ваших комментариев о том, что некоторые поля у Вас есть возможность назвать самостоятельно). Лог, который предоставляет наш модуль dde2excel.dll записывается в файл quik_dde.log, если такой файл заранее создан в каталоге с рабочим местом, и записи об экспорте, вставке и обновлении строк там выглядят иначе, нежели демонстрируете Вы. По всей видимости, Ваши сообщения каким-либо образом формируются на основании обновления таблицы Excel.
Экспорт по DDE-предполагает обновление и изменение соответствующих записей в таблице-приёмнике, при их изменении в таблице-источнике. У Вас для таблицы "Позиции по инструментам" выключена опция "Показывать нулевые позиции". Это приводит к тому, что при закрытии позиции - запись удаляется из таблицы-источника QUIK, т.к. она удаляется оттуда, то она не экспортируется в Excel, это приводит к тому, что соответствующая запись в таблице Excel не обновляется, и для неё отображаются данные до её закрытия. Если открыть позицию по другому инструменту - то "фантомная" закрытая позиция в таблице-приёмнике будет переписана на эту новую открытую позицию.
Исходя из вышеизложенных соображений полагаем, что именно об этой ситуации Вы и говорите, и задача может быть решена настройками отображения таблицы QUIK и/или соответствующими модификациями Вашей программы. Соответственно, чтобы оперативно отслеживать закрытие позиций - рекомендуем включить опцию "Показывать нулевые позиции". В этом случае закрытие позиции будет также фиксироваться в таблице Excel, и может быть соответствующим образом обработано Вашей программой.
foobar написал: Есть ли какие-нибудь варианты? Хорошо бы, чтобы уведомления о нуле приходили.
Такое ощущение что порой поддержка специально не понимает о чем речь :)
Смотри. Позиция по Т2, которую ты хочешь анализировать, она существует только тогда когда позиция переносится через торговую сессию (грубо говоря через день). А в твоём случае, ты открыл сегодня, у тебя появилось Т0, надо контролировать, потом закрыл в этот же день и Т0 исчезла. Все, позиция закрыта, Т2 не будет.
Другими словами Т2 - это послезавтра. Т0 - сегодня. Поскольку ты сегодня же закрыл позицию, то в Т2 ее и нет.
Мне кажется тебе вообще будет достаточно контролировать только позицию по Т0 и все будет считаться нормально.
А с Т0 будут аналогичные проблемы, разве нет? Проблема скорее в том, что для пользователей экселя проблемы нет - у них вся область перерисуется. Идея была в том, что при закрытии позиции получать подтверждение по таблице Лимитов, что позиция была действительно закрыта. Я сейчас повесил анализ на доступный остаток = 0, это немного криво, так как позиция закрывается до исполнения ордера, но хоть что-то