﻿<?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-06-13T15:19:32Z</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">shos: Спасибо, Иван! Полезная вещь. Правильно ли я понимаю, что теперь, чтобы остановить стратегию п...</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;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(28560)" rel="nofollow" target="_blank"&gt;shos&lt;/a&gt;:&lt;/strong&gt;
Спасибо, Иван!
Полезная вещь.&lt;/p&gt;
&lt;p&gt;Правильно ли я понимаю, что теперь, чтобы остановить стратегию по расписанию, нужно в метод&lt;/p&gt;
&lt;p&gt;&lt;span style="color:blue"&gt;public void CheckStatus(Object stateInfo)
{
var dtNow = DateTime.Now;
if (_dtSelected.TimeOfDay &amp;lt; dtNow.TimeOfDay)
{
_firstStrategy.Start();
}}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;прописать условие уже для &lt;span style="color:blue"&gt;_firstStrategy.Stop();&lt;/span&gt; ?
Можно же использовать этот же таймер?
Да, все верно.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(28560)" rel="nofollow" target="_blank"&gt;shos&lt;/a&gt;:&lt;/strong&gt;
И еще, собственно, главный вопрос: если возникнет необходимость, при работе приложения, в автоматическом
включении и выключении стратегии более одного раза (без моего участия), допустим чтобы она часик покурила, а потом снова включилась,
то можно ли просто внести расписание в код?
Правильно ли будет создать несколько констант вместо &lt;span style="color:blue"&gt;_dtSelected&lt;/span&gt;, запустить таймер
(пусть даже без использования кнопок) и расставить условия на включение и выключение?
У меня пока нет тямы, чтобы разбираться с Quartz, поэтому сейчас чем проще, тем для меня понятнее.
Я пока еще в одной переменной путаюсь, а библиотеки для меня пока что где-то в 4-м измерении [biggrin]
Да, верно понимаете. Создаете несколько переменных по подобию &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;/p&gt;
&lt;/blockquote&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;p&gt;Спасибо, Иван!
Полезная вещь.&lt;/p&gt;
&lt;p&gt;Правильно ли я понимаю, что теперь, чтобы остановить стратегию по расписанию, нужно в метод&lt;/p&gt;
&lt;p&gt;&lt;span style="color:blue"&gt;public void CheckStatus(Object stateInfo)
{
var dtNow = DateTime.Now;
if (_dtSelected.TimeOfDay &amp;lt; dtNow.TimeOfDay)
{
_firstStrategy.Start();
}}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;прописать условие уже для &lt;span style="color:blue"&gt;_firstStrategy.Stop();&lt;/span&gt; ?
Можно же использовать этот же таймер?&lt;/p&gt;
&lt;p&gt;И еще, собственно, главный вопрос: если возникнет необходимость, при работе приложения, в автоматическом
включении и выключении стратегии более одного раза (без моего участия), допустим чтобы она часик покурила, а потом снова включилась,
то можно ли просто внести расписание в код?
Правильно ли будет создать несколько констант вместо &lt;span style="color:blue"&gt;_dtSelected&lt;/span&gt;, запустить таймер
(пусть даже без использования кнопок) и расставить условия на включение и выключение?
У меня пока нет тямы, чтобы разбираться с Quartz, поэтому сейчас чем проще, тем для меня понятнее.
Я пока еще в одной переменной путаюсь, а библиотеки для меня пока что где-то в 4-м измерении [biggrin]&lt;/p&gt;
</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;p&gt;Может появиться необходимость автоматического запуска стратегии в указанное время в течении дня, поэтому здесь мы рассмотрим самый простой способ реализации автозапуска стратегии по времени.&lt;/p&gt;
&lt;p&gt;Ключевым элементом будет таймер, который будут периодически сверять текущее время и выбранное время старта стратегии, объявляем переменную таймера в классе окна:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
    public partial class MainWindow : Window
    {
        private System.Threading.Timer _timer;
        ...

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Объявим переменную типа DateTime, которая будет хранить время, когда нужно запустить стратегию, объявляем на том же уровне что и таймер:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
    public partial class MainWindow : Window
    {
        private System.Threading.Timer _timer;
        private DateTime _dtSelected;
        ...

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;И для удобства создадим на форме (окне) элемент выбора времени:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
&lt;p&gt;в данном случае взят TimePicker из Xceed.Wpf.Toolkit:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-xml"&gt;xmlns:xctk=&amp;quot;clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;заметим, что этот контрол имеет имя tpTime, далее мы будем обращаться к нему по этому имени.&lt;/p&gt;
&lt;p&gt;Теперь нам надо создать экземпляр этого таймера, указать ему метод, который будет периодически вызываться, и запустить таймер, для этого создадим кнопку, и укажем действие по нажатию:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
&lt;p&gt;И реализуем метод CheckStatus:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
        public void CheckStatus(Object stateInfo)
        {
            var dtNow = DateTime.Now;
            if (_dtSelected.TimeOfDay &amp;lt; dtNow.TimeOfDay)
            {
                _firstStrategy.Start();
            }
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Это минимум и немного больше, для того чтобы создать автоматический запуск стратегии по времени.&lt;/p&gt;
&lt;p&gt;Есть специальные библиотеки, которые предоставляют большие возможности по работе с расписанием, например Quartz. Quartz позволяет создавать разного рода расписания, достаточно удобно и просто, если разобраться в его работе.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>