﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">BaseTrader.MartketTime, предложение</title>
  <id>~/topic/1425/basetrader_martkettime-predlozhenie/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-10T10:04:46Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=1425" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/9742/</id>
    <title type="text">EugeneP;9680: Alexander: **Кстати, поздравляю с денюхой! Успехов [thumbup] ** Спасибо большое :) [th...</title>
    <published>2011-07-20T20:22:03Z</published>
    <updated>2011-07-20T20:22:03Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;EugeneP;9680:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Alexander:&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:red"&gt;Кстати, поздравляю с денюхой! Успехов [thumbup]&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Спасибо большое :) [thumbup]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9680/</id>
    <title type="text">Alexander: **Кстати, поздравляю с денюхой! Успехов [thumbup] ** </title>
    <published>2011-07-19T10:24:38Z</published>
    <updated>2011-07-19T10:24:38Z</updated>
    <author>
      <name>EugeneP</name>
      <uri>https://stocksharp.ru/users/603/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Alexander:&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:red"&gt;Кстати, поздравляю с денюхой! Успехов [thumbup]&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9678/</id>
    <title type="text">President: 1. вот нашел сервер Name: ntp.rts.ru Address: 194.247.133.37 и моя винда даже смогла с ни...</title>
    <published>2011-07-19T09:41:07Z</published>
    <updated>2011-07-19T09:41:07Z</updated>
    <author>
      <name>EugeneP</name>
      <uri>https://stocksharp.ru/users/603/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9675)" rel="nofollow" target="_blank"&gt;President&lt;/a&gt;:&lt;/strong&gt;
1.
вот нашел сервер
Name: ntp.rts.ru
Address: 194.247.133.37
и моя винда даже смогла с ним ссинхронизироваться&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;pool.ntp.org юзайте. С ним вроде без проблем коннектится&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9676/</id>
    <title type="text">President: т.о. если есть способ послать на биржу запрос и получить ответ с биржевым временем НАЧАЛА...</title>
    <published>2011-07-19T09:06:50Z</published>
    <updated>2011-07-19T09:06:50Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9675)" rel="nofollow" target="_blank"&gt;President&lt;/a&gt;:&lt;/strong&gt;
т.о. если есть способ послать на биржу запрос и получить ответ с биржевым временем НАЧАЛА обработки запроса и временем ЗАВЕРШЕНИЯ его обработки (например время приема заявки и время ее исполнения) то это сделать можно.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;я такой способ не знаю :)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9675/</id>
    <title type="text">Alexander: President: а кроме времени в Quik нет какого-нибудь биржевого времени? например, как сейч...</title>
    <published>2011-07-19T08:53:54Z</published>
    <updated>2011-07-19T08:53:54Z</updated>
    <author>
      <name>President</name>
      <uri>https://stocksharp.ru/users/510/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9672)" rel="nofollow" target="_blank"&gt;Alexander&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9670)" rel="nofollow" target="_blank"&gt;President&lt;/a&gt;:&lt;/strong&gt;
а кроме времени в Quik нет какого-нибудь биржевого времени?
например, как сейчас определяется Trade.Time - оно разве не биржей заполняется?&lt;/p&gt;
&lt;p&gt;если биржей то я бы предпочел с ней и синхронизироваться. чтобы потом в моих логах было максимально возможное совпадение с биржевыми логами.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Trade.Time - время сделки. Как предлагает с ним синхронизоваться? Время когда по DDE придёт сделка тоже не гарантировано.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;вот нашел сервер
Name: ntp.rts.ru
Address: 194.247.133.37
и моя винда даже смогла с ним ссинхронизироваться&lt;/p&gt;
&lt;p&gt;2.
ТЕОРЕТИЧЕСКИ можно самостоятельно сделать синхронизацию по полям Trade/Order таким же способом каким происходит синхронизация с NTP серверами.
вот тут я нашел примерное описание &amp;quot;Принцип определения точного времени&amp;quot; &lt;a href="http://time.in.ua/ntp.html" rel="nofollow" target="_blank"&gt;http://time.in.ua/ntp.html&lt;/a&gt;
т.о. если есть способ послать на биржу запрос и получить ответ с биржевым временем НАЧАЛА обработки запроса и временем ЗАВЕРШЕНИЯ его обработки (например время приема заявки и время ее исполнения) то это сделать можно.&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;А ведь на РТС и ММВБ время может различаться ;) с кем тогда синхронизироваться?
Наверное и правда лучше дать возможность возможность каждому самому указать нужный ему NTP сервер&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9673/</id>
    <title type="text">EugeneP: через проксю думаю не многие инет пользуют, это в основном в корпоративных сетях используют...</title>
    <published>2011-07-19T08:06:49Z</published>
    <updated>2011-07-19T08:06:49Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9671)" rel="nofollow" target="_blank"&gt;EugeneP&lt;/a&gt;:&lt;/strong&gt;
