﻿<?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/4184/avtomaticheskii-zapusk-strategii-po-ukazannomu-vremeni/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-30T06:25:16Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=4184" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/28574/</id>
    <title type="text">Спасибо, Иван! Полезная вещь. Правильно ли я понимаю, что теперь, чтобы остановить стратегию по расп...</title>
    <published>2013-12-01T05:47:54Z</published>
    <updated>2013-12-01T05:47:54Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;shos &lt;a href="https://stocksharp.com/posts/m/28560/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Спасибо, Иван! &lt;br /&gt;Полезная вещь.&lt;br /&gt;&lt;br /&gt;Правильно ли я понимаю, что теперь, чтобы остановить стратегию по расписанию, нужно в метод&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue"&gt;public void CheckStatus(Object stateInfo)&lt;br /&gt;        {&lt;br /&gt;            var dtNow = DateTime.Now;&lt;br /&gt;            if (_dtSelected.TimeOfDay &amp;lt; dtNow.TimeOfDay)&lt;br /&gt;            {&lt;br /&gt;                _firstStrategy.Start();&lt;br /&gt;            }}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;прописать условие уже для &lt;span style="color:blue"&gt;_firstStrategy.Stop();&lt;/span&gt; ?&lt;br /&gt;Можно же использовать этот же таймер?&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Да, все верно.&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;shos &lt;a href="https://stocksharp.com/posts/m/28560/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;И еще, собственно, главный вопрос: если возникнет необходимость, при работе приложения, в автоматическом&lt;br /&gt;включении и выключении стратегии более одного раза (без моего участия), допустим чтобы она часик покурила, а потом снова включилась, &lt;br /&gt;то можно ли просто внести расписание в код?&lt;br /&gt;Правильно ли будет создать несколько констант вместо &lt;span style="color:blue"&gt;_dtSelected&lt;/span&gt;, запустить таймер&lt;br /&gt;(пусть даже без использования кнопок) и расставить условия на включение и выключение?&lt;br /&gt;У меня пока нет тямы, чтобы разбираться с Quartz, поэтому сейчас чем проще, тем для меня понятнее.&lt;br /&gt;Я пока еще в одной переменной путаюсь, а библиотеки для меня пока что где-то в 4-м измерении [biggrin] &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Да, верно понимаете. Создаете несколько переменных по подобию &lt;span style="color:blue"&gt;_dtSelected&lt;/span&gt;, например: &lt;span style="color:blue"&gt;_dtStartFirstSelected&lt;/span&gt;, &lt;span style="color:blue"&gt;_dtStopFirstSelected&lt;/span&gt;, &lt;span style="color:blue"&gt;_dtStartSecondSelected&lt;/span&gt;, &lt;span style="color:blue"&gt;_dtStopSecondSelected&lt;/span&gt; (в данном случае, судя по именам переменных, предполагается два рабочих интревала стратегии в течении дня), и соответственно задать условия и действия в методе CheckStatus.&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/28560/</id>
    <title type="text">Спасибо, Иван! Полезная вещь. Правильно ли я понимаю, что теперь, чтобы остановить стратегию по расп...</title>
    <published>2013-11-29T20:47:36Z</published>
    <updated>2013-11-29T20:47:36Z</updated>
    <author>
      <name>shos</name>
      <uri>https://stocksharp.com/users/39109/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Спасибо, Иван! &lt;br /&gt;Полезная вещь.&lt;br /&gt;&lt;br /&gt;Правильно ли я понимаю, что теперь, чтобы остановить стратегию по расписанию, нужно в метод&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue"&gt;public void CheckStatus(Object stateInfo)&lt;br /&gt;        {&lt;br /&gt;            var dtNow = DateTime.Now;&lt;br /&gt;            if (_dtSelected.TimeOfDay &amp;lt; dtNow.TimeOfDay)&lt;br /&gt;            {&lt;br /&gt;                _firstStrategy.Start();&lt;br /&gt;            }}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;прописать условие уже для &lt;span style="color:blue"&gt;_firstStrategy.Stop();&lt;/span&gt; ?&lt;br /&gt;Можно же использовать этот же таймер?&lt;br /&gt;&lt;br /&gt;И еще, собственно, главный вопрос: если возникнет необходимость, при работе приложения, в автоматическом&lt;br /&gt;включении и выключении стратегии более одного раза (без моего участия), допустим чтобы она часик покурила, а потом снова включилась, &lt;br /&gt;то можно ли просто внести расписание в код?&lt;br /&gt;Правильно ли будет создать несколько констант вместо &lt;span style="color:blue"&gt;_dtSelected&lt;/span&gt;, запустить таймер&lt;br /&gt;(пусть даже без использования кнопок) и расставить условия на включение и выключение?&lt;br /&gt;У меня пока нет тямы, чтобы разбираться с Quartz, поэтому сейчас чем проще, тем для меня понятнее.&lt;br /&gt;Я пока еще в одной переменной путаюсь, а библиотеки для меня пока что где-то в 4-м измерении [biggrin] </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/28502/</id>
    <title type="text">Может появиться необходимость автоматического запуска стратегии в указанное время в течении дня, поэ...</title>
    <published>2013-11-28T16:15:20Z</published>
    <updated>2013-11-28T16:15:20Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Может появиться необходимость автоматического запуска стратегии в указанное время в течении дня, поэтому здесь мы рассмотрим самый простой способ реализации автозапуска стратегии по времени.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ключевым элементом будет таймер, который будут периодически сверять текущее время и выбранное время старта стратегии, объявляем переменную таймера в классе окна:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

    public partial class MainWindow : Window
    {
        private System.Threading.Timer _timer;
        ...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Объявим переменную типа DateTime, которая будет хранить время, когда нужно запустить стратегию, объявляем на том же уровне что и таймер:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

    public partial class MainWindow : Window
    {
        private System.Threading.Timer _timer;
        private DateTime _dtSelected;
        ...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;И для удобства создадим на форме (окне) элемент выбора времени:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:xml"&gt;

&amp;lt;xctk:TimePicker Height=&amp;quot;20&amp;quot; Width=&amp;quot;100&amp;quot; x:Name=&amp;quot;tpTime&amp;quot; /&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt; &lt;br /&gt;в данном случае взят TimePicker из Xceed.Wpf.Toolkit:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:xml"&gt;
xmlns:xctk=&amp;quot;clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit&amp;quot;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;заметим, что этот контрол имеет имя tpTime, далее мы будем обращаться к нему по этому имени.&lt;br /&gt;&lt;br /&gt;Теперь нам надо создать экземпляр этого таймера, указать ему метод, который будет периодически вызываться, и запустить таймер, для этого создадим кнопку, и укажем действие по нажатию:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

        private void AutoStartStrategyClick(object sender, RoutedEventArgs e)
        {
            if (tpTime.Value == null)
            {
                MessageBox.Show(&amp;quot;Время запуска стратегии не выбрано&amp;quot;);
                return;
            }

            _dtSelected = tpTime.Value.Value;

            _timer = new Timer(CheckStatus, null, 0, 1000);
            
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;И реализуем метод CheckStatus:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

        public void CheckStatus(Object stateInfo)
        {
            var dtNow = DateTime.Now;
            if (_dtSelected.TimeOfDay &amp;lt; dtNow.TimeOfDay)
            {
                _firstStrategy.Start();
            }
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Это минимум и немного больше, для того чтобы создать автоматический запуск стратегии по времени.&lt;br /&gt;&lt;br /&gt;Есть специальные библиотеки, которые предоставляют большие возможности по работе с расписанием, например Quartz. Quartz позволяет создавать разного рода расписания, достаточно удобно и просто, если разобраться в его работе.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>