예제 #1
0
        /// <summary>
        /// конструктор
        /// </summary>
        public StrategyBollinger(string name, StartProgram startProgram)
            : base(name, startProgram)
        {
            TabCreate(BotTabType.Simple);
            _tab = TabsSimple[0];

            _bollinger = new Bollinger(name + "Bollinger", false);
            _bollinger = (Bollinger)_tab.CreateCandleIndicator(_bollinger, "Prime");
            _bollinger.Save();

            _moving = new MovingAverage(name + "Moving", false)
            {
                Lenght = 15
            };
            _moving = (MovingAverage)_tab.CreateCandleIndicator(_moving, "Prime");
            _moving.Save();

            _tab.CandleFinishedEvent += Bot_CandleFinishedEvent;

            Slipage = 0;
            Volume  = 1;
            Regime  = BotTradeRegime.On;

            DeleteEvent += Strategy_DeleteEvent;

            Load();
        }
예제 #2
0
        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, чтобы удалялись все файлы робота
        }
예제 #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;                                 // событие новых тиков
        } // конструктор