public event Action <MarketFaze> MarketFazeChangeEvent; // событие изменения фазы рынка #endregion /// <summary> /// Конструктор класса робота /// </summary> /// <param name="name">имя робота</param> /// <param name="startProgram">программа, которая запустила робота</param> public OneLegArbitrageMy(string name, StartProgram startProgram) : base(name, startProgram) { //Запоминаем имя программы, которая запустила бота //Это может быть тестер, оптимизатор, терминал _startProgram = startProgram; //Создаем вкладки бота TabCreate(BotTabType.Simple); TabCreate(BotTabType.Index); _tabSec = TabsSimple[0]; _tabIndex = TabsIndex[0]; // создаем настроечные параметры робота LenghtMa = CreateParameter("Lenght MA", 100, 50, 200, 10); LenghtBollinger = CreateParameter("Lenght Bollinger", 100, 50, 200, 10); DeviationBollinger = CreateParameter("Deviation Bollinger", 1, 0.5m, 2.5m, 0.5m); LenghtAtr = CreateParameter("Lenght ATR", 20, 20, 100, 10); MultiplyAtr = CreateParameter("Multiplay ATR", 1, 1, 5, 0.5m); // cоздаем индикаторы _ma = new MovingAverage(name + "MA", false); _ma = (MovingAverage)_tabIndex.CreateCandleIndicator(_ma, "Prime"); _ma.Lenght = LenghtMa.ValueInt; _ma.Save(); _bollinger = new Bollinger(name + "Bollinger", false); _bollinger = (Bollinger)_tabIndex.CreateCandleIndicator(_bollinger, "Prime"); _bollinger.Lenght = LenghtBollinger.ValueInt; _bollinger.Deviation = DeviationBollinger.ValueDecimal; _bollinger.Save(); _atr = new Atr(name + "ATR", false); _atr = (Atr)_tabIndex.CreateCandleIndicator(_atr, "Second"); _atr.Lenght = LenghtAtr.ValueInt; _atr.Save(); // загружаем настроечные параметры робота Load(); // подписываемся на события _tabIndex.SpreadChangeEvent += TabIndex_SpreadChangeEvent; _tabSec.CandleFinishedEvent += TabSec_CandleFinishedEvent; ParametrsChangeByUser += OneLegArbitrage_ParametrsChangeByUser; DeleteEvent += OneLegArbitrage_DeleteEvent; //todo доработать OneLegArbitrage_DeleteEvent, чтобы удалялись все файлы робота }
/// <summary> /// Конструктор класса робота /// </summary> /// <param name="name">Имя робота</param> /// <param name="startProgram">Имя программы, запустившей робота</param> public PairArbitrage(string name, StartProgram startProgram) : base(name, startProgram) { // сохраняем программу, которая запустила робота // это может быть тестер, оптимизатор, терминал _startProgram = StartProgram; // создаем вкладки TabCreate(BotTabType.Simple); TabCreate(BotTabType.Simple); TabCreate(BotTabType.Index); _tab1 = TabsSimple[0]; _tab2 = TabsSimple[1]; _tabIndex = TabsIndex[0]; // создаем оптимизируемые параметры LenghtMA = CreateParameter("LenghtMA", 60, 60, 200, 20); LenghtIvashovMA = CreateParameter("LenghtIvashovMA", 100, 60, 200, 20); LenghtIvashovAverage = CreateParameter("LenghtIvashovAverage", 100, 60, 200, 20); Multiply = CreateParameter("Multiply", 1.0m, 0.6m, 2, 0.2m); // создаем индикаторы _ma = new MovingAverage(name + "ma", false); _ma = (MovingAverage)_tabIndex.CreateCandleIndicator(_ma, "Prime"); _ma.Lenght = LenghtMA.ValueInt; _ma.Save(); _ivashov = new IvashovRange(name + "ivashov", false); _ivashov = (IvashovRange)_tabIndex.CreateCandleIndicator(_ivashov, "Second"); _ivashov.LenghtAverage = LenghtIvashovAverage.ValueInt; _ivashov.LenghtMa = LenghtIvashovMA.ValueInt; _ivashov.Save(); // загружаем настроечные параметры бота Load(); // подписка на событие обновление индекса _tabIndex.SpreadChangeEvent += _tabIndex_SpreadChangeEvent; // подписка на событие успешного открытия сделки по вкладкам _tab1.PositionOpeningSuccesEvent += _tab1_PositionOpeningSuccesEvent; _tab2.PositionOpeningSuccesEvent += _tab2_PositionOpeningSuccesEvent; // подписка на сервисные события ParametrsChangeByUser += PairArbitrage_ParametrsChangeByUser; DeleteEvent += Strategy_DeleteEvent; }