[quote=rtDen;33887]unpresent, что-то вы путаете. IsDDE - как раз включает dde, а не луа. И при использовании луа должно быть false.[/quote]
Да,да,да...
Не могу спорить с тем, что (IsDde = true) -> (используется DDE); (IsDde = false) -> (используется Lua)
Просто спешил поделиться радостью, что хоть как-то но получилось присоединиться к Quik-у...
Ну а раз зашла речь о разных типах подключения, тогда давайте буду спрашивать, почему DDE проходит, а Lua - нет.
Итак.
Обращая внимания на пункт 5 статьи: http://stocksharp.com/doc/html/1fdfb45f-9d48-4560-bfc4-8d9b5b20a1cf.htm
[quote]
Выбор режима подключения к Quik (Lua или Dde) выполняется с помощью установки свойства QuikTrader.IsDde.
При Lua подключении нет необходимости указывать путь к терминалу, но необходимо указать настройки подключения к серверу (LuaFixServerAddress, LuaLogin и LuaPassword)
Свойство QuikTrader. IsDde по умолчанию установлено в false, т.о. по умолчанию используется Lua подключение. Если необходимо использовать подключение через Dde, необходимо вручную выставить это свойство.
[/quote]
Вот здесь у меня действительно [color=blue]получается[/color] создать DDE-подключение, даже получить список инструментов и портфелей:
[code=csharp]
private StockSharp.Quik.QuikTrader _trader;
private void DoOnNewSecurities()
{
cmbSecurities.ItemsSource = _trader.Securities;
}
private void DoOnNewPortfolios()
{
cmbPortfolios.ItemsSource = _trader.Portfolios;
}
private void btnConnect_Click(object sender, RoutedEventArgs e)
{
if (_trader == null)
_trader = new QuikTrader(QuikTerminal.GetDefaultPath());
_trader.IsDde = true;
// Странно! Но без следующей строки экспорт инструментов работает, а экспорт портфелей - нет
_trader.Connected += () => _trader.StartExport("Инструменты");
_trader.Connect();
}
private void btnTest_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(_trader.ConnectionState.ToString());
}[/code]
Если же я пробую Lua-подключение:
[code=csharp]
private void DoOnError(Exception e)
{
MessageBox.Show(e.ToString());
}
private void btnConnect_Click(object sender, RoutedEventArgs e)
{
if (_trader == null)
_trader = new QuikTrader();
Byte[] local_ip = new Byte[4]; local_ip[0] = 127; local_ip[1] = 0; local_ip[2] = 0; local_ip[3] = 0;
EndPoint ep = new IPEndPoint(new IPAddress(local_ip), 5001);
_trader.LuaFixServerAddress = ep;
_trader.LuaLogin = "quik";
SecureString ss = new SecureString();
Array.ForEach("quik".ToArray(), ss.AppendChar);
ss.MakeReadOnly();
_trader.LuaPassword = ss;
_trader.IsDde = false;
_trader.ConnectionError += this.DoOnError<Exception>;
_trader.Connect();
}[/code],
то [color=red]не работает[/color] - пытается секунд 8 ConnectionState == Connecting, а потом ConnectionState == Failed.
[quote=Ошибка]
System.Net.Sockets.SocketException (0x80004005): Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 127.0.0.0:5001
в System.Net.Sockets.TcpClient.Connect(String hostname, Int32 port)
в StockSharp.Fix.FixMessageAdapter.#=q0_n7SPayiHGWHW4BJMpTBQ==(Int64 #=qlpmqWJEEF4opBaXHlOoAXQ==)
в StockSharp.Fix.FixMessageAdapter.OnSendInMessage(Message message)
в StockSharp.Messages.MessageAdapter.SendInMessage(Message message)
[/quote]
- В Quik загрузил info_lua.wnd
- В файле \References\StockSharp.Quik.lua снял комментарии со следующих строчек
TransactionAddress="127.0.0.1:5001"
MarketDataAddress="127.0.0.1:5001"
ServerLogin="quik"
ServerPassword="quik"
- В Quik запустил скрипт: \References\StockSharp.Quik.lua
Connect не проходит [crying]
Куда копать, почему Lua-подключение не проходит, а DDE работает?