﻿<?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">Загрузка стратегий с помощью XAML</title>
  <id>~/topic/2445/zagruzka-strategii-s-pomoshshyu-xaml/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-04T06:20:32Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=2445" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/16832/</id>
    <title type="text">Стратегия выглядит как-то так: public class CamarillaStrategy : Strategy, ICandleStrategy { public I...</title>
    <published>2012-02-29T09:10:34Z</published>
    <updated>2012-02-29T09:24:12Z</updated>
    <author>
      <name>FinDirector</name>
      <uri>https://stocksharp.com/users/473/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Стратегия выглядит как-то так:&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 class CamarillaStrategy : Strategy, ICandleStrategy
	{
		public ICandleManager CandleManager { get; set; }
		public TimeSpan timeFrame { get; set; }
		public IPositionSizer positionSizer { get; set; }
		public string SecurityCode { get; set; }

		CandleToken candleToken;

		protected override void OnStarting()
		{
			this.Volume = this.positionSizer.GetQuantity(this.Portfolio, this.Security);

			if (CandleManager.IsTimeFrameCandlesRegistered(Security, timeFrame))
			{
				candleToken = CandleManager.GetToken(typeof(TimeFrameCandle), Security, timeFrame);
			}
			else
			{
				candleToken = CandleManager.RegisterTimeFrameCandles(Security, timeFrame);
			}

			this.When(candleToken.CandlesFinished())
				.Do&amp;lt;IEnumerable&amp;lt;Candle&amp;gt;&amp;gt;(OnCandlesFinished);

			base.OnStarting();
		}
	}

	public interface IPositionSizer
	{
		int GetQuantity(Portfolio portfolio, Security security);
	}

	public class MarginPositionSizer : IPositionSizer
	{
		public double Ratio { get; set; }
		public decimal MaxCapital { get; set; }

		public MarginPositionSizer()
		{
			MaxCapital = Settings.MaxCapital;
		}

		public int GetQuantity(Portfolio portfolio, Security security)
		{
			decimal capital = Math.Min(portfolio.BeginAmount.Value, MaxCapital);
			int quantity = (int)(capital * (decimal)Ratio / security.MarginBuy);
			return quantity;
		}
	}

	public interface ICandleStrategy
	{
		ICandleManager CandleManager { get; set; }
	}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;В общем получится, что можно через 1 конфигурационный файл задать список всех стратегий со всеми свойствами. Если кому понравилась идея - пользуйтесь.[biggrin]</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/16831/</id>
    <title type="text">XAML можно использовать не только для UI, а просто и для создания объектов. Поделюсь следующей идеей...</title>
    <published>2012-02-29T09:08:23Z</published>
    <updated>2012-02-29T09:23:24Z</updated>
    <author>
      <name>FinDirector</name>
      <uri>https://stocksharp.com/users/473/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">XAML можно использовать не только для UI, а просто и для создания объектов. Поделюсь следующей идеей. В неком файле Strategies.config храним список стратегий со всеми параметрами в виде XAML. Набор параметров у каждого типа стратегий разный.&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;
&amp;lt;StrategyLoader
  xmlns=&amp;quot;clr-namespace:FinDirector;assembly=FinDirector&amp;quot;
  xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
  xmlns:Strategies=&amp;quot;clr-namespace:FinDirector.Strategies;assembly=FinDirector&amp;quot;&amp;gt;

  &amp;lt;StrategyLoader.Resources&amp;gt;
    &amp;lt;x:string x:Key=&amp;quot;RTSCode&amp;quot;&amp;gt;RIH2&amp;lt;/x:string&amp;gt;
    &amp;lt;x:string x:Key=&amp;quot;SiCode&amp;quot;&amp;gt;SIH2&amp;lt;/x:string&amp;gt;
  &amp;lt;/StrategyLoader.Resources&amp;gt;
  
  &amp;lt;StrategyLoader.Strategies&amp;gt;
    &amp;lt;Strategies:CamarillaStrategy timeFrame=&amp;quot;1:00:00&amp;quot; SecurityCode=&amp;quot;{x:Static RTSCode}&amp;quot;&amp;gt;
      &amp;lt;Strategies:CamarillaStrategy.positionSizer&amp;gt;
        &amp;lt;Strategies:MarginPositionSizer Ratio=&amp;quot;0.2&amp;quot;/&amp;gt;
      &amp;lt;/Strategies:CamarillaStrategy.positionSizer&amp;gt;
    &amp;lt;/Strategies:CamarillaStrategy&amp;gt;

  &amp;lt;/StrategyLoader.Strategies&amp;gt;
&amp;lt;/StrategyLoader&amp;gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&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;
	[Serializable]
	public class StrategyLoader
	{
		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;Strategy&amp;gt; { }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/16833/</id>
    <title type="text">Если кому понравилась идея - пользуйтесь. Код бы еще тегами отредактировать.</title>
    <published>2012-02-29T09:15:25Z</published>
    <updated>2012-02-29T09:15:25Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;FinDirector &lt;a href="https://stocksharp.com/posts/m/16832/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Если кому понравилась идея - пользуйтесь.[biggrin] &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Код бы еще тегами отредактировать.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>