Загрузка стратегий с помощью XAML
XAML можно использовать не только для UI, а просто и для создания объектов. Поделюсь следующей идеей. В неком файле Strategies.config храним список стратегий со всеми параметрами в виде XAML. Набор параметров у каждого типа стратегий разный.
Code
<StrategyLoader
xmlns="clr-namespace:FinDirector;assembly=FinDirector"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Strategies="clr-namespace:FinDirector.Strategies;assembly=FinDirector">
<StrategyLoader.Resources>
<x:string x:Key="RTSCode">RIH2</x:string>
<x:string x:Key="SiCode">SIH2</x:string>
</StrategyLoader.Resources>
<StrategyLoader.Strategies>
<Strategies:CamarillaStrategy timeFrame="1:00:00" SecurityCode="{x:Static RTSCode}">
<Strategies:CamarillaStrategy.positionSizer>
<Strategies:MarginPositionSizer Ratio="0.2"/>
</Strategies:CamarillaStrategy.positionSizer>
</Strategies:CamarillaStrategy>
</StrategyLoader.Strategies>
</StrategyLoader>
Можно загрузить список таких стратегий и автоматически инициализировать все нужные нам свойства следующим кодом:
Code
[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<Strategy> { }