Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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; // событие успешного закрытия позиции
        }
Exemple #3
0
        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;                                 // событие новых тиков
        } // конструктор
Exemple #4
0
        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();
        }