← Zurück

Получение портфеля ФОРТС [3.0.6]

[3.0.6] В Quik есть счет для работы на ФОРТС > SPBFUT00835

Пытаюсь его получить:

using System;
using System.Linq;
using System.Threading;
using Ecng.Trading.BusinessEntities;
using Ecng.Trading.Quik;

namespace SampleConsolePortfolio
{
	internal class Program
	{
		private static QuikTrader _trader;
		private static Portfolio _portfolio;

		private static void Main()
		{
			try
			{
				const string account = "SPBFUT00835";

				using (var waitHandle = new AutoResetEvent(false))
				{
					// создаем шлюз к Quik-у
					using (_trader = new QuikTrader(@"C:\FinamJunior\info.exe"))
					{
						// подписываемся на событие успешного подключения
						// все действия необходимо производить только после подключения
						_trader.Connected += () =>
						                     	{
						                     		Console.WriteLine("Подключение было произведено успешно.");

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

						Console.WriteLine("Производим подключение...");

						_trader.Connect();

						// дожидаемся события об успешном соединении
						waitHandle.WaitOne();
						
						_trader.ProcessDataError += error => Console.WriteLine(error.ToString());

						_trader.NewPortfolios += portfolios =>
						                         	{
						                         		if (_portfolio == null)
						                         		{
						                         			// находим Счет и присваиваем ее переменной portfolio
						                         			_portfolio = portfolios.FirstOrDefault(p => p.Name == account);

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

						                         				// извещаем о появившемся портфеле
						                         				waitHandle.Set();
						                         			}
						                         		}
						                         	};


						// запускаем экспорт по DDE
						_trader.Terminal.StartDde(_trader.DerivativePortfoliosTable);

						Console.WriteLine("Экспорт по DDE запущен");

						// дожидаемся появления портфеля
						waitHandle.WaitOne();

						Console.WriteLine("Чтобы закончить, нажмите любую клавишу...");
						Console.ReadKey();

						// останавливаем экспорт по DDE
						_trader.Terminal.StopDde(_trader.DerivativePortfoliosTable);
					}
				}
			}
			catch (Exception ex)
			{
				Console.WriteLine(ex);
				Console.WriteLine("Чтобы закончить, нажмите любую кнопку...");
				Console.ReadKey();
			}
		}
	}
}

Получаю ошибку: > Производим подключение...

Подключение было произведено успешно. System.ArgumentOutOfRangeException: Неправильное значение для типа лимита. Имя параметра: func Фактическое значение было Рубли. в #=qyI3M$owxn1pf_MA7$nXA4HLDmVvBVKCzKYGiWJTw77fB5lc2OkqlKVaUgqpAZrBF.#=qDz1x 5a7MslOjcUWgai4vyQ==(Func2 #=qT1vn0Gic3ovvXEeiRaZd_w==) в Ecng.Trading.Quik.QuikTrader.#=qCyQKhW4O6l$WIkYewKOfoSpu63sMuKE4Kt23XzECYbY =.#=qskTOA9gQ2f9kOgBLRrbMoA==(IList1 #=q3CZwVggUAR39Xo3n6M8QTA==, Func2 #=qJw7 16_99Xz$HMvsVRk7$xA==) в #=qyI3M$owxn1pf_MA7$nXA4HLDmVvBVKCzKYGiWJTw77fB5lc2OkqlKVaUgqpAZrBF.#=qkBiD hgR1oGhHKNQ6Ak7XFg==(DdeTable #=qTsRCfdy5r09524LbkshnTg==, IList1 #=qtjxsniOpR7 IKH5XFwpNkpg==, Action2 #=q7P4b_3tPtVkPzAmjFI798g==, Action1 #=q2jZ4o65GGkKLYL bKfjofYA==) Экспорт по DDE запущен

War dieses Thema hilfreich?

Thema teilen

Kommentare (7)

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

Mikhail Sukhov
Mikhail Sukhov

интересная ситуация. у меня рубли называются ден. средства.

vvt
vvt Autor

Это так в Quik Junior от Финама, применяю его для тестирования. В рабочем Quik от КИТ Финанс у меня тоже "Ден.средства" и приведенный код находит счет на ФОРТС. Кроме "Рубли" вместо "Ден.средства" еще и "Залоговые рубли" вместо "Залоговые ден.средства". И, наверное, в отношении клиринговых средств будет тоже самое, посмотрю после клиринга.

Mikhail Sukhov
Mikhail Sukhov

vvt: Это так в Quik Junior от Финама, применяю его для тестирования. В рабочем Quik от КИТ Финанс у меня тоже "Ден.средства" и приведенный код находит счет на ФОРТС. Кроме "Рубли" вместо "Ден.средства" еще и "Залоговые рубли" вместо "Залоговые ден.средства". И, наверное, в отношении клиринговых средств будет тоже самое, посмотрю после клиринга.

Ок, посмотрите, пожалуйста, и я исправлю, чтобы и финамоские термины работали.

vvt
vvt Autor

Да, как и предполагал, добавились "Клиринговые рубли" и "Клиринговые залоговые рубли"

Alexander
Alexander

До версии квика 5.18 действительно использовалось "Рубли" вместо "Ден. средства". С последней версии изменили, сам с этим сталкивался, т.к. раньше экспортировал данную таблицу руками.

vvt
vvt Autor

Да, Quik Junior версия 5.17

vvt
vvt Autor

Проверил на [3.0.8] - работает, спасибо за исправление.