﻿<?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-06-04T09:07:26Z</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">&lt;p&gt;В реальном приложении у нас будет много стратегий со своими параметрами, которые проще всего загрузить из XAML файла.
XAML — это декларативный язык разметки. Он упрощает создание пользовательского интерфейса для нашего приложения.&lt;/p&gt;
&lt;p&gt;К настоящему моменту мы уже проделали большую работу по разделению бизнес-логики от UI и теперь можем в форме писать кода типа:&lt;/p&gt;
&lt;p&gt;[code=csharp]		StandardStrategy strategy;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;	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();
	}[/code]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Получилось совсем немного кода. Тем не менее в реальном приложении у нас будет много стратегий и у каждой будет куча параметров. Чтобы не зашивать их в коде, проще всего загрузить их из XAML файла, таком как в примере из статьи [url=http://stocksharp.com/lesson/article.aspx?aid=4]“Создание роботов с помощью S#. Введение”[/url].&lt;/p&gt;
&lt;p&gt;[code=csharp]	public class StrategyLoader : FrameworkElement
{
public StrategyList Strategies { get; set; }&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;	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; { }[/code]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Теперь изменим метод CreateStrategy нашей формы:&lt;/p&gt;
&lt;p&gt;[code=csharp]		StandardStrategy CreateStrategy()
{
var strategy = StrategyLoader.Load(&amp;quot;Strategies.config&amp;quot;).Strategies.FirstOrDefault();
return strategy;
}[/code]&lt;/p&gt;
&lt;p&gt;А в файл Strategies.config поместим все настройки. В коде формы теперь нет ничего лишнего.&lt;/p&gt;
&lt;p&gt;[size=6][right][b]Автор статьи: Вадим Чижов[/b][/right][/size]&lt;/p&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">Может вам награду какую на форуме специальную сделать... [thumbup] </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">&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/17319/</id>
    <title type="text">[quote=Alexey Gorbunov;17318]Класс, супер! Спасибо большое. Можно Ваши статьи поместить на наш сайт?...</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;p&gt;[quote=Alexey Gorbunov;17318]Класс, супер! Спасибо большое. Можно Ваши статьи поместить на наш сайт?[/quote]
Конечно.&lt;/p&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">&lt;p&gt;Класс, супер! Спасибо большое. Можно Ваши статьи поместить на наш сайт?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>