/// <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); }
public Storog(string name, StartProgram startProgram) : base(name, startProgram) // конструктор робота тут { TabCreate(BotTabType.Simple); // создание простой вкладки _tab = TabsSimple[0]; // записываем первую вкладку в поле // инициализация переменных и параметров price = 1; _kom = 0; zakritie = 0; //последняя позиция закрылась по цене vkl_Robota = CreateParameter("РОБОТ Включен?", false); vkl_stopa = CreateParameter("Стоп Включен?", true); do_stopa = CreateParameter(" РАСТ. до СТОПА", 10m, 5m, 100m, 5m); _uroven = CreateParameter("УРОВЕНЬ Работы", 10000m, 100m, 1000m, 50m); slippage = CreateParameter("Велич. проскаль.у ордеров", 1m, 1m, 50m, 5m); part_tovara = CreateParameter("ИСПОЛЬЗ Товара Часть(1/?)", 2, 2, 50, 1); do_piram = CreateParameter(" РАСТ. до Пирамиды", 10m, 5m, 100m, 5m); profit = CreateParameter("ПРОФИТ от рынка На ", 3, 5, 200, 5); dvig = CreateParameter("Движение верх забрать ", 130, 5, 200, 5); ot_rinka = CreateParameter(" Держаться от рынка", 110, 10, 150, 10); //part_depo = CreateParameter("ИСПОЛЬЗ Часть ДЕПО(1/?)", 10, 2, 50, 1); komis_birgi = CreateParameter("КОМ биржи в %", 0.2m, 0, 0.1m, 0.1m); min_lot = CreateParameter("МИН объ.орд у биржи(базовой)", 0.001m, 0.001m, 0.05m, 0.001m); vel_ma = CreateParameter("MA", 2, 3, 50, 1); // записываем в переменную параметры // создание и инициализация индикатора МА _ma = new MovingAverage(name + "Ma", true); _ma = (MovingAverage)_tab.CreateCandleIndicator(_ma, "Prime"); _ma.Lenght = vel_ma.ValueInt; // присвоение значения _ma.Save(); _tab.CandleFinishedEvent += _tab_CandleFinishedEvent; // подписались на событие завершения новой свечи _tab.NewTickEvent += _tab_NewTickEvent; // тики _tab.MarketDepthUpdateEvent += _tab_MarketDepthUpdateEvent; // событие пришел стакан _tab.PositionOpeningSuccesEvent += _tab_PositionOpeningSuccesEvent; // событие успешного открытия позиции _tab.PositionClosingSuccesEvent += _tab_PositionClosingSuccesEvent; // событие успешного закрытия позиции }
private StrategyParameterInt alarn_persent; // с каким использованным % депо можно закрывать убыточную сделку public Frankbol_for_bnb(string name, StartProgram startProgram) : base(name, startProgram) // конструктор { TabCreate(BotTabType.Simple); // создание простой вкладки _tab = TabsSimple[0]; // записываем первую вкладку в поле kvot_name = "USDT"; // тут надо указать - инициализировать название квотируемой валюты (деньги) tovar_name = "BNB"; // тут надо указать - инициализировать название товара vkl_Robota = CreateParameter("РОБОТ Включен?", false); slippage = CreateParameter("Велич. проскаль.у ордеров", 1m, 1m, 200m, 5m); profit = CreateParameter("ТЭЙКПРОФИТ от рынка На ", 10, 5, 50, 5); greed = CreateParameter("Сколько минимум прибыли ожидать в сделке на каждые 100$ ", 0.55m, 0.25m, 5.5m, 0.05m); // жадность greed_max = CreateParameter("Сколько Максимум прибыли ожидать в сделке на каждые 100$ ", 1.25m, 0.25m, 5.5m, 0.05m); // жадность velich_usrednen = CreateParameter("Усред.уваелич в раз ", 0.01m, 0.01m, 0.5m, 0.01m); do_piram = CreateParameter(" РАСТ. до Пирамиды", 20m, 5m, 200m, 5m); turbo_shift = CreateParameter(" Turbo добавлять", 50m, 5m, 200m, 5m); pir_of = CreateParameter(" ОТКлючить Пирамиду при % товара", 10m, 5m, 100m, 5m); vkl_piramid = CreateParameter("Пирамида включена?", false); prof_on = CreateParameter("Забирать профит с % ", 10m, 5m, 100m, 5m); ckok_profit_stop = CreateParameter("Сколько ПРИБЫЛИ закрывать стоп ордером? ", 1m, 0.01m, 10m, 0.01m); vkl_stopa = CreateParameter("Стоп Включен?", true); deltaUsredn = CreateParameter("УСРЕДнять через", 20m, 5m, 50m, 5m); start_per_depo = CreateParameter("СТАРТОВАТЬ с ? % депо)", 5, 5, 20, 5); min_sum = CreateParameter("МИН сумма орд.на бирже($)", 10.1m, 10.1m, 10.1m, 10.1m); komis_birgi = CreateParameter("КОМ биржи в %", 0.2m, 0, 0.1m, 0.1m); uchet_blok_sred_vkl = CreateParameter("Учитывать блокир. средства?", false); n_min = CreateParameter("зависание снимать через N минут ", 1, 1, 20, 1); volum_alarm = CreateParameter("АВАРИЙНЫЙ ОБЪЕМ ПРОДАЖ", 450, 150, 1000, 50); kpit_sum = CreateParameter("Закр. Позицию с УБЫТОКОМ от ", -1m, 10.1m, 10.1m, 10.1m); vkl_met_fix_loss_time = CreateParameter("Закрываться по ВРЕМЕНИ в убыток ? ", true); vkl_alarm_volum = CreateParameter("Убыток по ОБЪЕМАМ Закрывать ? ", false); Itogo = CreateParameter("Итого Заработано ", 0m, 0m, 0m, 0m); n_min_lesion = CreateParameter("Закрывать убыток через N минут ", 120, 30, 360, 20); sprint = CreateParameter("Большие объемы это когда больше = ", 101, 50, 200, 50); alarn_persent = CreateParameter("% купленного можно сливать = ", 25, 50, 100, 1); _bolin = new Bollinger(name + "Bollinger", false); _bolin.Lenght = 20; _bolin.Deviation = 2.2m; _bolin = (Bollinger)_tab.CreateCandleIndicator(_bolin, "Prime"); _bolin.Save(); block_in = true; // инициализируем значение блокировки _ma_short = new MovingAverage(name + "Ma5", true); _ma_short = (MovingAverage)_tab.CreateCandleIndicator(_ma_short, "Prime"); _ma_short.Lenght = 5; // присвоение значения _ma_short.Save(); _ma_long = new MovingAverage(name + "Ma20", false); _ma_long = (MovingAverage)_tab.CreateCandleIndicator(_ma_long, "Prime"); _ma_long.Lenght = 20; // присвоение значения _ma_long.Save(); _vol = new Volume(name + "Volum", false); _vol = (Volume)_tab.CreateCandleIndicator(_vol, "nameArea"); _vol.Save(); _tab.BestBidAskChangeEvent += _tab_BestBidAskChangeEvent; // событие изменения лучших цен _tab.OrderUpdateEvent += _tab_OrderUpdateEvent; // событие обновления ордеров _tab.MarketDepthUpdateEvent += _tab_MarketDepthUpdateEvent; // пришел новый стакан _tab.PositionNetVolumeChangeEvent += _tab_PositionNetVolumeChangeEvent; // у позиции изменился объем _tab.PositionClosingSuccesEvent += _tab_PositionClosingSuccesEvent; // позиция успешно закрыта _tab.NewTickEvent += _tab_NewTickEvent; // событие новых тиков } // конструктор
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(); }