через проксю думаю не многие инет пользуют, это в основном в корпоративных сетях используют, а роботостроители все таки думаю в большинстве своем вольные птицы, да и с работы робота запускать - как то.. не правильно на мой взгляд. Лучше добавить в s# поддержку синхронизации через NTP, чтобы можно было ее вызывать вручную, например при запуске робота, а уж те кто за проксей пусть сами синхронизируют. Тем более обычно в корпорациях время на раб станциях уже синхронизировано&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ну код для NTP я привёл уже давно - см. первое сообщение.
Кому необходимо - уже используют.&lt;/p&gt;
&lt;p&gt;Вариант синхронизации по запросу тоже неплохой.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9672/</id>
    <title type="text">President: а кроме времени в Quik нет какого-нибудь биржевого времени? например, как сейчас определя...</title>
    <published>2011-07-19T08:05:53Z</published>
    <updated>2011-07-19T08:05:53Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9670)" rel="nofollow" target="_blank"&gt;President&lt;/a&gt;:&lt;/strong&gt;
а кроме времени в Quik нет какого-нибудь биржевого времени?
например, как сейчас определяется Trade.Time - оно разве не биржей заполняется?&lt;/p&gt;
&lt;p&gt;если биржей то я бы предпочел с ней и синхронизироваться. чтобы потом в моих логах было максимально возможное совпадение с биржевыми логами.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Trade.Time - время сделки. Как предлагает с ним синхронизоваться? Время когда по DDE придёт сделка тоже не гарантировано.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9671/</id>
    <title type="text">через проксю думаю не многие инет пользуют, это в основном в корпоративных сетях используют, а робот...</title>
    <published>2011-07-19T08:00:33Z</published>
    <updated>2011-07-19T08:00:33Z</updated>
    <author>
      <name>EugeneP</name>
      <uri>https://stocksharp.ru/users/603/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;через проксю думаю не многие инет пользуют, это в основном в корпоративных сетях используют, а роботостроители все таки думаю в большинстве своем вольные птицы, да и с работы робота запускать - как то.. не правильно на мой взгляд. Лучше добавить в s# поддержку синхронизации через NTP, чтобы можно было ее вызывать вручную, например при запуске робота, а уж те кто за проксей пусть сами синхронизируют. Тем более обычно в корпорациях время на раб станциях уже синхронизировано&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9670/</id>
    <title type="text">а кроме времени в Quik нет какого-нибудь биржевого времени? например, как сейчас определяется Trade....</title>
    <published>2011-07-19T07:50:52Z</published>
    <updated>2011-07-19T07:50:52Z</updated>
    <author>
      <name>President</name>
      <uri>https://stocksharp.ru/users/510/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;а кроме времени в Quik нет какого-нибудь биржевого времени?
