Рефакторинг метаданных~/topic/1437/refaktoring-metadannyh/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T10:08:23Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/6866/Проект теперь компилируется. Good news everyone! Отрефакторил класс PlazaType.2011-03-18T15:26:46Z2011-03-18T15:26:46ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/6776/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">aspirant <a href="https://stocksharp.ru/posts/m/6769/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Проект теперь компилируется.</div></div><br /><br />Good news everyone!</div></div><br /><br />Отрефакторил класс PlazaType.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6776/Проект теперь компилируется. Good news everyone!2011-03-17T08:32:13Z2011-03-17T08:32:13ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">aspirant <a href="https://stocksharp.ru/posts/m/6769/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Проект теперь компилируется.</div></div><br /><br />Good news everyone!Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6769/Закончил рефакторить метаданные. Добавил статические переменные в PlazaColumns для всех недостающих ...2011-03-16T20:15:54Z2011-03-16T20:15:54Zaspiranthttps://stocksharp.ru/users/6114/info@stocksharp.ruЗакончил рефакторить метаданные. Добавил статические переменные в PlazaColumns для всех недостающих наследников PlazaColumns. Проект теперь компилируется.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6749/Сегодня планирую завершить рефакторинг метаданных. Когда вчера и позавчера правил файлы, столкнулся ...2011-03-16T12:45:49Z2011-03-16T12:45:49ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">aspirant <a href="https://stocksharp.ru/posts/m/6744/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Сегодня планирую завершить рефакторинг метаданных. Когда вчера и позавчера правил файлы, столкнулся с таким расхождением: все классы фючерсов называются сокращенно, например, Plaza<b>Fut</b>SessionContentsColumns, все классы опционов - полностью, например, Plaza<b>Option</b>SessionSettlementColumns. Хочу привести все к единому стандарту. Что берем за основу: краткую версию или длинную?</div></div><br /><br />Лучше длинное. Более правильное, что ли. Да и при такой длине слова как PlazaOptionSessionSettlementColumns не особо различимо.[biggrin] Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6744/Сегодня планирую завершить рефакторинг метаданных. Когда вчера и позавчера правил файлы, столкнулся ...2011-03-16T12:13:29Z2011-03-16T12:13:29Zaspiranthttps://stocksharp.ru/users/6114/info@stocksharp.ruСегодня планирую завершить рефакторинг метаданных. Когда вчера и позавчера правил файлы, столкнулся с таким расхождением: все классы фючерсов называются сокращенно, например, Plaza<b>Fut</b>SessionContentsColumns, все классы опционов - полностью, например, Plaza<b>Option</b>SessionSettlementColumns. Хочу привести все к единому стандарту. Что берем за основу: краткую версию или длинную?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6639/Уже есть PlazaColumnList OK, использую его. 2011-03-13T19:39:54Z2011-03-13T19:39:54Zaspiranthttps://stocksharp.ru/users/6114/info@stocksharp.ru<div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/6635/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Уже есть PlazaColumnList</div></div><br /><br />OK, использую его.<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6635/Для создания схем (ini файлов для получения данных из стримов Плазы) я добавил класс PlazaColumnSet....2011-03-13T18:07:11Z2011-03-13T18:07:11ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">aspirant <a href="https://stocksharp.ru/posts/m/6633/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Для создания схем (ini файлов для получения данных из стримов Плазы) я добавил класс PlazaColumnSet. Внутри его конструктора проверяется, что все колонки принадлежат заданной таблице. В будущем его хочу дополнить, чтобы облегчить создание схем.</div></div><br /><br />Лишний класс. Уже есть PlazaColumnList (кстати так же надо в Метадату перетащить), который проверяет на принадлежность. + проверять нужно не в самом конструкторе, а при добавлении колонок. Потому что колонки можно менять динамически (добавлять, удалять).Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6633/Я внес предложенные изменения: PlazaTable перенес в папку Metadata. Теперь этот класс только содержи...2011-03-13T12:46:39Z2011-03-13T12:46:39Zaspiranthttps://stocksharp.ru/users/6114/info@stocksharp.ruЯ внес предложенные изменения:<br /><ol><li>PlazaTable перенес в папку Metadata. Теперь этот класс только содержит метаданные для таблицы из стрима Плазы. Созданием и конфигурированием набора колоннок (полей) для получения данных он больше не занимается.<br /><li>Добавил класс PlazaTableRegister. Он будет содержать переменные типа PlazaTable для всех таблиц Плазы. Для наглядности добавил:<br /><div class="code"><strong>Код</strong><div class="innercode">public static PlazaTable RtsIndex = new PlazaTable(TableName.rts_index, ReplicationStream.RTS_INDEX_REPL, "Индекс РТС");</div></div><br /><li>В конструкторы PlazaColumns и PlazaColumn теперь передается параметр типа PlazaTable.<br /><li>Для создания схем (ini файлов для получения данных из стримов Плазы) я добавил класс PlazaColumnSet. Внутри его конструктора проверяется, что все колонки принадлежат заданной таблице. В будущем его хочу дополнить, чтобы облегчить создание схем.<br /></ol><br />Жду ваши комментарии / пожелания, после чего начну рефакторить папку Metadata.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6609/public class PlazaVmFutureColumns: PlazaVmDerivativeColumns { internal PlazaVmFutureColumns() : base...2011-03-11T12:58:35Z2011-03-11T12:58:35Zaspiranthttps://stocksharp.ru/users/6114/info@stocksharp.ru<div class="code"><strong>Код</strong><div class="innercode">public class PlazaVmFutureColumns: PlazaVmDerivativeColumns<br />{<br /> internal PlazaVmFutureColumns()<br /> : base(PlazaTableRegistry.OptVcb)<br /> {<br /> VmReal = new PlazaColumn(PlazaTableRegistry.OptVcb, "vm_real", typeof(decimal), "d16.5", true);<br /> }<br /><br /> /// <summary><br /> /// Накопленная по сделкам вариационная маржа по фьючерсам, рассчитанная по текущей рыночной котировке.<br /> /// </summary><br /> public readonly PlazaColumn VmReal;<br />}</div></div><br /><br />Михаил, идея хорошая. Только в верхнем коде: таблице opt_vcb соответствует класс PlazaOptionColumns, а для PlazaVmFutureColumns внутри PlazaTableRegistry нужно будет создать переменную VmFuture.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6605/Если дело в названии свойства - без разницы. Если другая концепция, то я не понял. Концепция другая:...2011-03-11T11:53:48Z2011-03-11T11:54:30ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">aspirant <a href="https://stocksharp.ru/posts/m/6602/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/6596/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Если дело в названии свойства - без разницы. Если другая концепция, то я не понял.</div></div><br /><br />Концепция другая: в конструктор передается PlazaColumns owner. Потом, внутри класса PlazaColumn можно получить доступ к свойствам owner'а SystemTableName, ReplicationStream и т.д. Если потом что-то добавится, не нужно будет менять конструктор PlazaColumn. Все хорошо, только нюанс: в конструкторе PlazaColumn с owner'ом ничего нельзя будет сделать[sad]. Он будет еще пока равен null, потому что переменные типа PlazaColumn инициализируются в конструкторе наследника PlazaColumns. Например:<br /><div class="code"><strong>Код</strong><div class="innercode"><br />internal PlazaColumn(PlazaColumn owner, string name, Type dataType)<br />{<br /> //Следующая строчка вызовет исключение, потому мы все еще внутри конструктора PlazaColumns, и поэтому owner == null<br /> var tableName = owner.SystemTableName;<br />}</div></div><br /></div></div><br /><br />Весь смысл содержания SystemTableName в том, чтобы делать проверки на допустимость вставляемых колонок. А так, если owner только потом появиться, то это не очень хорошо... Есть предложение по owner. А почему бы его сразу не передавать в конструктор PlazaColumn? Тоесть, все эти таблицы, которые есть сейчас в Плаза, сразу создать в одном месте. Создаются без каких-либо колонок, просто название потока, таблицы и название человеческое. Например:<br /><br /><div class="code"><strong>Код</strong><div class="innercode">static class PlazaTableRegistry<br />{<br /> public static PlazaTable OptVcb = new PlazaTable("FORTS_OPTINFO_REPL", "opt_vcb", "Опционы");<br />}</div></div><br /><br />и уже потом при создании метаданных это учитывать:<br /><br /><div class="code"><strong>Код</strong><div class="innercode">public class PlazaVmFutureColumns: PlazaVmDerivativeColumns<br />{<br /> internal PlazaVmFutureColumns()<br /> : base(PlazaTableRegistry.OptVcb)<br /> {<br /> VmReal = new PlazaColumn(PlazaTableRegistry.OptVcb, "vm_real", typeof(decimal), "d16.5", true);<br /> }<br /><br /> /// <summary><br /> /// Накопленная по сделкам вариационная маржа по фьючерсам, рассчитанная по текущей рыночной котировке.<br /> /// </summary><br /> public readonly PlazaColumn VmReal;<br />}</div></div><br /><br />А пользователь потом уже сам решит, что в OptVcb добавлять (и добавлять ли вообще).Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6602/Если дело в названии свойства - без разницы. Если другая концепция, то я не понял. Концепция другая:...2011-03-11T10:22:46Z2011-03-11T10:22:46Zaspiranthttps://stocksharp.ru/users/6114/info@stocksharp.ru<div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/6596/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Если дело в названии свойства - без разницы. Если другая концепция, то я не понял.</div></div><br /><br />Концепция другая: в конструктор передается PlazaColumns owner. Потом, внутри класса PlazaColumn можно получить доступ к свойствам owner'а SystemTableName, ReplicationStream и т.д. Если потом что-то добавится, не нужно будет менять конструктор PlazaColumn. Все хорошо, только нюанс: в конструкторе PlazaColumn с owner'ом ничего нельзя будет сделать[sad]. Он будет еще пока равен null, потому что переменные типа PlazaColumn инициализируются в конструкторе наследника PlazaColumns. Например:<br /><div class="code"><strong>Код</strong><div class="innercode"><br />internal PlazaColumn(PlazaColumn owner, string name, Type dataType)<br />{<br /> //Следующая строчка вызовет исключение, потому мы все еще внутри конструктора PlazaColumns, и поэтому owner == null<br /> var tableName = owner.SystemTableName;<br />}</div></div><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6596/Так может тогда 2 свойства ввести для PlazaColumn - StreamName и SystemTableName? А что если: PlazaC...2011-03-11T08:11:00Z2011-03-11T08:11:00ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">aspirant <a href="https://stocksharp.ru/posts/m/6595/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/6592/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Так может тогда 2 свойства ввести для PlazaColumn - StreamName и SystemTableName?</div></div><br /><br />А что если: PlazaColumns owner?<br /></div></div><br /><br />Если дело в названии свойства - без разницы. Если другая концепция, то я не понял.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6595/Так может тогда 2 свойства ввести для PlazaColumn - StreamName и SystemTableName? А что если: PlazaC...2011-03-11T08:00:39Z2011-03-11T08:00:39Zaspiranthttps://stocksharp.ru/users/6114/info@stocksharp.ru<div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/6592/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Так может тогда 2 свойства ввести для PlazaColumn - StreamName и SystemTableName?</div></div><br /><br />А что если: PlazaColumns owner?<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6592/Убрал перечисление PlazaTableTypes. Совершенно бесмысленная информация. Вместо этого за основу взял ...2011-03-11T07:00:49Z2011-03-11T07:00:49ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">aspirant <a href="https://stocksharp.ru/posts/m/6591/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/6588/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Убрал перечисление PlazaTableTypes. Совершенно бесмысленная информация. Вместо этого за основу взял то что раньше называлось PlazaColumns.Table. Теперь везде именуется едино - SystemTableName. Оно равно НазваниеПотока/НазваниеТаблицы.<br /><br />Не закончил до конца. Залил пока не компилябельное. Если есть желающие закончить - посмотрите как пример PlazaUsdOnlineColumns.</div></div><br /><br />Михаил, посмотри, пожалуйста, на мою редакцию PlazaColumns. Комментарии внутри кода. <br /><br />Простое имя таблицы (без имени стрима) мне нужно для создания схем.<br /></div></div><br /><br />Так может тогда 2 свойства ввести для PlazaColumn - StreamName и SystemTableName?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6591/Убрал перечисление PlazaTableTypes. Совершенно бесмысленная информация. Вместо этого за основу взял ...2011-03-11T05:49:14Z2011-03-11T05:49:14Zaspiranthttps://stocksharp.ru/users/6114/info@stocksharp.ru<div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/6588/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Убрал перечисление PlazaTableTypes. Совершенно бесмысленная информация. Вместо этого за основу взял то что раньше называлось PlazaColumns.Table. Теперь везде именуется едино - SystemTableName. Оно равно НазваниеПотока/НазваниеТаблицы.<br /><br />Не закончил до конца. Залил пока не компилябельное. Если есть желающие закончить - посмотрите как пример PlazaUsdOnlineColumns.</div></div><br /><br />Михаил, посмотри, пожалуйста, на мою редакцию PlazaColumns. Комментарии внутри кода. <br /><br />Простое имя таблицы (без имени стрима) мне нужно для создания схем. Потом отдельные свойства для имен таблиц и потоков пригодятся, если понадобится использовать Reflection. Например, чтобы отобрать все свойства-стаканы внутри PlazaColumns, можно сделать:<br /><br /><div class="code"><strong>Код</strong><div class="innercode">var aggregations = PlazaColumns.GetAllMetadata().Where(x => x.SystemTableName == "orders_aggr");</div></div><br />Если возражений нет, я сегодня вечером отредактирую метаданные.<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/6588/Убрал перечисление PlazaTableTypes. Совершенно бесмысленная информация. Вместо этого за основу взял ...2011-03-10T21:50:28Z2011-03-10T21:50:28ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruУбрал перечисление PlazaTableTypes. Совершенно бесмысленная информация. Вместо этого за основу взял то что раньше называлось PlazaColumns.Table. Теперь везде именуется едино - SystemTableName. Оно равно НазваниеПотока/НазваниеТаблицы.<br /><br />Не закончил до конца. Залил пока не компилябельное. Если есть желающие закончить - посмотрите как пример PlazaUsdOnlineColumns.Copyright @ StockSharp Platform LLC 2010 - 2024