﻿<?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">Создание роботов с помощью S#. Часть 4. Использование XAML для загрузки стратегий</title>
  <id>~/topic/356/sozdanie-robotov-s-pomoshshyu-s_-chast-4_-ispolzovanie-xaml-dlya-zagruzki-strategii/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-25T02:44:53Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=356" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/136/</id>
    <title type="text">В реальном приложении у нас будет много стратегий со своими параметрами, которые проще всего загрузи...</title>
    <published>2012-03-18T21:58:59Z</published>
    <updated>2012-12-17T15:06:48Z</updated>
    <author>
      <name>FinDirector</name>
      <uri>https://stocksharp.com/users/473/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;В реальном приложении у нас будет много стратегий со своими параметрами, которые проще всего загрузить из XAML файла.
XAML — это декларативный язык разметки. Он упрощает создание пользовательского интерфейса для нашего приложения.&lt;/p&gt;
&lt;p&gt;К настоящему моменту мы уже проделали большую работу по разделению бизнес-логики от UI и теперь можем в форме писать кода типа:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;		StandardStrategy strategy;

		StandardStrategy CreateStrategy()
		{
			var strategy = new StrikeStrategy()
			{
				TraderBuilder = new QuikTraderBuilder()
				{
					Path = &amp;quot;***&amp;quot;,
					Login = &amp;quot;***&amp;quot;,
					Password = &amp;quot;***&amp;quot;
				},
				PortfolioSelector = new PortfolioSelector()
				{
					PortfolioName = &amp;quot;***&amp;quot;
				},
				SecuritySelector = new SecuritySelector()
				{
					SecurityCode = &amp;quot;RIM2&amp;quot;
				},
				HistoryCandleProvider = new FinamHistoryCandleProvider()
				{
					TimeFrame = TimeSpan.FromHours(1),
					FinamSecurityCode = 80996
				},
				SettingsProvider = new RegistrySettingsProvider()
				{
					 SubKey = @&amp;quot;Software\FinDirector\StrikeStrategy&amp;quot;
				},
				VolumeSizer = new MarginVolumeSizer()
				{
					 Ratio = 0.2,
					 MaxCapital = 1000000
				},
				TimeFrame = TimeSpan.FromMinutes(5)
			};
			return strategy;
		}

		private void Window_Loaded(object sender, RoutedEventArgs e)
		{
			strategy = CreateStrategy();
		}

		protected override void OnClosed(EventArgs e)
		{
			base.OnClosed(e);
			if (strategy != null &amp;amp;&amp;amp; strategy.TraderBuilder != null)
				strategy.TraderBuilder.Dispose();
		}

		private void btnStart_Click(object sender, RoutedEventArgs e)
		{
			if (strategy.ProcessState == ProcessStates.Stopped)
				Task.Factory.StartNew(strategy.Start);
		}

		private void btnStop_Click(object sender, RoutedEventArgs e)
		{
			strategy.Stop();
		}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Получилось совсем немного кода. Тем не менее в реальном приложении у нас будет много стратегий и у каждой будет куча параметров. Чтобы не зашивать их в коде, проще всего загрузить их из XAML файла, таком как в примере из статьи &lt;a href="http://stocksharp.com/lesson/article.aspx?aid=4"&gt;“Создание роботов с помощью S#. Введение”&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;	public class StrategyLoader : FrameworkElement
	{
		public StrategyList Strategies { get; set; }

		public StrategyLoader()
		{
			Strategies = new StrategyList();
		}

		public static StrategyLoader Load(string location)
		{
			return (StrategyLoader)XamlReader.Load(new XmlTextReader(location));
		}
	}

	[Serializable]
	public class StrategyList : List&amp;lt;StandardStrategy&amp;gt; { }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Теперь изменим метод CreateStrategy нашей формы:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;		StandardStrategy CreateStrategy()
		{
			var strategy = StrategyLoader.Load(&amp;quot;Strategies.config&amp;quot;).Strategies.FirstOrDefault();
			return strategy;
		}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;А в файл Strategies.config поместим все настройки. В коде формы теперь нет ничего лишнего.&lt;/p&gt;
&lt;p&gt;:[:::right
&lt;strong&gt;Автор статьи: Вадим Чижов&lt;/strong&gt;&lt;/p&gt;
&lt;div class="]"&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17320/</id>
    <title type="text">Может вам награду какую на форуме специальную сделать... [thumbup] </title>
    <published>2012-03-15T19:56:39Z</published>
    <updated>2012-03-15T19:56:39Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Может вам награду какую на форуме специальную сделать... [thumbup]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17319/</id>
    <title type="text">Alexey Gorbunov: Класс, супер! Спасибо большое. Можно Ваши статьи поместить на наш сайт? Конечно. </title>
    <published>2012-03-15T19:52:25Z</published>
    <updated>2012-03-15T19:52:25Z</updated>
    <author>
      <name>FinDirector</name>
      <uri>https://stocksharp.com/users/473/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(17318)" rel="nofollow" target="_blank"&gt;Alexey Gorbunov&lt;/a&gt;:&lt;/strong&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/17318/</id>
    <title type="text">Класс, супер! Спасибо большое. Можно Ваши статьи поместить на наш сайт? </title>
    <published>2012-03-15T19:47:00Z</published>
    <updated>2012-03-15T19:47:00Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/341/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Класс, супер! Спасибо большое. Можно Ваши статьи поместить на наш сайт?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>