например, как сейчас определяется Trade.Time - оно разве не биржей заполняется?&lt;/p&gt;
&lt;p&gt;если биржей то я бы предпочел с ней и синхронизироваться. чтобы потом в моих логах было максимально возможное совпадение с биржевыми логами.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9668/</id>
    <title type="text">Думаю, что вариант неплохой </title>
    <published>2011-07-19T06:59:25Z</published>
    <updated>2011-07-19T06:59:31Z</updated>
    <author>
      <name>esper</name>
      <uri>https://stocksharp.ru/users/5990/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Думаю, что вариант неплохой&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9667/</id>
    <title type="text">Начал реализовывать, но появилась сложность - для полной поддержки мы должны уметь обращаться к NTP ...</title>
    <published>2011-07-19T06:30:31Z</published>
    <updated>2011-07-19T06:30:31Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Начал реализовывать, но появилась сложность - для полной поддержки мы должны уметь обращаться к NTP серверу как через прокси, так и напрямую.
Что довольно проблематично. Накладывать на S# сетевые возможности не хочется.&lt;/p&gt;
&lt;p&gt;Есть другое предложение - по умолчанию в MarketTimeOffset записывать разницу между московским временем и локальным на компьютере (но её получим через временные зоны - +3 от москвы и зоной, установленной локально). Время будет всегда браться локальное - т.е. при необходимости надо будет самому обновить время на компьютере.&lt;/p&gt;
&lt;p&gt;Сдаётся мне, что это довольно хороший выход, позволяющий обойти все недостатки нынешней реализации - то что либо надо самомуу устанавливать MarketTimeOffset, либо то что время берётся из Квика...&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6466/</id>
    <title type="text">Вот, нашёл проект, он позволяет избежать проблемы с задержкой на отправку \ получение - всё учитывае...</title>
    <published>2011-03-06T16:07:39Z</published>
    <updated>2011-03-06T16:07:39Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Вот, нашёл проект, он позволяет избежать проблемы с задержкой на отправку \ получение - всё учитывает.
&lt;a href="http://www.codeproject.com/KB/IP/ntpclient.aspx" rel="nofollow" target="_blank"&gt;CodeProject&lt;/a&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6462/</id>
    <title type="text">Вначале немного предыстории - в последнее время заметил задержки в получение времени средствами Quik...</title>
    <published>2011-03-06T14:57:06Z</published>
    <updated>2011-03-06T15:48:28Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Вначале немного предыстории - в последнее время заметил задержки в получение времени средствами QuikTrader.MartketTime - в квике в ходе торгов секунды зачастую идут с задержкой 1-3 секунды, да и отсчёт идёт не каждую секунду. В общем не очень хорошо, на мой взгляд, использовать данное решение.&lt;/p&gt;
&lt;p&gt;Смарт, насколько я понимаю, использует время компьютера.&lt;/p&gt;
&lt;p&gt;Поэтому появилась идея использовать не системное время (т.к. оно может:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;быть не синхронизировано&lt;/li&gt;
&lt;li&gt;быть не московским,
....), а московское время из интернета.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Т.е. обращаться к стандартными NTP серверам и опрашивая их получать московское время.&lt;/p&gt;
&lt;p&gt;Поискав в инете наткнулся на множество тем, выбрал решение отсюда как наиболее простое: &lt;a href="http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/8670212a-4157-4e91-b5dd-44934ca31b9e" rel="nofollow" target="_blank"&gt;всемогущий MSDN&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Немного его отредактировал под наши нужны, получил следующее:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;using System;
using System.Net;
using System.Net.Sockets;

namespace Robots.Entities
{
    /// &amp;lt;summary&amp;gt;
    /// Static class to receive Moscow time from a NTP server.
    /// &amp;lt;/summary&amp;gt;
    public static class NtpClient
    {
        /// &amp;lt;summary&amp;gt;
        /// Gets Moscow DateTime from &amp;lt;paramref name=&amp;quot;ntpServer&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;ntpServer&amp;quot;&amp;gt;The hostname of the NTP server.&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;A DateTime containing Moscow current time.&amp;lt;/returns&amp;gt;
        public static DateTime GetMoscowTime(string ntpServer = &amp;quot;time-a.nist.gov&amp;quot;)
        {
            var address = Dns.GetHostEntry(ntpServer).AddressList;

            if (address == null || address.Length == 0)
                throw new ArgumentException(string.Format(&amp;quot;Could not resolve ip address from '{0}'.&amp;quot;, ntpServer), &amp;quot;ntpServer&amp;quot;);

            var ep = new IPEndPoint(address[0], 123);
            return GetMoscowTime(ep);
        }

