Пользовательские роботы в отдельном классе - это быстро и удобно
Цитата: mrmr
Предлагаю создавать пользовательских роботов в отдельном классе. Вот видео с демонстрацией.
Базовый класс
Обучение уже написано. И в ближайшие год ничего меняться точно не будет.
Хотите - используйте данный метод. Он тоже работает.
Предлагаю создавать пользовательских роботов в отдельном классе. Вот видео с демонстрацией.
Базовый класс
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using OsEngine.Entity; using OsEngine.OsTrader.Panels.Tab; namespace OsEngine.OsTrader.Panels { public class MyRobot1 : BotPanel { public override string GetNameStrategyType() { return this.GetType().Name; } public override void ShowIndividualSettingsDialog() { MessageBox.Show("Пока нет."); } // переменные private BotTabSimple tab1; public MyRobot1(string name) : base(name) { TabCreate(BotTabType.Simple); tab1 = TabsSimple[0]; tab1.CandleFinishedEvent += tab1_CandleFinishedEvent; tab1.PositionOpeningSuccesEvent += tab1_PositionOpeningSuccesEvent; } void tab1_PositionOpeningSuccesEvent(Entity.Position position) { } void tab1_CandleFinishedEvent(List<entity.candle> candles) { } } }
Куски кода для PanelCreator
См. ниже.
Попробовал. Довольно удобно, особенно для однотипных стратегий в которых меняются только инструменты..
Небольшое улучшение.
Теперь можно создавать пользовательских роботов с любым названием, главное, чтобы в названии было "MyRobot", например, "MyRobotSuperStrat" или "Test_MyRobot".
public static List<string> GetNamesStrategy() { List<string> result = new List<string>(); // пользовательские боты (должны иметь в названии 'MyRobot') string _defaultName = "MyRobot"; System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly(); foreach (Type type in myAssembly.GetTypes()) { if (type.Name.Contains(_defaultName)) { result.Add(type.Name); } }
public static BotPanel GetStrategyForName(string nameClass, string name) { BotPanel bot = null; // пользовательские боты (должны иметь в названии 'MyRobot') string _defaultName = "MyRobot"; System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly(); foreach (Type type in myAssembly.GetTypes()) { if (type.Name.Contains(_defaultName)) { bot = Activator.CreateInstance(type, name) as BotPanel; } }
Спасибо за дополнительное удобство!
Сейчас буду пробовать.
При обновлении Os.Engine в самый раз переносить файлы с ботами.
ООО «ВАН ТЕХНОЛОГИИ»т: +7 953 769 56 45
* Торговля на финансовых рынках связана с риском, который лежит на Вас.
* Ничто из написанного на сайте o-s-a.net не является рекомендацией.
* Если Вы этого не понимаете, не читайте этот сайт, ничего не покупайте.