﻿<?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">Создание роботов с помощью 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-04-07T10:12:17Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=356" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/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.ru/users/473/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">В реальном приложении у нас будет много стратегий со своими параметрами, которые проще всего загрузить из XAML файла.&lt;br /&gt;XAML — это декларативный язык разметки. Он упрощает создание пользовательского интерфейса для нашего приложения.&lt;br /&gt;&lt;br /&gt;К настоящему моменту мы уже проделали большую работу по разделению бизнес-логики от UI и теперь можем в форме писать кода типа:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush: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;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Получилось совсем немного кода. Тем не менее в реальном приложении у нас будет много стратегий и у каждой будет куча параметров. Чтобы не зашивать их в коде, проще всего загрузить их из XAML файла, таком как в примере из статьи &lt;a href="http://stocksharp.com/lesson/article.aspx?aid=4" title="http://stocksharp.com/lesson/article.aspx?aid=4"&gt;“Создание роботов с помощью S#. Введение”&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush: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;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Теперь изменим метод CreateStrategy нашей формы:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
		StandardStrategy CreateStrategy()
		{
			var strategy = StrategyLoader.Load(&amp;quot;Strategies.config&amp;quot;).Strategies.FirstOrDefault();
			return strategy;
		}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt; А в файл Strategies.config поместим все настройки. В коде формы теперь нет ничего лишнего.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:120%"&gt;&lt;div align="right"&gt;&lt;b&gt;Автор статьи: Вадим Чижов&lt;/b&gt;&lt;/div&gt;&lt;/span&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17320/</id>
    <title type="text">Может вам награду какую на форуме специальную сделать... </title>
    <published>2012-03-15T19:56:39Z</published>
    <updated>2012-03-15T19:56:39Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Может вам награду какую на форуме специальную сделать... [thumbup] </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17319/</id>
    <title type="text">Класс, супер! Спасибо большое. Можно Ваши статьи поместить на наш сайт? Конечно. </title>
    <published>2012-03-15T19:52:25Z</published>
    <updated>2012-03-15T19:52:25Z</updated>
    <author>
      <name>FinDirector</name>
      <uri>https://stocksharp.ru/users/473/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexey Gorbunov &lt;a href="https://stocksharp.ru/posts/m/17318/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Класс, супер! Спасибо большое. Можно Ваши статьи поместить на наш сайт?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Конечно.&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/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.ru/users/341/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Класс, супер! Спасибо большое. Можно Ваши статьи поместить на наш сайт?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>