/// <summary> /// очистить журнал и графики /// </summary> public void Clear() { try { if (_botTabs == null || _botTabs.Count == 0) { return; } for (int i = 0; i < _botTabs.Count; i++) { if (_botTabs[i].GetType().Name == "BotTabSimple") { BotTabSimple bot = (BotTabSimple)_botTabs[i]; bot.ClearAceberg(); bot.BuyAtStopCanсel(); bot.SellAtStopCanсel(); bot.Clear(); } if (_botTabs[i].GetType().Name == "BotTabIndex") { BotTabIndex bot = (BotTabIndex)_botTabs[i]; bot.Clear(); } } } catch (Exception error) { SendNewLogMessage(error.ToString(), LogMessageType.Error); } }
/// <summary> /// create tab / /// создать вкладку /// </summary> public void TabCreate(BotTabType tabType) { try { int number; if (_botTabs == null || _botTabs.Count == 0) { number = 0; } else { number = _botTabs.Count; } string nameTab = NameStrategyUniq + "tab" + number; if (_botTabs != null && _botTabs.Find(strategy => strategy.TabName == nameTab) != null) { return; } if (_botTabs == null) { _botTabs = new List <IIBotTab>(); } IIBotTab newTab; if (tabType == BotTabType.Simple) { newTab = new BotTabSimple(nameTab, StartProgram); } else if (tabType == BotTabType.Index) { newTab = new BotTabIndex(nameTab, StartProgram); } else if (tabType == BotTabType.Cluster) { newTab = new BotTabCluster(nameTab, StartProgram); } else { return; } _botTabs.Add(newTab); newTab.LogMessageEvent += SendNewLogMessage; newTab.TabNum = _botTabs.Count - 1; ChangeActivTab(_botTabs.Count - 1); ReloadTab(); } catch (Exception error) { SendNewLogMessage(error.ToString(), LogMessageType.Error); } }
public BotTabCandleSpreadUi(BotTabIndex spread) { InitializeComponent(); CreateTable(); _spread = spread; ReloadSecurityTable(); TextboxUserFormula.Text = _spread.UserFormula; }
/// <summary> /// создать вкладку /// </summary> /// <param name="tabType">тип вкладки</param> public void TabCreate(BotTabType tabType) { try { int number; if (_botTabs == null || _botTabs.Count == 0) { number = 0; } else { number = _botTabs.Count; } string nameTab = NameStrategyUniq + "tab" + number; if (_botTabs != null && _botTabs.Find(strategy => strategy.TabName == nameTab) != null) { // если мы создаём вкладку программно, то возможно это не первая загрузка и // она уже подгрузилась из сохранения. И тогда мы просто выходим return; } if (_botTabs == null) { _botTabs = new List <IIBotTab>(); } IIBotTab newTab; if (tabType == BotTabType.Simple) { newTab = new BotTabSimple(nameTab); } else if (tabType == BotTabType.Index) { newTab = new BotTabIndex(nameTab); } else { return; } _botTabs.Add(newTab); newTab.LogMessageEvent += SendNewLogMessage; newTab.TabNum = _botTabs.Count - 1; ChangeActivTab(_botTabs.Count - 1); ReloadTab(); } catch (Exception error) { SendNewLogMessage(error.ToString(), LogMessageType.Error); } }
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; }