Не удается получить в программе SampleConsole.exe портфель

Не удается получить в программе SampleConsole.exe портфель
Atom
8/6/2010
hazarin


Не удается получить в программе SampleConsole.exe портфель.
При подключении к запущенному Квику проходит успешно подключение к
программе, запрашивается номер счета. Затем рапортует о том что найден
инструмент LKOH... И заканчивается на ожидании поиска Портфеля. Было
бы интересно узнать, что программа имеет ввиду под портфелем,
поскольку настройки в Квике загружены из файла info_micex.wnd . Вроде
все должно быть что нужно.

Tags:


Thanks:


< 1 2 3  >
Oldman

Avatar
Date: 9/12/2011
Reply


Добрый день всем, подскажите куда смотреть.
QUIK 5.23.0.119 (под УБ)
Stock# 3.2.10
Опыта в программировании 0
Разбираю SampleConsole пример, не запускается торговый алгоритм из примера.
В коде заменил только Лукойл, на местный инструмент ALMK
+ проверял настройки Verifier'ом - без ошибок (так как готовые .wnd файлы не подходят для УБ)

Результат работы консольного приложения:


Экспорт по dde Инструмент, Мои сделки, Позиции по бумагам, Стакана - запускается.

Пробовал заменить строчку, как указывали выше на
Quote:
trader.Terminal.StartDde(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPortfoliosTable);
- не помогло.
Поставил запуск dde обеих таблиц
Quote:
trader.StartExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPortfoliosTable, trader.EquityPositionsTable);

В терминале пробовал покупать-продавать инструмент, чтобы в консоли сделка прошла - не появились сделки.

Я так подозреваю, что в событие trader.NewPortfolios += portfolios =>
у меня не полностью отработало (хотя ошибок компилятор не выдавал), а именно не выдало сообщение "Портфель {0} появился."
Также не отработало trader.NewMyTrades += myTrades =>
поскольку не появляются сделки.

Посоветуйте пожалуйста, в какую сторону курить мануал, дабы довести пример до рабочего состояния? :)
Thanks:

Church

Avatar
Date: 9/12/2011
Reply


Подозреваю, что вы что-то не то пишете в качестве портфеля (у меня на демо он = логину).
Попробуйте вывести список trader.Portfolios.
Thanks:

Alexander

Avatar
Date: 9/12/2011
Reply


ProcessDataError что-нибудь выводит?
Thanks:

Oldman

Avatar
Date: 9/13/2011
Reply


Church
Подозреваю, что вы что-то не то пишете в качестве портфеля (у меня на демо он = логину).
Попробуйте вывести список trader.Portfolios.


У меня логин = Код клиента
А номер счета, судя по мануалам = Счет депо (пробую робота для спот площадки)



Alexander
ProcessDataError что-нибудь выводит?


Пробую разобраться как это событие подключить в пример.

Вариант #1, в начало кода добавил
Quote:

// создаем шлюз к Quik-у
using (var trader = new QuikTrader(quikPath))
{
// необходимо раскомментировать, если идет работа с РТС Стандарт
//trader.FormatTransaction += builder => builder.RemoveInstruction(TransactionBuilder.ExecutionCondition);

//события ошибок
trader.ProcessDataError += error => Console.WriteLine(error);
{
Console.WriteLine("Errors:");
};

Сообщение Errors: выводится, но ошибок нету.

Вариант #2 из примера SampleFewQuiks
Quote:

//события ошибок
trader.ProcessDataError += OnError;

в конец кода:
private static void OnError(Exception error)
{
Console.WriteLine(error);
}

Ошибок при компилировании нету, но и результата нет.
Thanks:

Alexander

Avatar
Date: 9/13/2011
Reply


Покажите таблицу портфелей для ммвб.
И что выводит Trader.Portfolios?
Thanks:

Oldman

Avatar
Date: 9/13/2011
Reply


Alexander
Покажите таблицу портфелей для ммвб.
И что выводит Trader.Portfolios?

я на УБ работаю, а не ММВБ (но с точки зрения Квика наверное разницы нет, так как это клон ММВБ)

Таблицы пустые, но опций чтобы создать портфель не нашел, при этом торговать можно нормально.


Событие trader.NewPortfolios += portfolios =>
ничего не выводит (нету сообщения о том, что Портфель {0} появился.)
Thanks:

Alexander

Avatar
Date: 9/13/2011
Reply


Вы меня не поняли.
Выведите portfolios.

раз Test0 выводит - значит какие-то портфели приходят.
вы просто не тот портфель ищите.
посмотрите какие приходят - распечатаейте все portfolios - Name в частности.
И посмотрите на account - он небось ни с одним Name не совпадает.

И покажите скриншот таблицы с порфтелями в квике, а не настройки для портфелей qpile :)
Thanks: Oldman

