Бесплатный Бот для автоторговли, на платформе брокера Intrade.bar.

Тема в разделе "Разное", создана пользователем ElektroYar, 14 окт 2020.

  1. ElektroYar Пользователь

    Сообщения:
    42
    Симпатии:
    40
    Всем привет. Для платформы брокера Intrade.bar создан бесплатный бот с открытым исходным кодом - intrade-bar-console-bot.
    • Брокер Intrade.bar разрешает автоторговлю ботами.
    • Можно использовать бота на реальных и демо счетах совершенно бесплатно и без ограничения по времени.
    • Для связи советника и МТ4/5 используются не файлы, как в аналогичных платных проектах, а именованные каналы, которые работают быстрее и с ними нет проблем совместимости.
    • Советник может узнавать у Бота баланс, результат сделок, и получать котировки брокера раз в секунду по всем парам (если такая опция включена).
    • Советник связывается с Ботом через открытый API. Для быстрого старта проект уже имеет готовую MQL библиотеку для работы с API бота.
    • Бот собран для Windows х32 и х64, все библиотеки идут вместе с ботом. Боту не нужны для работы дополнительные фреймворки или браузер. Бот не имеет графической оболочки и потребляет мало ресурсов вашего ПК.
    • Бот имеет открытый исходный код. Это означает, что при наличии навыков программирования. вы можете переписать бота под свои потребности.
    • Для решения вопросов есть чат в телеге: https://tlgg.ru/open_bo_bot_chat
    Инструкция есть в виде INSTRUCTIONS.md файла, расположена в самом репозитории: https://github.com/NewYaroslav/intrade-bar-console-bot/blob/master/INSTRUCTIONS.md
     

    Вложения:

    demax71 нравится это.
  2. ElektroYar Пользователь

    Сообщения:
    42
    Симпатии:
    40
    Настройка бота
    Бот в момент запуска ищет файл config.json, который расположен в папке с программой. Файл config.json содержит json структуру, которая определяет настройки бота.

    Настройки бота в файле выглядят примерно так:

    Код:
    {
        "point":"1.intrade.bar",
        "email":"example@mail.com",
        "password":"12345",
        "demo_account":true,
        "rub_currency":false,
        "reboot":true,
        "price_stream":false,
        "delay_bets_ms":1000
    }
    
    • point - Точка доступа к брокеру
    • email - Эмейл аккаунта
    • password - Пароль аккаунта
    • demo_account - Параметр определяет, использовать демо аккаунт, или реальный.
    • rub_currency - Параметр определяет тип валюты баланса (RUB или USD)
    • reboot - Перезагружать бота в 0:00 по UTC или нет
    • price_stream - Флаг, включает поток котировок в совтеник для МТ4. Котировки обновляются раз в 1 сек.
    • delay_bets_ms - Задержка между сделками. Если бот получает две и более сделки подряд, то он может открывать сделки с задержкой, если она установлена. Задержка может быть нужна, если брокер по каким-то причинам не разрешает одновременные сделки.
    Тем не менее, многие настройки можно задать и без файла, через команды. Пример:

    Код:
    intrade-bar-console-bot.exe -email "example@mail.com" -password "12345" /demo /usd
    Выберите один из способов задания настроек и укажите свой email и password. Файл config.json можно отредактировать любым блокнотом. Не забудьте, что файл config.json это структура json, т.е. сохраняйте синтаксис (не удаляйте скобочки, запятые).

    После запуска программы она будет ждать соединения через named pipe. При этом программа выступает в роли сервера именованных каналов. По умолчанию сервер называется intrade_bar_console_bot. Робот отсылает через named pipe баланс, состояние соединения с брокером, цены и состояния сделок, а принимает команды на открытие сделок.

    Настройки советника МТ4
    Советник для своей работы требует разрешения на использование dll библиотек.

    Библиотека для MT4
    Для работы с советником проект имеет библиотеку, которая упрощает взаимодействие по REST API


    Код:
    #include "..\Include\intrade_bar_bot_api.mqh"
    
    IntradeBarConsoleBotApi api;        // API для работы с роботом
    
    void OnTimer() {
        /* проверяем наличие соединения */
        if(api.connected()) {
            int expiration = 3;
            ENUM_BO_TYPE bo_type = SPRINT;// Тип опциона
            double amount = 50;
            api.open_deal("EURUSD", "note: Bla bla bla", BUY, expiration, bo_type, amount);
        } else {
            /* соединение отсутствует, подключаемся */
            if(api.connect(pipe_name)) {
                Print("Успешное соединение с ", pipe_name);
            } else {
                Print("Соединение не удалось");
            }
        }
        /* обновляем состояние API */
        api.update(timer_period);
        if(api.check_balance_change()) {
            Print("Баланс: ",DoubleToString(api.get_balance(),2));
        }
        if(api.check_broker_connection_change()) {
            Print("Соединение с брокером: ",api.check_broker_connection());
        }
    }
    
    void IntradeBarConsoleBotApi::on_update_bet(IntradeBarBet &bet) {
       string str_status;
       if(bet.bet_status == IntradeBarBetStatus::WIN) str_status = "WIN";
       else if(bet.bet_status == IntradeBarBetStatus::LOSS) str_status = "LOSS";
       else if(bet.bet_status == IntradeBarBetStatus::UNKNOWN_STATE) str_status = "UNKNOWN_STATE";
       else if(bet.bet_status == IntradeBarBetStatus::CHECK_ERROR) str_status = "CHECK_ERROR";
       else if(bet.bet_status == IntradeBarBetStatus::OPENING_ERROR) str_status = "OPENING_ERROR";
       else if(bet.bet_status == IntradeBarBetStatus::WAITING_COMPLETION) str_status = "WAITING_COMPLETION";
       Print("update bet: signal_id = ", bet.note,", amount = ", bet.amount, " status = ", str_status);
    }
    
    void IntradeBarConsoleBotApi::on_update_prices(string &symbols[], double &prices[]) {
       Print(symbols[0], " price: ", prices[0]);
    }
    
    Все функции вы можете просмотреть в файле intrade_bar_bot_api.mqh. Также не забудьте изучить пример советника для MT4.
     
    demax71 и Piper нравится это.
  3. ElektroYar Пользователь

    Сообщения:
    42
    Симпатии:
    40
    В ближайшее время будет обновление + советник для подключения индикаторов с буферами (для тех кто сам не умеет программировать на MQL4)
     
    demax71 и Piper нравится это.