        /// &amp;lt;summary&amp;gt;
        /// Gets Moscow DateTime form &amp;lt;paramref name=&amp;quot;ep&amp;quot;/&amp;gt; IPEndPoint.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;ep&amp;quot;&amp;gt;The IPEndPoint to connect to.&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;A DateTime containing Moscow current time.&amp;lt;/returns&amp;gt;
        private static DateTime GetMoscowTime(IPEndPoint ep)
        {
            var s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            s.Connect(ep);

            var ntpData = new byte[48]; // RFC 2030
            ntpData[0] = 0x1B;
            for (var i = 1; i &amp;lt; 48; i++)
                ntpData[i] = 0;

            s.Send(ntpData);
            s.Receive(ntpData);

            const byte offsetTransmitTime = 40;
            ulong intpart = 0;
            ulong fractpart = 0;

            for (var i = 0; i &amp;lt;= 3; i++)
                intpart = 256 * intpart + ntpData[offsetTransmitTime + i];

            for (var i = 4; i &amp;lt;= 7; i++)
                fractpart = 256 * fractpart + ntpData[offsetTransmitTime + i];

            var milliseconds = (intpart * 1000 + (fractpart * 1000) / 0x100000000L);
            s.Close();

            var timeSpan = TimeSpan.FromMilliseconds(milliseconds);

            var dateTime = new DateTime(1900, 1, 1);
            dateTime += timeSpan;

            var moscowTimeZone = TimeZoneInfo.FindSystemTimeZoneById(&amp;quot;Russian Standard Time&amp;quot;);
            var offsetAmount = moscowTimeZone.GetUtcOffset(dateTime);
            var networkDateTime = dateTime + offsetAmount;

            return networkDateTime;
        }

        /// &amp;lt;summary&amp;gt;
        /// Gets TimeSpan offset.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;returns&amp;gt;Gets offset between local time and Moscow Time.&amp;lt;/returns&amp;gt;
        public static TimeSpan GetMoscowTimeOffset()
        {
            try
            {
                var moscowDateTime = GetMoscowTime();
                return moscowDateTime - DateTime.Now;
            }
            catch(Exception)
            {
                return new TimeSpan(0);
            }
        }
    }
}

&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;NtpClient.GetMoscowTime(&amp;quot;time.nist.gov&amp;quot;) возвращает текущее московское время :)
NtpClient.GetMoscowTimeOffset() - смещение с московским временем.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Предложение состоит в том, чтобы использовать данное время для определения BaseTrader.MarketTime.
1 раз - при инициализации получать московское время и просто подсчитать первоначальную разницу между московским временем и локальным.
Затем установить его в MarketTimeOffset.&lt;/p&gt;
&lt;p&gt;Вот текущее использование, которое я сегодня добавил в моего робота:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    public class OwnQuikTrader : QuikTrader
    {
        public OwnQuikTrader(string path, string ddeServer, string dllName) :
            base(path, ddeServer, dllName)
        {
            base.MarketTimeOffset = NtpClient.GetMoscowTimeOffset();
        }

//...

        public override DateTime MarketTime
        {
            get { return DateTime.Now; }
        }
    }
&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/6464/</id>
    <title type="text">Хотя, уходит время на отправку и получение запроса - поэтому результат не совсем точный, 1 секунды р...</title>
    <published>2011-03-06T15:33:31Z</published>
    <updated>2011-03-06T15:33:31Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Хотя, уходит время на отправку и получение запроса - поэтому результат не совсем точный, 1 секунды разницы набегает наверное.
Но он всяко ближе чем через квик и доступен также из любой временной зоны.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>