Попрошу помощи, тк уже 2ой день бьюсь... Это я пример переделывал и вот что получилось, но скрипт не работает, думаю где то ошибка с подключением (тк он выводит подключение.. и все.. выходит)
мне кажется все верно, наверняка чтот с терминалами у меня, тк на 2ом счету даже вручную не открывает по RIZ1 
Quote:namespace SampleConsole
{
    using System;
    using System.Linq;
    using System.Threading;
    using Ecng.Common;
    using StockSharp.BusinessEntities;
    using StockSharp.Quik;
    using StockSharp.Algo;
    class Program
    {
        private static Security _instrument1;
        private static Security _instrument2;
        private static Portfolio _portfolio1;
        private static Portfolio _portfolio2;
        private static MarketDepth _depth1;
        private static MarketDepth _depth2;
        static void Main()
        {
            try
            {
                // для теста выбираем бумагу Лукойл
                const string secCode = "RIZ1";
                var path1 = @"D:\FinamJunior\info.exe";
                var account1 = "SPBFUT00O88";
                var path2 = @"D:\FinamJunior1\info.exe";
                var account2 = "SPBFUT00P53";
                using (var waitHandle = new AutoResetEvent(false))
                {
                    // создаем шлюз к Quik-у
                    using (var trader1 = new QuikTrader { Path = path1, DdeServer = "quik1" })
                    using (var trader2 = new QuikTrader { Path = path2, DdeServer = "quik2", DllName = @"TRANS2QUIK_2.dll" })
                    {
                        var portfoliosWait = new ManualResetEvent(false);
                        var connect1 = 0;
                        var connect2 = 0;
                        trader1.Connected += () =>
                        {
                            Console.WriteLine("Подключение 1 было произведено успешно.");
                            connect1 = 1;
                            // извещаем об успешном соединени
                            if(connect1==1 && connect2==1)
                                portfoliosWait.Set();
                        };
                        trader2.Connected += () =>
                        {
                            Console.WriteLine("Подключение 2 было произведено успешно.");
                            connect1 = 2;
                            // извещаем об успешном соединени
                            if (connect1 == 1 && connect2 == 1)
                                portfoliosWait.Set();
                        };
                        Console.WriteLine("Производим подключение...");
                        
                        trader1.Connect();
                        trader2.Connect();
                        
                        // дожидаемся события об успешном соединении
                       //waitHandle.WaitOne();
                        Console.WriteLine("Дожидаемся появления инструментов и портфелей...");
                        portfoliosWait.WaitOne();
                        trader1.NewPortfolios += portfolios =>
                        {
                            if (_portfolio1 == null)
                            {
                                // находим Лукойл и присваиваем ее переменной lkoh
                                _portfolio1 = portfolios.FirstOrDefault(p => p.Name == account1);
                                if (_portfolio1 != null)
                                {
                                    Console.WriteLine("Портфель {0} появился.", account1);
                                    // если инструмент и стакан уже появились,
                                    // то извещаем об этом основной поток для выставления заявки
                                    if (_instrument1 != null && _depth1 != null && _instrument2 != null && _depth2 != null && _portfolio2 != null)
                                        waitHandle.Set();
                                }
                            }
                        };
                        trader2.NewPortfolios += portfolios =>
                        {
                            if (_portfolio2 == null)
                            {
                                // находим Лукойл и присваиваем ее переменной lkoh
                                _portfolio2 = portfolios.FirstOrDefault(p => p.Name == account2);
                                if (_portfolio2 != null)
                                {
                                    Console.WriteLine("Портфель {0} появился.", account2);
                                    // если инструмент и стакан уже появились,
                                    // то извещаем об этом основной поток для выставления заявки
                                    if (_instrument1 != null && _depth1 != null && _instrument2 != null && _depth2 != null && _portfolio1 != null)
                                        waitHandle.Set();
                                }
                            }
                        };
                        // подписываемся на событие появление инструментов
                        trader1.NewSecurities += securities =>
                        {
                            if (_instrument1 == null)
                            {
                                // находим Лукойл и присваиваем ее переменной lkoh
                                _instrument1 = securities.FirstOrDefault(sec => sec.Code == secCode);
                                if (_instrument1 != null)
                                {
                                    Console.WriteLine("Инструмент Лукойл появился.");
                                    // запускаем экспорт стакана
                                    trader1.RegisterQuotes(_instrument1);
                                    if (_portfolio1 != null && _depth1 != null && _portfolio2 != null && _depth2 != null && _instrument2 != null)
                                        waitHandle.Set();
                                }
                            }
                        };
                        trader2.NewSecurities += securities =>
                        {
                            if (_instrument2 == null)
                            {
                                // находим Лукойл и присваиваем ее переменной lkoh
                                _instrument2 = securities.FirstOrDefault(sec => sec.Code == secCode);
                                if (_instrument2 != null)
                                {
                                    Console.WriteLine("Инструмент Лукойл появился.");
                                    // запускаем экспорт стакана
                                    trader2.RegisterQuotes(_instrument2);
                                    if (_portfolio1 != null && _depth1 != null && _portfolio2 != null && _depth2 != null && _instrument1 != null)
                                        waitHandle.Set();
                                }
                            }
                        };
                        // подписываемся на событие обновления стакана
                        trader1.QuotesChanged += depths =>
                        {
                            if (_depth1 == null && _instrument1 != null)
                            {
                                _depth1 = depths.FirstOrDefault(d => d.Security == _instrument1);
                                if (_depth1 != null)
                                {
                                    Console.WriteLine("Стакан Лукойла появился.");
                                    // если портфель и инструмент уже появился, то извещаем об этом основной поток для выставления заявки
                                    if (_portfolio1 != null && _instrument1 != null && _portfolio2 != null && _instrument2 != null && _depth2 != null)
                                        waitHandle.Set();
                                }
                            }
                        };
                        trader2.QuotesChanged += depths =>
                        {
                            if (_depth2 == null && _instrument2 != null)
                            {
                                _depth2 = depths.FirstOrDefault(d => d.Security == _instrument2);
                                if (_depth2 != null)
                                {
                                    Console.WriteLine("Стакан Лукойла появился.");
                                    // если портфель и инструмент уже появился, то извещаем об этом основной поток для выставления заявки
                                    if (_portfolio1 != null && _instrument1 != null && _portfolio2 != null && _instrument2 != null && _depth1 != null)
                                        waitHandle.Set();
                                }
                            }
                        };
                        trader1.StartExport(trader1.SecuritiesTable, trader1.MyTradesTable, trader1.EquityPositionsTable,
                                           trader1.EquityPortfoliosTable, trader1.OrdersTable);
                        trader2.StartExport(trader2.SecuritiesTable, trader2.MyTradesTable, trader2.EquityPositionsTable,
                                           trader2.EquityPortfoliosTable, trader2.OrdersTable);
                        // дожидаемся появления портфеля и инструмента
                        waitHandle.WaitOne();
                        // 0.1% от изменения цены
                        const decimal delta = 0.001m;
                        // запоминаем первоначальное значение середины спреда
                        var firstMid = _instrument1.BestPair.SpreadPrice / 2;
                        if (_instrument1.BestBid == null)
                            throw new Exception("Нет лучшего бида для котировки.");
                        Console.WriteLine("Первоначальное значение середины спреда {0:0.##}", _instrument1.BestBid.Price + firstMid);
                        while (true)
                        {
                            var mid = _instrument1.BestPair.SpreadPrice / 2;
                            // если спред вышел за пределы нашего диапазона
                            if (
                                    ((firstMid + firstMid * delta) <= mid) ||
                                    ((firstMid - firstMid * delta) >= mid)
                                )
                            {
                                var order1 = new Order
                                {
                                    Portfolio = _portfolio1,
                                    Price = _instrument1.ShrinkPrice(_instrument1.BestBid.Price + mid),
                                    Security = _instrument1,
                                    Volume = 1,
                                    Direction = OrderDirections.Buy,
                                };
                                trader1.RegisterOrder(order1);
                                Console.WriteLine("Заявка {0} зарегистрирована.", order1.Id);
                                var order2 = new Order
                                {
                                    Portfolio = _portfolio2,
                                    Price = _instrument2.ShrinkPrice(_instrument2.BestAsk.Price + mid),
                                    Security = _instrument2,
                                    Volume = 1,
                                    Direction = OrderDirections.Sell,
                                };
                                trader2.RegisterOrder(order2);
                                Console.WriteLine("Заявка {0} зарегистрирована.", order2.Id);
                                break;
                            }
                            else
                                //Console.WriteLine("Текущее значение середины спреда {0:0.##}", _instrument.BestBid.Price + mid);
                            // ждем 1 секунду
                            Thread.Sleep(1000);
                        }
                        // останавливаем экспорт по DDE
                        trader2.StopExport(trader2.SecuritiesTable, trader2.MyTradesTable, trader2.EquityPositionsTable,
                                           trader2.EquityPortfoliosTable, trader2.OrdersTable);
                        trader1.StopExport(trader1.SecuritiesTable, trader1.MyTradesTable, trader1.EquityPositionsTable,
                                           trader1.EquityPortfoliosTable, trader1.OrdersTable);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
    }
}