public AlligatorTrend(string name, StartProgram startProgram) : base(name, startProgram) { _startProgram = startProgram; // создаем вкладку робота TabCreate(BotTabType.Simple); _tab = TabsSimple[0]; // создаем настроечные параметры робота Regime = CreateParameter("Режим работы бота", "Off", new[] { "On", "Off", "OnlyClosePosition", "OnlyShort", "OnlyLong" }); AlligatorFastLenght = CreateParameter("Длина быстрого алигатора", 100, 50, 200, 10); AlligatorMiddleLenght = CreateParameter("Длина среднего алигатора", 100, 50, 200, 10); AlligatorSlowLenght = CreateParameter("Длина медленного алигатора", 100, 50, 200, 10); Volume = CreateParameter("Объем входа в позицию", 1.0m, 1.0m, 100.0m, 1.0m); MaxPositionCount = CreateParameter("Максимальное количество позиций", 2, 1, 10, 1); Slippage = CreateParameter("Проскальзывание (в шагах цены)", 350, 1, 500, 50); // создаем индикаторы на вкладке робота и задаем для них параметры _alligator = IndicatorsFactory.CreateIndicatorByName("Alligator", name + "Alligator", false); _alligator = (Aindicator)_tab.CreateCandleIndicator(_alligator, "Prime"); _alligator.ParametersDigit[0].Value = AlligatorSlowLenght.ValueInt; _alligator.ParametersDigit[1].Value = AlligatorFastLenght.ValueInt; _alligator.ParametersDigit[2].Value = AlligatorMiddleLenght.ValueInt; _alligator.Save(); // подписываемся на события _tab.CandleFinishedEvent += _tab_CandleFinishedEvent; ParametrsChangeByUser += AlligatorTrend_ParametrsChangeByUser; }
/// <summary> /// create string parameter / /// создать параметр типа String /// </summary> /// <param name="name">param name / Имя параметра</param> /// <param name="value">default value / Значение по умолчанию</param> public StrategyParameterString CreateParameter(string name, string value) { StrategyParameterString newParameter = new StrategyParameterString(name, value); if (_parameters.Find(p => p.Name == name) != null) { throw new Exception(OsLocalization.Trader.Label52); } return((StrategyParameterString)LoadParameterValues(newParameter)); }
/// <summary> /// создать параметр типа String /// </summary> /// <param name="name">Имя параметра</param> /// <param name="value">Значение по умолчанию</param> /// <param name="collection">Возможные значения для параметра</param> public StrategyParameterString CreateParameter(string name, string value, string[] collection) { StrategyParameterString newParameter = new StrategyParameterString(name, value, collection.ToList()); if (_parameters.Find(p => p.Name == name) != null) { throw new Exception("Ахтунг! Параметр с таким именем уже существует!"); } return((StrategyParameterString)LoadParameterValues(newParameter)); }
public List <IIStrategyParameter> GetParameters() { List <IIStrategyParameter> par = new List <IIStrategyParameter>(); for (int i = 0; i < StrategyParameters.Count; i++) { StrategyParameterType type; Enum.TryParse(StrategyParameters[i].Split('$')[0], out type); string name = StrategyParameters[i].Split('$')[2]; IIStrategyParameter param = null; if (type == StrategyParameterType.Bool) { param = new StrategyParameterBool(name, false); param.LoadParamFromString(StrategyParameters[i].Split('$')[1].Split('#')); } else if (type == StrategyParameterType.Decimal) { param = new StrategyParameterDecimal(name, 0, 0, 0, 0); param.LoadParamFromString(StrategyParameters[i].Split('$')[1].Split('#')); } else if (type == StrategyParameterType.Int) { param = new StrategyParameterInt(name, 0, 0, 0, 0); param.LoadParamFromString(StrategyParameters[i].Split('$')[1].Split('#')); } else if (type == StrategyParameterType.String) { param = new StrategyParameterString(name, "", null); param.LoadParamFromString(StrategyParameters[i].Split('$')[1].Split('#')); } else if (type == StrategyParameterType.TimeOfDay) { param = new StrategyParameterTimeOfDay(name, 0, 0, 0, 0); param.LoadParamFromString(StrategyParameters[i].Split('$')[1].Split('#')); } else if (type == StrategyParameterType.Button) { param = new StrategyParameterButton(name); param.LoadParamFromString(StrategyParameters[i].Split('$')[1].Split('#')); } else if (type == StrategyParameterType.Label) { param = new StrategyParameterLabel(name, "", "", 0, 0, System.Drawing.Color.White); param.LoadParamFromString(StrategyParameters[i].Split('$')[1].Split('#')); } par.Add(param); } return(par); }
public decimal _min_lot; // поле хранящее величину минимального лота для биржи public MyBlanks(string name, StartProgram startProgram) : base(name, startProgram) // конструктор робота тут { // инициализация переменных и параметров price = 1; _kom = 0; kvot_val = CreateParameter("КвотВалюта-Инструмент", "USDT"); tovar_val = CreateParameter("Базовая Валюта-Товар", "BTC"); komis_birgi = CreateParameter("КОМ биржи в %", 0.2m, 0, 0.1m, 0.1m); TabCreate(BotTabType.Simple); // создание простой вкладки _tab = TabsSimple[0]; // записываем первую вкладку в поле _tab.MarketDepthUpdateEvent += _tab_MarketDepthUpdateEvent; }
/// <summary> /// copy parameter list /// копировать список параметров /// </summary> private List <IIStrategyParameter> CopyParameters(List <IIStrategyParameter> paramsToCopy) { List <IIStrategyParameter> newParameters = new List <IIStrategyParameter>(); for (int i = 0; i < paramsToCopy.Count; i++) { IIStrategyParameter newParam = null; if (paramsToCopy[i].Type == StrategyParameterType.Bool) { newParam = new StrategyParameterBool(paramsToCopy[i].Name, ((StrategyParameterBool)paramsToCopy[i]).ValueBool); } else if (paramsToCopy[i].Type == StrategyParameterType.String) { newParam = new StrategyParameterString(paramsToCopy[i].Name, ((StrategyParameterString)paramsToCopy[i]).ValueString, ((StrategyParameterString)paramsToCopy[i]).ValuesString); } else if (paramsToCopy[i].Type == StrategyParameterType.Int) { newParam = new StrategyParameterInt(paramsToCopy[i].Name, ((StrategyParameterInt)paramsToCopy[i]).ValueIntDefolt, ((StrategyParameterInt)paramsToCopy[i]).ValueIntStart, ((StrategyParameterInt)paramsToCopy[i]).ValueIntStop, ((StrategyParameterInt)paramsToCopy[i]).ValueIntStep); ((StrategyParameterInt)newParam).ValueInt = ((StrategyParameterInt)paramsToCopy[i]).ValueIntStart; } else if (paramsToCopy[i].Type == StrategyParameterType.Decimal) { newParam = new StrategyParameterDecimal(paramsToCopy[i].Name, ((StrategyParameterDecimal)paramsToCopy[i]).ValueDecimalDefolt, ((StrategyParameterDecimal)paramsToCopy[i]).ValueDecimalStart, ((StrategyParameterDecimal)paramsToCopy[i]).ValueDecimalStop, ((StrategyParameterDecimal)paramsToCopy[i]).ValueDecimalStep); ((StrategyParameterDecimal)newParam).ValueDecimal = ((StrategyParameterDecimal)paramsToCopy[i]).ValueDecimalStart; } newParameters.Add(newParam); } return(newParameters); }
/// <summary> /// Конструктор /// </summary> /// <param name="name">Имя робота</param> /// <param name="startProgram">Программа, в которой запущен робот</param> public BollingerTrend(string name, StartProgram startProgram) : base(name, startProgram) { _startProgram = startProgram; // создаем вкладку робота Simple TabCreate(BotTabType.Simple); _tab = TabsSimple[0]; // создаем настроечные параметры робота Regime = CreateParameter("Режим работы бота", "Off", new[] { "On", "Off", "OnlyClosePosition", "OnlyShort", "OnlyLong" }); OnDebug = CreateParameter("Включить отладку", false); OnDepositFixed = CreateParameter("Включить режим фикс. депозита", false); DepositFixedSize = CreateParameter("Размер фикс. депозита", 100, 100.0m, 100, 100); DepositNameCode = CreateParameter("Код инструмента, в котором депозит", "USDT", new[] { "USDT", "" }); VolumePercent = CreateParameter("Объем входа в позицию (%)", 50, 40, 300, 10); BollingerPeriod = CreateParameter("Длина болинжера", 100, 50, 200, 10); BollingerDeviation = CreateParameter("Отклонение болинжера", 1.5m, 1.0m, 3.0m, 0.2m); MethodOutOfPosition = CreateParameter("Метод выхода из позиции", "ChannelBoundary", new[] { "ChannelBoundary", "ChannelCenter" }); OnStopForBreakeven = CreateParameter("Вкл. стоп для перевода в безубытк", true); MinProfitOnStopBreakeven = CreateParameter("Мин. профит для перевода в безубытк (%)", 7, 5, 20, 1); Slippage = CreateParameter("Проскальзывание (в шагах цены)", 350, 1, 500, 50); VolumeDecimals = CreateParameter("Кол. знаков после запятой для объема", 4, 4, 10, 1); ShiftTimeExchange = CreateParameter("Разница времени с биржей", 5, -10, 10, 1); // создаем индикаторы на вкладке робота и задаем для них параметры _bollinger = IndicatorsFactory.CreateIndicatorByName("Bollinger", name + "Bollinger", false); _bollinger = (Aindicator)_tab.CreateCandleIndicator(_bollinger, "Prime"); _bollinger.ParametersDigit[0].Value = BollingerPeriod.ValueInt; _bollinger.ParametersDigit[1].Value = BollingerDeviation.ValueDecimal; _bollinger.Save(); // подписываемся на события _tab.CandleFinishedEvent += Tab_CandleFinishedEvent; _tab.PositionClosingFailEvent += Tab_PositionClosingFailEvent; _tab.PositionClosingSuccesEvent += Tab_PositionClosingSuccesEvent; _tab.PositionOpeningFailEvent += Tab_PositionOpeningFailEvent; _tab.MarketDepthUpdateEvent += Tab_MarketDepthUpdateEvent; ParametrsChangeByUser += BollingerTrend_ParametrsChangeByUser; }
public PriceLavelBot(string name, StartProgram startProgram) : base(name, startProgram) { this.ParametrsChangeByUser += PriceLavelBot_ParametrsChangeByUser; TabCreate(BotTabType.Simple); _tab = TabsSimple[0]; SessionAsia = CreateParameter("Торговать Азию", false); SessionEU = CreateParameter("Торговать Европу", false); SessionUSA = CreateParameter("Торговать Америку", false); SessionRUS = CreateParameter("Торговать Россию", false); SessionDay = CreateParameter("Круглосуточно", false); _TradeSessions = new TradeSessions(name + "_TradeSessions", false, GetListSessionTypes()); _TradeSessions = (TradeSessions)_tab.CreateCandleIndicator(_TradeSessions, "Prime"); _TradeSessions.Save(); PriceLevleLine = new PriceLevleLine(name + "_PriceLevleLine", false); PriceLevleLine = (PriceLevleLine)_tab.CreateCandleIndicator(PriceLevleLine, "Prime"); PriceLevleLine.PaintOn = false; PriceLevleLine.Save(); maLenth = CreateParameter("maLenth", 24, 24, 48, 1); maVolume = new MovingAverage(name + "_maVolume", false); maVolume = (MovingAverage)_tab.CreateCandleIndicator(maVolume, "New1"); maVolume.Lenght = maLenth.ValueInt; maVolume.TypeCalculationAverage = MovingAverageTypeCalculation.Exponential; maVolume.TypePointsToSearch = PriceTypePoints.Volume; maVolume.Save(); maVolumeSlow = new MovingAverage(name + "maVolumeSlow", false); maVolumeSlow = (MovingAverage)_tab.CreateCandleIndicator(maVolumeSlow, "New1"); maVolumeSlow.ColorBase = System.Drawing.Color.Green; maVolumeSlow.Lenght = 48; maVolumeSlow.TypeCalculationAverage = MovingAverageTypeCalculation.Simple; maVolumeSlow.TypePointsToSearch = PriceTypePoints.Volume; maVolumeSlow.Save(); mA = new MovingAverage(name + "mA", false) { Lenght = 9 }; mA = (MovingAverage)_tab.CreateCandleIndicator(mA, "Prime"); mA.Save(); Regime = CreateParameter("Regime", "Off", new[] { "Off", "On" }); UseSafe = CreateParameter("Использовать сейф", true); _Volume = CreateParameter("Volume", 1, 0.00m, 100, 1); MinProfitTraling = CreateParameter("Минимальный профит для трэйлинга", 0.2m, 0.2m, 2, 0.1m); MaxStop = CreateParameter("MaxStop", 1, 1, 10, 0.1m); _Slipage = CreateParameter("_Slipage", 1, 1, 50, 1); leverage = CreateParameter("Маржинальное плечо", 1, 1, 10, 1); StepCount = CreateParameter("Ордеров в лесенке", 1, 1, 10, 1); DepoCurrency = CreateParameter("DepoCurrency", "Currency2", new[] { "Currency1", "Currency2" }); isContract = CreateParameter("Торгуем контрактами", false); PaintLevels = CreateParameter("Отрисовывать уровни", true); Breakeven = CreateParameter("Использовать безубыток", true); NeedBreakeven = Breakeven.ValueBool; DeltaSizeK = CreateParameter("Делитель основного ТФ", 6, 1, 40, 1); _tab.CandleFinishedEvent += _tab_CandleFinishedEvent; _tab.CandleUpdateEvent += _tab_CandleUpdateEvent; _tab.PositionOpeningSuccesEvent += _tab_PositionOpeningSuccesEvent; _tab.NewTickEvent += _tab_NewTickEvent; _tab.FirstTickToDayEvent += _tab_FirstTickToDayEvent; _tab.PositionClosingSuccesEvent += _tab_PositionClosingSuccesEvent; //Младший тайм фрейм TabCreate(BotTabType.Simple); _tab_pattern = TabsSimple[1]; _tab_pattern.CandleFinishedEvent += _tab_pattern_CandleFinishedEvent; delta_pattern = new Delta(name + "_delta", false); delta_pattern = (Delta)_tab_pattern.CreateCandleIndicator(delta_pattern, "New1"); delta_pattern.Save(); Volume_pattern = new Volume(name + "_Volume", false); Volume_pattern = (Volume)_tab_pattern.CreateCandleIndicator(Volume_pattern, "New2"); Volume_pattern.Save(); //график Дельты TabCreate(BotTabType.Simple); _tab_delta = TabsSimple[2]; _tab_delta.CandleFinishedEvent += _tab_delta_CandleFinishedEvent;; delta_delta = new Delta(name + "delta_delta", false); delta_delta = (Delta)_tab_delta.CreateCandleIndicator(delta_delta, "New1"); delta_delta.Save(); Volume_delta = new Volume(name + "delta_Volume", false); Volume_delta = (Volume)_tab_delta.CreateCandleIndicator(Volume_delta, "New2"); Volume_delta.Save(); // lines = new List<LineHorisontal>(); Thread closerThread = new Thread(CloseFailPosition); closerThread.IsBackground = true; closerThread.Start(); }