﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">торговля на нескольких квиках</title>
  <id>~/topic/2212/torgovlya-na-neskolkih-kvikah/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-14T19:47:16Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=2212" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/14509/</id>
    <title type="text">подскажите, что не так с подключением портфеля (не появляется он..) видимо не вызывается портфель во...</title>
    <published>2011-12-09T15:16:12Z</published>
    <updated>2011-12-09T15:16:12Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.com/users/6032/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;подскажите, что не так с подключением портфеля (не появляется он..)
видимо не вызывается портфель вообще, насколько понял &amp;quot;trader1.StartExport(trader1.SecuritiesTable, trader1.MyTradesTable, trader1.EquityPositionsTable,trader1.EquityPortfoliosTable, trader1.OrdersTable);&amp;quot; запускает подключение к стакану,инструмент ищет.. а сама программа мне выводит&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Производим подключение...
Подключение 1 было произведено успешно.
Подключение 2 было произведено успешно.
Дожидаемся появления инструментов и портфелей...
Инструмент 1 Лукойл появился.
Стакан 1 Лукойла появился.
Инструмент 2 Лукойл появился.
Стакан 2 Лукойла появился.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;namespace SampleConsole
{
using System;
using System.Linq;
using System.Threading;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;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 = &amp;quot;LKOH&amp;quot;;
            var path1 = @&amp;quot;C:\Program Files\QUIK\info.exe&amp;quot;;
            var account1 = &amp;quot;NL0011100043&amp;quot;;
            var path2 = @&amp;quot;C:\Program Files\QUIK1\info.exe&amp;quot;;
            var account2 = &amp;quot;NL0011100043&amp;quot;;
            var connect1 = 0;
            var connect2 = 0;

            using (var waitHandle1 = new AutoResetEvent(false))
            using (var waitHandle2 = new AutoResetEvent(false))
            using (var waitHandle3 = new AutoResetEvent(false))
            using (var waitHandle4 = new AutoResetEvent(false))
            using (var waitHandle5 = new AutoResetEvent(false))
            using (var waitHandle6 = new AutoResetEvent(false))
            using (var con1 = new AutoResetEvent(false))
            using (var con2 = new AutoResetEvent(false))
            {
                // создаем шлюз к Quik-у
                using (var trader1 = new QuikTrader { Path = path1, DdeServer = &amp;quot;quik1&amp;quot; })
                using (var trader2 = new QuikTrader { Path = path2, DdeServer = &amp;quot;quik2&amp;quot;, DllName = @&amp;quot;TRANS2QUIK_2.dll&amp;quot; })
                {
                    trader1.Connected += () =&amp;gt;
                    {
                        Console.WriteLine(&amp;quot;Подключение 1 было произведено успешно.&amp;quot;);
                        connect1 = 1;
                        // извещаем об успешном соединени
                        con1.Set();
                    };
                    trader2.Connected += () =&amp;gt;
                    {
                        Console.WriteLine(&amp;quot;Подключение 2 было произведено успешно.&amp;quot;);
                        connect1 = 2;
                        // извещаем об успешном соединени
                        con2.Set();
                    };
                    Console.WriteLine(&amp;quot;Производим подключение...&amp;quot;);

                    trader1.Connect();
                    trader2.Connect();



                    // дожидаемся события об успешном соединении

                   con1.WaitOne();
                   con2.WaitOne();

                    Console.WriteLine(&amp;quot;Дожидаемся появления инструментов и портфелей...&amp;quot;);
                    //waitHandle.WaitOne();

                    trader1.NewPortfolios += portfolios =&amp;gt;
                    {
                        if (_portfolio1 == null)
                        {
                            // находим Лукойл и присваиваем ее переменной lkoh
                            _portfolio1 = portfolios.FirstOrDefault(p =&amp;gt; p.Name == account1);

                            if (_portfolio1 != null)
                            {
                                Console.WriteLine(&amp;quot;Портфель 1 {0} появился.&amp;quot;, account1);

                                // если инструмент и стакан уже появились,
                                // то извещаем об этом основной поток для выставления заявки
                                //if (_instrument1 != null &amp;amp;&amp;amp; _depth1 != null &amp;amp;&amp;amp; _instrument2 != null &amp;amp;&amp;amp; _depth2 != null &amp;amp;&amp;amp; _portfolio2 != null)
                                    waitHandle1.Set();
                            }
                        }
                    };

                    trader2.NewPortfolios += portfolios =&amp;gt;
                    {
                        if (_portfolio2 == null)
                        {
                            // находим Лукойл и присваиваем ее переменной lkoh
                            _portfolio2 = portfolios.FirstOrDefault(p =&amp;gt; p.Name == account2);

                            if (_portfolio2 != null)
                            {
                                Console.WriteLine(&amp;quot;Портфель 2 {0} появился.&amp;quot;, account2);

                                // если инструмент и стакан уже появились,
                                // то извещаем об этом основной поток для выставления заявки
                                //if (_instrument1 != null &amp;amp;&amp;amp; _depth1 != null &amp;amp;&amp;amp; _instrument2 != null &amp;amp;&amp;amp; _depth2 != null &amp;amp;&amp;amp; _portfolio1 != null)
                                    waitHandle2.Set();
                            }
                        }
                    };

                    // подписываемся на событие появление инструментов
                    trader1.NewSecurities += securities =&amp;gt;
                    {
                        if (_instrument1 == null)
                        {
                            // находим Лукойл и присваиваем ее переменной lkoh
                            _instrument1 = securities.FirstOrDefault(sec =&amp;gt; sec.Code == secCode);

                            if (_instrument1 != null)
                            {
                                Console.WriteLine(&amp;quot;Инструмент 1 Лукойл появился.&amp;quot;);

                                // запускаем экспорт стакана
                                trader1.RegisterQuotes(_instrument1);

                                //if (_portfolio1 != null &amp;amp;&amp;amp; _depth1 != null &amp;amp;&amp;amp; _portfolio2 != null &amp;amp;&amp;amp; _depth2 != null &amp;amp;&amp;amp; _instrument2 != null)
                                    waitHandle3.Set();
                            }
                        }
                    };

                    trader2.NewSecurities += securities =&amp;gt;
                    {
                        if (_instrument2 == null)
                        {
                            // находим Лукойл и присваиваем ее переменной lkoh
                            _instrument2 = securities.FirstOrDefault(sec =&amp;gt; sec.Code == secCode);

                            if (_instrument2 != null)
                            {
                                Console.WriteLine(&amp;quot;Инструмент 2 Лукойл появился.&amp;quot;);

                                // запускаем экспорт стакана
                                trader2.RegisterQuotes(_instrument2);

                                //if (_portfolio1 != null &amp;amp;&amp;amp; _depth1 != null &amp;amp;&amp;amp; _portfolio2 != null &amp;amp;&amp;amp; _depth2 != null &amp;amp;&amp;amp; _instrument1 != null)
                                    waitHandle4.Set();
                            }
                        }
                    };


                    // подписываемся на событие обновления стакана
                    trader1.QuotesChanged += depths =&amp;gt;
                    {
                        if (_depth1 == null &amp;amp;&amp;amp; _instrument1 != null)
                        {
                            _depth1 = depths.FirstOrDefault(d =&amp;gt; d.Security == _instrument1);

                            if (_depth1 != null)
                            {
                                Console.WriteLine(&amp;quot;Стакан 1 Лукойла появился.&amp;quot;);

                                // если портфель и инструмент уже появился, то извещаем об этом основной поток для выставления заявки
                                //if (_portfolio1 != null &amp;amp;&amp;amp; _instrument1 != null &amp;amp;&amp;amp; _portfolio2 != null &amp;amp;&amp;amp; _instrument2 != null &amp;amp;&amp;amp; _depth2 != null)
                                    waitHandle5.Set();
                            }
                        }
                    };

                    trader2.QuotesChanged += depths =&amp;gt;
                    {
                        if (_depth2 == null &amp;amp;&amp;amp; _instrument2 != null)
                        {
                            _depth2 = depths.FirstOrDefault(d =&amp;gt; d.Security == _instrument2);

                            if (_depth2 != null)
                            {
                                Console.WriteLine(&amp;quot;Стакан 2 Лукойла появился.&amp;quot;);

                                // если портфель и инструмент уже появился, то извещаем об этом основной поток для выставления заявки
                                //if (_portfolio1 != null &amp;amp;&amp;amp; _instrument1 != null &amp;amp;&amp;amp; _portfolio2 != null &amp;amp;&amp;amp; _instrument2 != null &amp;amp;&amp;amp; _depth1 != null)
                                    waitHandle6.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);

                    // дожидаемся появления портфеля и инструмента
                    waitHandle1.WaitOne();
                    waitHandle2.WaitOne();
                    waitHandle3.WaitOne();
                    waitHandle4.WaitOne();
                    waitHandle5.WaitOne();
                    waitHandle6.WaitOne();



                    // 0.1% от изменения цены
                    const decimal delta = 0.001m;

                    // запоминаем первоначальное значение середины спреда
                    var firstMid = _instrument1.BestPair.SpreadPrice / 2;
                    if (_instrument1.BestBid == null)
                        throw new Exception(&amp;quot;Нет лучшего бида для котировки.&amp;quot;);

                    Console.WriteLine(&amp;quot;Первоначальное значение середины спреда {0:0.##}&amp;quot;, _instrument1.BestBid.Price + firstMid);

                    while (true)
                    {
                        var mid = _instrument1.BestPair.SpreadPrice / 2;

                        // если спред вышел за пределы нашего диапазона
                        if (
                                ((firstMid + firstMid * delta) &amp;lt;= mid) ||
                                ((firstMid - firstMid * delta) &amp;gt;= 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(&amp;quot;Заявка {0} зарегистрирована.&amp;quot;, 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(&amp;quot;Заявка {0} зарегистрирована.&amp;quot;, order2.Id);
                            //break;
                        }
                        else
                            //Console.WriteLine(&amp;quot;Текущее значение середины спреда {0:0.##}&amp;quot;, _instrument.BestBid.Price + mid);

                        // ждем 1 секунду
                        Thread.Sleep(1000);
                    }

                    // останавливаем экспорт по DDE
                    trader1.StopExport(trader1.SecuritiesTable, trader1.MyTradesTable, trader1.EquityPositionsTable,
                                       trader1.EquityPortfoliosTable, trader1.OrdersTable);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/14504/</id>
    <title type="text">Alexander Mukhanchikov: Совместный поиск ошибки непонятно где? :) А BasketTrader не пробовали исполь...</title>
    <published>2011-12-09T13:37:04Z</published>
    <updated>2011-12-09T13:37:04Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.com/users/6032/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(14491)" rel="nofollow" target="_blank"&gt;Alexander Mukhanchikov&lt;/a&gt;:&lt;/strong&gt;
Совместный поиск ошибки непонятно где? :)&lt;/p&gt;
&lt;p&gt;А BasketTrader не пробовали использовать?
Неее.. пока я до этого не добрался, мнеб пример простой чтоб сделки открывал на обоих терминалах.
Насчет ошибок, я седня если успею, то зарегаю 2а новых счета, а то чтот подозрительно на 1 из счетов просто не могу на фортс торговать&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/14491/</id>
    <title type="text">Совместный поиск ошибки непонятно где? :) А BasketTrader не пробовали использовать? </title>
    <published>2011-12-09T10:05:48Z</published>
    <updated>2011-12-09T10:05:48Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Совместный поиск ошибки непонятно где? :)&lt;/p&gt;
&lt;p&gt;А BasketTrader не пробовали использовать?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/14489/</id>
    <title type="text">Попрошу помощи, тк уже 2ой день бьюсь... Это я пример переделывал и вот что получилось, но скрипт не...</title>
    <published>2011-12-09T09:55:15Z</published>
    <updated>2011-12-09T10:05:38Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.com/users/6032/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Попрошу помощи, тк уже 2ой день бьюсь... Это я пример переделывал и вот что получилось, но скрипт не работает, думаю где то ошибка с подключением (тк он выводит подключение.. и все.. выходит)&lt;/p&gt;
&lt;p&gt;мне кажется все верно, наверняка чтот с терминалами у меня, тк на 2ом счету даже вручную не открывает по RIZ1&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;namespace SampleConsole
{
using System;
using System.Linq;
using System.Threading;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;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 = &amp;quot;RIZ1&amp;quot;;
            var path1 = @&amp;quot;D:\FinamJunior\info.exe&amp;quot;;
            var account1 = &amp;quot;SPBFUT00O88&amp;quot;;
            var path2 = @&amp;quot;D:\FinamJunior1\info.exe&amp;quot;;
            var account2 = &amp;quot;SPBFUT00P53&amp;quot;;

            using (var waitHandle = new AutoResetEvent(false))
            {
                // создаем шлюз к Quik-у
                using (var trader1 = new QuikTrader { Path = path1, DdeServer = &amp;quot;quik1&amp;quot; })
                using (var trader2 = new QuikTrader { Path = path2, DdeServer = &amp;quot;quik2&amp;quot;, DllName = @&amp;quot;TRANS2QUIK_2.dll&amp;quot; })
                {
                    var portfoliosWait = new ManualResetEvent(false);
                    var connect1 = 0;
                    var connect2 = 0;
                    trader1.Connected += () =&amp;gt;
                    {
                        Console.WriteLine(&amp;quot;Подключение 1 было произведено успешно.&amp;quot;);
                        connect1 = 1;
                        // извещаем об успешном соединени
                        if(connect1==1 &amp;amp;&amp;amp; connect2==1)
                            portfoliosWait.Set();
                    };
                    trader2.Connected += () =&amp;gt;
                    {
                        Console.WriteLine(&amp;quot;Подключение 2 было произведено успешно.&amp;quot;);
                        connect1 = 2;
                        // извещаем об успешном соединени
                        if (connect1 == 1 &amp;amp;&amp;amp; connect2 == 1)
                            portfoliosWait.Set();
                    };
                    Console.WriteLine(&amp;quot;Производим подключение...&amp;quot;);

                    trader1.Connect();
                    trader2.Connect();


                    // дожидаемся события об успешном соединении
                   //waitHandle.WaitOne();

                    Console.WriteLine(&amp;quot;Дожидаемся появления инструментов и портфелей...&amp;quot;);
                    portfoliosWait.WaitOne();

                    trader1.NewPortfolios += portfolios =&amp;gt;
                    {
                        if (_portfolio1 == null)
                        {
                            // находим Лукойл и присваиваем ее переменной lkoh
                            _portfolio1 = portfolios.FirstOrDefault(p =&amp;gt; p.Name == account1);

                            if (_portfolio1 != null)
                            {
                                Console.WriteLine(&amp;quot;Портфель {0} появился.&amp;quot;, account1);

                                // если инструмент и стакан уже появились,
                                // то извещаем об этом основной поток для выставления заявки
                                if (_instrument1 != null &amp;amp;&amp;amp; _depth1 != null &amp;amp;&amp;amp; _instrument2 != null &amp;amp;&amp;amp; _depth2 != null &amp;amp;&amp;amp; _portfolio2 != null)
                                    waitHandle.Set();
                            }
                        }
                    };

                    trader2.NewPortfolios += portfolios =&amp;gt;
                    {
                        if (_portfolio2 == null)
                        {
                            // находим Лукойл и присваиваем ее переменной lkoh
                            _portfolio2 = portfolios.FirstOrDefault(p =&amp;gt; p.Name == account2);

                            if (_portfolio2 != null)
                            {
                                Console.WriteLine(&amp;quot;Портфель {0} появился.&amp;quot;, account2);

                                // если инструмент и стакан уже появились,
                                // то извещаем об этом основной поток для выставления заявки
                                if (_instrument1 != null &amp;amp;&amp;amp; _depth1 != null &amp;amp;&amp;amp; _instrument2 != null &amp;amp;&amp;amp; _depth2 != null &amp;amp;&amp;amp; _portfolio1 != null)
                                    waitHandle.Set();
                            }
                        }
                    };

                    // подписываемся на событие появление инструментов
                    trader1.NewSecurities += securities =&amp;gt;
                    {
                        if (_instrument1 == null)
                        {
                            // находим Лукойл и присваиваем ее переменной lkoh
                            _instrument1 = securities.FirstOrDefault(sec =&amp;gt; sec.Code == secCode);

                            if (_instrument1 != null)
                            {
                                Console.WriteLine(&amp;quot;Инструмент Лукойл появился.&amp;quot;);

                                // запускаем экспорт стакана
                                trader1.RegisterQuotes(_instrument1);

                                if (_portfolio1 != null &amp;amp;&amp;amp; _depth1 != null &amp;amp;&amp;amp; _portfolio2 != null &amp;amp;&amp;amp; _depth2 != null &amp;amp;&amp;amp; _instrument2 != null)
                                    waitHandle.Set();
                            }
                        }
                    };

                    trader2.NewSecurities += securities =&amp;gt;
                    {
                        if (_instrument2 == null)
                        {
                            // находим Лукойл и присваиваем ее переменной lkoh
                            _instrument2 = securities.FirstOrDefault(sec =&amp;gt; sec.Code == secCode);

                            if (_instrument2 != null)
                            {
                                Console.WriteLine(&amp;quot;Инструмент Лукойл появился.&amp;quot;);

                                // запускаем экспорт стакана
                                trader2.RegisterQuotes(_instrument2);

                                if (_portfolio1 != null &amp;amp;&amp;amp; _depth1 != null &amp;amp;&amp;amp; _portfolio2 != null &amp;amp;&amp;amp; _depth2 != null &amp;amp;&amp;amp; _instrument1 != null)
                                    waitHandle.Set();
                            }
                        }
                    };


                    // подписываемся на событие обновления стакана
                    trader1.QuotesChanged += depths =&amp;gt;
                    {
                        if (_depth1 == null &amp;amp;&amp;amp; _instrument1 != null)
                        {
                            _depth1 = depths.FirstOrDefault(d =&amp;gt; d.Security == _instrument1);

                            if (_depth1 != null)
                            {
                                Console.WriteLine(&amp;quot;Стакан Лукойла появился.&amp;quot;);

                                // если портфель и инструмент уже появился, то извещаем об этом основной поток для выставления заявки
                                if (_portfolio1 != null &amp;amp;&amp;amp; _instrument1 != null &amp;amp;&amp;amp; _portfolio2 != null &amp;amp;&amp;amp; _instrument2 != null &amp;amp;&amp;amp; _depth2 != null)
                                    waitHandle.Set();
                            }
                        }
                    };

                    trader2.QuotesChanged += depths =&amp;gt;
                    {
                        if (_depth2 == null &amp;amp;&amp;amp; _instrument2 != null)
                        {
                            _depth2 = depths.FirstOrDefault(d =&amp;gt; d.Security == _instrument2);

                            if (_depth2 != null)
                            {
                                Console.WriteLine(&amp;quot;Стакан Лукойла появился.&amp;quot;);

                                // если портфель и инструмент уже появился, то извещаем об этом основной поток для выставления заявки
                                if (_portfolio1 != null &amp;amp;&amp;amp; _instrument1 != null &amp;amp;&amp;amp; _portfolio2 != null &amp;amp;&amp;amp; _instrument2 != null &amp;amp;&amp;amp; _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(&amp;quot;Нет лучшего бида для котировки.&amp;quot;);

                    Console.WriteLine(&amp;quot;Первоначальное значение середины спреда {0:0.##}&amp;quot;, _instrument1.BestBid.Price + firstMid);

                    while (true)
                    {
                        var mid = _instrument1.BestPair.SpreadPrice / 2;

                        // если спред вышел за пределы нашего диапазона
                        if (
                                ((firstMid + firstMid * delta) &amp;lt;= mid) ||
                                ((firstMid - firstMid * delta) &amp;gt;= 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(&amp;quot;Заявка {0} зарегистрирована.&amp;quot;, 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(&amp;quot;Заявка {0} зарегистрирована.&amp;quot;, order2.Id);
                            break;
                        }
                        else
                            //Console.WriteLine(&amp;quot;Текущее значение середины спреда {0:0.##}&amp;quot;, _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);
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>