﻿<?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">Сохранение параметров стратегии</title>
  <id>~/topic/1398/sohranenie-parametrov-strategii/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-30T17:46:59Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=1398" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/6590/</id>
    <title type="text">В предыдущем сообщении отредактировал код класса SerializableDictionary чтобы не ругался FxCop. Кто ...</title>
    <published>2011-03-10T23:31:57Z</published>
    <updated>2011-03-10T23:31:57Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">В предыдущем сообщении отредактировал код класса SerializableDictionary чтобы не ругался FxCop.&lt;br /&gt;Кто воспользовался - можете тоже заменить :)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/6475/</id>
    <title type="text">Если я Вас правильно понял, то можете использовать файлы конфигурации. http://msdn.microsoft.com/en-...</title>
    <published>2011-03-07T12:49:44Z</published>
    <updated>2011-03-10T23:30:31Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;KAX &lt;a href="https://stocksharp.com/posts/m/6473/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Если я Вас правильно понял, то можете использовать файлы конфигурации.&lt;br /&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/a65txexh.aspx" title="http://msdn.microsoft.com/en-us/library/a65txexh.aspx"&gt;http://msdn.microsoft.co...us/library/a65txexh.aspx&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Нет, немного не так. Речь именно о хранении внутри робота.&lt;br /&gt;В роботе много стратегий может быть и хорошо уметь с ними работать как с одним типом данных - чтобы обращаться, сериализовать, ....&lt;br /&gt;&lt;br /&gt;2 варианта, которые я видел:&lt;br /&gt;1) Хранить настройки стратегий в виде Dictionary&amp;lt;string, object&amp;gt;&lt;br /&gt;2) Наследоваться от интерфейса и хранить настройки в классах.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Я выбрал первый вариант как наиболее простой и понятный.&lt;br /&gt;Есть только 1 проблема - Dictionary&amp;lt;string, object&amp;gt; не является сериализуемым.&lt;br /&gt;&lt;br /&gt;Но и эта проблема, после поисков в инете, легко решилась.&lt;br /&gt;Кому необходимо - используйте SerializableDictionary:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;using System;&lt;br /&gt;using System.Runtime.Serialization;&lt;br /&gt;using System.Xml;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Xml.Serialization;&lt;br /&gt;&lt;br /&gt;namespace Robots.Entities&lt;br /&gt;{&lt;br /&gt;    &amp;#91;Serializable&amp;#93;&lt;br /&gt;    &amp;#91;XmlRoot(&amp;quot;dictionary&amp;quot;)&amp;#93;&lt;br /&gt;    public class SerializableDictionary&amp;lt;TKey, TValue&amp;gt; : Dictionary&amp;lt;TKey, TValue&amp;gt;, IXmlSerializable&lt;br /&gt;    {&lt;br /&gt;        public SerializableDictionary() { }&lt;br /&gt;        protected SerializableDictionary(SerializationInfo info, StreamingContext context) : base(info, context) { }&lt;br /&gt;&lt;br /&gt;        #region IXmlSerializable Members&lt;br /&gt;        public System.Xml.Schema.XmlSchema GetSchema()&lt;br /&gt;        {&lt;br /&gt;            return null;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void ReadXml(XmlReader reader)&lt;br /&gt;        {&lt;br /&gt;            var keySerializer = new XmlSerializer(typeof(TKey));&lt;br /&gt;            var valueSerializer = new XmlSerializer(typeof(TValue));&lt;br /&gt;&lt;br /&gt;            var wasEmpty = reader.IsEmptyElement;&lt;br /&gt;            reader.Read();&lt;br /&gt;            if (wasEmpty) return;&lt;br /&gt;&lt;br /&gt;            while (reader.NodeType != XmlNodeType.EndElement)&lt;br /&gt;            {&lt;br /&gt;                reader.ReadStartElement(&amp;quot;item&amp;quot;);&lt;br /&gt;&lt;br /&gt;                reader.ReadStartElement(&amp;quot;key&amp;quot;);&lt;br /&gt;                var key = (TKey)keySerializer.Deserialize(reader);&lt;br /&gt;                reader.ReadEndElement();&lt;br /&gt;&lt;br /&gt;                reader.ReadStartElement(&amp;quot;value&amp;quot;);&lt;br /&gt;                var value = (TValue)valueSerializer.Deserialize(reader);&lt;br /&gt;                reader.ReadEndElement();&lt;br /&gt;&lt;br /&gt;                Add(key, value);&lt;br /&gt;&lt;br /&gt;                reader.ReadEndElement();&lt;br /&gt;                reader.MoveToContent();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            reader.ReadEndElement();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void WriteXml(XmlWriter writer)&lt;br /&gt;        {&lt;br /&gt;            var keySerializer = new XmlSerializer(typeof(TKey));&lt;br /&gt;            var valueSerializer = new XmlSerializer(typeof(TValue));&lt;br /&gt;&lt;br /&gt;            foreach (var key in Keys)&lt;br /&gt;            {&lt;br /&gt;                writer.WriteStartElement(&amp;quot;item&amp;quot;);&lt;br /&gt;&lt;br /&gt;                writer.WriteStartElement(&amp;quot;key&amp;quot;);&lt;br /&gt;                keySerializer.Serialize(writer, key);&lt;br /&gt;                writer.WriteEndElement();&lt;br /&gt;&lt;br /&gt;                writer.WriteStartElement(&amp;quot;value&amp;quot;);&lt;br /&gt;                var value = this&amp;#91;key&amp;#93;;&lt;br /&gt;                valueSerializer.Serialize(writer, value);&lt;br /&gt;&lt;br /&gt;                writer.WriteEndElement();&lt;br /&gt;                writer.WriteEndElement();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        #endregion&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;[cool] &lt;br /&gt;&lt;br /&gt;А вот уже все настройки действительно сохраняются легко в AppConfig.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/6473/</id>
    <title type="text">Если я Вас правильно понял, то можете использовать файлы конфигурации. http://msdn.microsoft.com/en-...</title>
    <published>2011-03-07T07:57:15Z</published>
    <updated>2011-03-07T07:57:15Z</updated>
    <author>
      <name>KAX</name>
      <uri>https://stocksharp.com/users/3408/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Если я Вас правильно понял, то можете использовать файлы конфигурации.&lt;br /&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/a65txexh.aspx" title="http://msdn.microsoft.com/en-us/library/a65txexh.aspx"&gt;http://msdn.microsoft.co...us/library/a65txexh.aspx&lt;/a&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/6259/</id>
    <title type="text">У всех множество стратегий и у каждой стратегии обычно есть параметры. Кто как создаёт структуру эти...</title>
    <published>2011-02-26T11:03:52Z</published>
    <updated>2011-02-26T11:03:52Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">У всех множество стратегий и у каждой стратегии обычно есть параметры.&lt;br /&gt;&lt;br /&gt;Кто как создаёт структуру этих параметров в коде на C#?&lt;br /&gt;&lt;br /&gt;Как классы, наследующие один и тот же интерфейс?&lt;br /&gt;Или как dictionary&amp;lt;string, object&amp;gt; - сопоставление имени параметра на значение?&lt;br /&gt;&lt;br /&gt;Есть ли в C# более удобные классы для сохранения параметров?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>