Oldman

Avatar
Date: 9/14/2011
Reply


Портфель:


С выводом portfolios заминка, точнее заминка с основами программирования :)
Нашел ваш пример (кусок кода), в другой теме для такого вывода.

Code

    trader.NewPortfolios += portfolios =>
                        
                        {
                            var portfolioString = "";
                             foreach (var portfolio in portfolios)
                                 {
                                  portfolioString += portfolio.Name + " : " + portfolio.Exchange + " : " + portfolio.BeginAmount + " : " +
                                  portfolio.CurrentAmount + " : " + portfolio.Commission + " : " + portfolio.Leverage + 
                                  Environment.NewLine;
                                  portfolioString +=
                                  };
                              
                            if (_portfolio == null)
                            {
                                // находим ALMK и присваиваем ее переменной ALMK
                                _portfolio = portfolios.FirstOrDefault(p => p.Name == account);

                                if (_portfolio != null)
                                {
                                    Console.WriteLine("Портфель {0} появился.", account);

                                    // если инструмент и стакан уже появились,
                                    // то извещаем об этом основной поток для выставления заявки
                                    if (_ALMK != null && _depth != null)
                                        waitHandle.Set();
                                }
                            }
                                                       
                        };



Вставленный код не компилируется - ошибка в 13ой строке Invalid expression term '}'
Изучаю гугл, на предмет того чем структура {} не подошла.
Thanks:

Alexander

Avatar
Date: 9/14/2011
Reply


Oldman
Портфель:


С выводом portfolios заминка, точнее заминка с основами программирования :)
Нашел ваш пример (кусок кода), в другой теме для такого вывода.

Code

    trader.NewPortfolios += portfolios =>
                        
                        {
                            var portfolioString = "";
                             foreach (var portfolio in portfolios)
                                 {
                                  portfolioString += portfolio.Name + " : " + portfolio.Exchange + " : " + portfolio.BeginAmount + " : " +
                                  portfolio.CurrentAmount + " : " + portfolio.Commission + " : " + portfolio.Leverage + 
                                  Environment.NewLine;
                                  portfolioString +=
                                  };
                              
                            if (_portfolio == null)
                            {
                                // находим ALMK и присваиваем ее переменной ALMK
                                _portfolio = portfolios.FirstOrDefault(p => p.Name == account);

                                if (_portfolio != null)
                                {
                                    Console.WriteLine("Портфель {0} появился.", account);

                                    // если инструмент и стакан уже появились,
                                    // то извещаем об этом основной поток для выставления заявки
                                    if (_ALMK != null && _depth != null)
                                        waitHandle.Set();
                                }
                            }
                                                       
                        };



Вставленный код не компилируется - ошибка в 13ой строке Invalid expression term '}'
Изучаю гугл, на предмет того чем структура {} не подошла.




то что замазано - одинаково? а то непонятно.
да и смысл замазывать? :))

на 13 строчке того кода что вы вставили никакого "}" нет.


В вашем коде:
_portfolio = portfolios.FirstOrDefault(p => p.Name == account);


ещё раз задам вопрос, т.к. он остался без ответа. чему здесь равен account?


ЗюЫю В вашем коде "portfolioString +=" - лишнее. Как раз из-за этого ошибка. После цикла сделайте вывод portfolioString в тот же самый MessageBox и скопируйте его содержание.
Thanks: Oldman

Oldman

Avatar
Date: 9/14/2011
Reply


Да, на скриншотах значение Код Клиента одинаковое. (привычка затирать персонифицированные данные уже не помню откуда началась у меня)

:)

Alexander

В вашем коде:
_portfolio = portfolios.FirstOrDefault(p => p.Name == account);
ещё раз задам вопрос, т.к. он остался без ответа. чему здесь равен account?


В начале кода я прописал:
var account = "test0";

Alexander

ЗюЫю В вашем коде "portfolioString +=" - лишнее. Как раз из-за этого ошибка. После цикла сделайте вывод portfolioString в тот же самый MessageBox и скопируйте его содержание.


О :) Огромное спасибо, заработало :)

invst1408 : : 0 RUB : 0 RUB : 0 : 0

Получается что, портфель определился верно, но не задетектилась Биржа (portfolio.Exchange)?
Thanks:
< 1 2 3  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy