событие NewPortfolios
Atom Ответить
20.09.2010


Добрый день.
Почему-то в примере SimpleConsole не срабатывает событие
NewPortfolios. Программа так и остается в ожидании сигнала из другого
потока.

WindowsXP SP3, Quik 5.17.0.165, S# 2.2
запускаю на вечерней сессии, virifier проверил (пришлось удалить одну
колонку из окна 'инструменты', в прилагающейся к примерам конфигурации
квика)
соединение с квиком проходит, затем появляются securities, и на этом
все заканчивается.

Теги:


Спасибо:




21 Ответов
Mikhail Sukhov

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


Обновите до 2.4. Экспорт портфелей изменился (до этого бралось из
таблицы позиций и они судя по повоедению пусты). Теперь информация о
них идет из окна управления счетами.

А что за колонку удалили? Если не составит труда и решите перейти на
новую версию, можете сказать, в текущем дистрибутиве так же?

Спасибо:

Алексей

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


S# версия 2.4
файл конфигурации info_rts_micex.wnd

проеряю на соответствие площадке ММВБ
В таблице 'инструменты' по индексу 9 должна быть колонка 'Время
последней сделки' вместо колонки 'Время последнего изменения'.

убираю этот столбец, проверка проходит.
однако после этого при проверке РТС ситуация обратная
В таблице 'инструменты' по индексу 9 должна быть колонка 'Время
последнего изменения' вместо колонки 'Время последней сделки'.

Мне представлялось что в этом файле конфигурации универсальная
настройка для квика.

ну и после всего ММВБ(срочный рынок)
В таблице 'инструменты' по индексу 11 должна быть колонка 'Количество
контрактов в последней сделке' вместо колонки 'Количество в последней
сделке'.

экспорт портфеля заработал на новой версии, спасибо.
Автор топика
Спасибо:

Mikhail Sukhov

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


Все правильно. Вот что написано в документации

https://stocksharp.ru/doc/help/html/5c13da7b-b6e4-4fd4-958a-66c93c58b941.htm


Файлы имеют следующее разграничение и их необходимо использовать в
случаях:

* info_micex.wnd - подключение только к площадке ММВБ .
* info_rts.wnd - подключение только к площадке РТС .
* info_rts_micex.wnd - одновременное подключение в площадкам РТС и
ММВБ . Для использования данного файла необходимо прочитать раздел
Модификация стандартных таблиц.

А Вы берете файл для одновременного подключения и проверяете его как
на единичное. Поэтому Verifier и ругается.

Спасибо:

curious

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


Алексей Перейти
Почему-то в примере SimpleConsole не срабатывает событие NewPortfolios. Программа так и остается в ожидании сигнала из другого потока.


Аналогичная проблема.
QUIK 6.00.0.323
Stock# 4.0.17

У Verifier'а претензий нет.

Что вообще в данном случае понимается под портфелем: код клиента из таблицы "Портфель по бумагам", торговый счёт из "Портфеля по деривативам", любое из них, что-то другое?

П.С.: в п. 3 раздела документации "Создание первого робота" (QUIK) опечатка в комменте подписки на новый портфель
Цитата:
// находим Лукойл и присваиваем ее переменной lkoh
Спасибо:

Alexander

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


Что за очепятка?
её на его? :)
Спасибо:

curious

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


Alexander Mukhanchikov Перейти
Что за очепятка?
её на его? :)


Цитата:
// находим Лукойл и присваиваем ее переменной lkoh
_portfolio = portfolios.FirstOrDefault(p => p.Name == account);


В этом месте не бумагу, а портфель ищем :)
Спасибо:

Alexander

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


Спасибо, исправил.
Спасибо:

curious

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


Александр,

а что с основным вопросом? В чем может быть проблема?
Цитата:
Аналогичная проблема.
QUIK 6.00.0.323
Stock# 4.0.17

У Verifier'а претензий нет.

Что вообще в данном случае понимается под портфелем: код клиента из таблицы "Портфель по бумагам", торговый счёт из "Портфеля по деривативам", любое из них, что-то другое?
Спасибо:

Alexander

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


Экспорт идёт по таблице с портфелями?

Портфель для ммвб - это то что с бумагами, на фортсе - с деривативами.
В Trader.Portfolios будет и тот и тот.

Посмотрите SampleQuik, Портфели.
Спасибо:

curious

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


Alexander Mukhanchikov Перейти
Экспорт идёт по таблице с портфелями?

Портфель для ммвб - это то что с бумагами, на фортсе - с деривативами.
В Trader.Portfolios будет и тот и тот.

Посмотрите SampleQuik, Портфели.


Идёт экспорт по таблице "инструменты", по таблице "портфель по бумагам", но не по таблице "портфель по деривативам".
Запускаю пример SampleConsole для QUIK.
Спасибо:

Alexander

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


curious Перейти
Alexander Mukhanchikov Перейти
Экспорт идёт по таблице с портфелями?

Портфель для ммвб - это то что с бумагами, на фортсе - с деривативами.
В Trader.Portfolios будет и тот и тот.

Посмотрите SampleQuik, Портфели.


Идёт экспорт по таблице "инструменты", по таблице "портфель по бумагам", но не по таблице "портфель по деривативам".
Запускаю пример SampleConsole для QUIK.


А в портфеле по бумагам у вас какие есть портфели?
Для SampleQuik какие портфели отображаются?
Спасибо:

curious

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


Alexander Mukhanchikov Перейти

А в портфеле по бумагам у вас какие есть портфели?
Для SampleQuik какие портфели отображаются?


Александр, в портфеле по бумагам у меня пусто. Есть только FORTS'овский счет в портфеле по деривативам.

Что значит SampleQuik? Есть пример Sample, есть SampleConsole.
С первым примером в портфелях отображается FORTS'овский счёт, а вот со вторым проблема: событие появления нового портфеля не происходит.
Спасибо:

Alexander

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


Вы ждёте портфеля по ММВБ, которого у вас нет.
Раз нет портфеля - можно не ждать, он не придёт. :)
Спасибо:

Moadip

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


curious Перейти

С первым примером в портфелях отображается FORTS'овский счёт, а вот со вторым проблема: событие появления нового портфеля не происходит.


Думаю в этом посте найдете ответ на свой вопрос.
Спасибо: curious

curious

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


Alexander Mukhanchikov Перейти
Вы ждёте портфеля по ММВБ, которого у вас нет.
Раз нет портфеля - можно не ждать, он не придёт. :)


Alexander Mukhanchikov Перейти

Портфель для ммвб - это то что с бумагами, на фортсе - с деривативами.
В Trader.Portfolios будет и тот и тот.


Александр,
всё-таки, событие NewPortfolios обрабатывает только ММВБ'шные портфели или FORTS'овские тоже?!
Спасибо:

Alexander

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


Для всех существующих портфелей.
Спасибо:

curious

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


Alexander Mukhanchikov Перейти
Для всех существующих портфелей.


Александр,
тогда повторю свой вопрос: почему при отсутствии ММВБ'шного портфеля и наличии FORTS'овского событие NewPortfolios может не происходить в примере SampleConsole?
Спасибо:

Alexander

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


curious Перейти
Alexander Mukhanchikov Перейти
Для всех существующих портфелей.


Александр,
тогда повторю свой вопрос: почему при отсутствии ММВБ'шного портфеля и наличии FORTS'овского событие NewPortfolios может не происходить в примере SampleConsole?


Потому что не запущен экспорт по нужной таблице.
Смотрите как идёт работа с экспортом в SampleQuik.
Спасибо:

curious

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


Moadip Перейти
curious Перейти

С первым примером в портфелях отображается FORTS'овский счёт, а вот со вторым проблема: событие появления нового портфеля не происходит.


Думаю в этом посте найдете ответ на свой вопрос.


Пропустил ваш ответ.
Действительно, следующая замена решает проблему:
Код

trader.StartExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPositionsTable,
          trader.EquityPortfoliosTable, trader.OrdersTable, trader.DerivativePositionsTable, trader.DerivativePortfoliosTable);
 
...
 
trader.StopExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPositionsTable,
          trader.EquityPortfoliosTable, trader.OrdersTable, trader.DerivativePositionsTable, trader.DerivativePortfoliosTable);



Alexander Mukhanchikov Перейти

Потому что не запущен экспорт по нужной таблице.
Смотрите как идёт работа с экспортом в SampleQuik.


Вопрос снят.
Спасибо:

Algonavt

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


У меня обратная проблема - NewPortfolios отлично срабатывает на появление портфеля по деривативам, но появление таблиц "Портфель по бумагам" и "Позиции по бумагам" не порождают это событие. В чем я ошибаюсь?

Код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;

using Ecng.Common;

using StockSharp.BusinessEntities;
using StockSharp.Quik;
using StockSharp.Algo;

class Program
{
	
	static void Main()
	{
		try
		{
			var quikDefaultPath = @"C:\Documents and Settings\User\Рабочий стол\Quik (StockSharp tests)\info.exe";
			
			var quikPath = QuikTerminal.GetDefaultPath();
			var quikLogin = "***";
			var quikPassword = "***";

			if (quikPath.IsEmpty())
			{
				Console.WriteLine("Не найден ни один запущенный Quik, пробуем запустить Quik из " + quikDefaultPath);
				quikPath = quikDefaultPath;
			}
			else
				Console.WriteLine("Запущенный Quik найден по пути " + quikPath);

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

					// подписываемся на событие успешного подключения
					// все действия необходимо производить только после подключения
					trader.Connected += () =>
					{
						Console.WriteLine("Подключение было произведено успешно.");

						// извещаем об успешном соединении
						waitHandle.Set();
					};

					// подписываемся на событие обновления портфеля
					trader.NewPortfolios += portfolios =>
					{
						foreach (var p in portfolios)
							Console.WriteLine("Найден портфель: {0}" +
							                  "\nExchange: {1}", p.Name, p.Exchange);
						waitHandle.Set();
					};
					
					Console.WriteLine("Производим подключение...");

					if (!trader.Terminal.IsLaunched)
					{
						trader.Terminal.Launch();
						trader.Terminal.Login(quikLogin, quikPassword);
					}
					trader.Connect();

					// дожидаемся события об успешном соединении
					waitHandle.WaitOne();

					Console.WriteLine("Запускаем экспорт таблиц по DDE");
					
					// запускаем экспорт по DDE портфеля по деривативам
					Console.WriteLine("Портфель по деривативам...");
					trader.StartExport(new[] {trader.DerivativePortfoliosTable});
					waitHandle.WaitOne();
					Console.WriteLine("Готово!");
					
					// запускаем экспорт по DDE таблицы позиций по бумагам
					Console.WriteLine("Позиции по бумагам...");
					trader.StartExport(new[] {trader.EquityPositionsTable});
					waitHandle.WaitOne();
					Console.WriteLine("Готово!");
					
					// запускаем экспорт по DDE портфеля по бумагам
					Console.WriteLine("Портфель по бумагам...");
					trader.StartExport(new[] {trader.EquityPortfoliosTable});
					
					waitHandle.WaitOne();
					Console.WriteLine("Готово!");

					Console.WriteLine("Нажмите Enter для выхода");
					Console.ReadLine();
					
					trader.StopExport();
				}
			}
		}
		catch (Exception ex)
		{
			Console.WriteLine(ex);
			Console.ReadLine();
		}
	}
}
Спасибо:

Zyanov

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


Algonavt Перейти
У меня обратная проблема - NewPortfolios отлично срабатывает на появление портфеля по деривативам, но появление таблиц "Портфель по бумагам" и "Позиции по бумагам" не порождают это событие. В чем я ошибаюсь?

Похоже что такая же проблема. SimpleConsole встает на сообщении "Стакан Лукойл появился" а квик пишет:
DDE сервер 'STOCKSHARP'.Документ 'стакан[LKOH@QJSIM]'.Произошла ошибка:Ошибка при передаче таблицы,вывод приостановлен.Переполнена очередь сообщений.
Файл wnd из той же папки s#.Verifer все правильно. Лукойл добавлен в инструменты..
Спасибо:


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

loading
clippy