Рука за рукой, чтобы научить вас реализовать сборник данных.

Автор:Маленькие мечты, Создано: 2020-04-16 12:44:03, Обновлено: 2023-10-11 19:57:00

img

Поддержка рыночных данных неотъемлема при программировании торговли, исследовании стратегий, проектировании стратегий, анализе рекурсионных операций в количественных операциях. Все данные на рынке собираются и не реалистичны, ведь объем данных слишком велик. Для цифровых валютных рынков изобретатели поддерживают ограниченное количество бирж, пары рекурсионных операций на квантовых торговых платформах. Если вы хотите рекурсировать некоторые биржи, которые временно не поддерживают данные, сделки.

Это поможет решить несколько проблем, например:

  • Можно предоставить источник данных нескольким роботам, что снижает частоту посещения интерфейсов биржей каждым роботом.
  • Когда робот запускается, можно получить достаточное количество K-линейных BAR, чтобы больше не беспокоиться о том, что не хватает K-линейных BAR, когда робот запускается.
  • Можно собирать данные о рынке мелких валют, которые могут быть использованы для предоставления разработчикам собственных источников данных для количественной рецензирования системы рецензирования платформы для использования стратегии рецензирования системы рецензирования.
  • Подождите...

Почему? Потому что это удобно:) Если есть потребность, действуйте!

Подготовьтесь

  • Пимонго для Python

    Для сохранения данных, используемых в базе данных, используется постоянное сохранение.MongoDB, используя язык Python для написания сборщиков, поэтому требуется драйвер для этой базы данных. Установка на PythonpymongoЭто не так.

  • Установка MongoDB на устройстве, на котором находится хост

    Например: установка MongoDB на Mac, и, конечно же, установка MongoDB на WIN-системе тоже примерно такая же, есть много учебников в Интернете, чтобы установить на Apple Mac:

  • Загрузка Ссылка на сайт:https://www.mongodb.com/download-center?jmp=nav#community

  • Декомпрессия После загрузки, распечатать в каталог:/usr/local

  • Конфигурация окружающей среды Терминал ввода:open -e .bash_profileОн открывает файл и пишет:export PATH=${PATH}:/usr/local/MongoDB/binСохранение и использованиеsource .bash_profileВ связи с этим, мы решили изменить эту статью.

  • Ручная настройка каталогов файлов и журналов в базе данных Создать каталог/usr/local/data/dbПосмотрите, что происходит в этой папке. Создать каталог/usr/local/data/logsПосмотрите, что происходит в этой папке.

  • Редактировать профильmongo.conf

    #bind_ip_all = true                        # 任何机器可以连接
    bind_ip = 127.0.0.1                        # 本机可以访问
    port = 27017                               # 实例运行在27017端口(默认)
    dbpath = /usr/local/data/db                # 数据文件夹存放地址(db要预先创建)
    logpath = /usr/local/data/logs/mongodb.log # 日志文件地址
    logappend = false                          # 启动时 添加还是重写日志文件
    fork = false                               # 是否后台运行
    auth = false                               # 开启校验用户
    
  • Использование MongoDB

    Приказ:

    ./mongod -f mongo.conf
    
  • Прекращение работы

    use admin;
    db.shutdownServer();
    

Реализация процесса сбора

Коллектор работает в виде стратегии Python-робота на квантовой торговой платформе изобретателя. Из-за ограниченного уровня собственного Python, реализация является простой примером, который используется для демонстрации идеи данной статьи.

Код политики сборщика:

import pymongo
import json

def main():
    Log("测试数据收集")
    
    # 连接数据库服务
    myDBClient = pymongo.MongoClient("mongodb://localhost:27017")   # mongodb://127.0.0.1:27017
    # 创建数据库
    huobi_DB = myDBClient["huobi"]
    
    # 打印目前数据库表
    collist = huobi_DB.list_collection_names()
    Log("collist:", collist)
    
    # 检测是否删除表
    arrDropNames = json.loads(dropNames)
    if isinstance(arrDropNames, list):
        for i in range(len(arrDropNames)):
            dropName = arrDropNames[i]
            if isinstance(dropName, str):
                if not dropName in collist:
                    continue
                tab = huobi_DB[dropName]
                Log("dropName:", dropName, "删除:", dropName)
                ret = tab.drop()
                collist = huobi_DB.list_collection_names()
                if dropName in collist:
                    Log(dropName, "删除失败")
                else :
                    Log(dropName, "删除成功")
    
    # 创建records表
    huobi_DB_Records = huobi_DB["records"]
    
    # 请求数据
    preBarTime = 0
    index = 1
    while True:
        r = _C(exchange.GetRecords)
        if len(r) < 2:
            Sleep(1000)
            continue
        if preBarTime == 0:
            # 首次写入所有BAR数据
            for i in range(len(r) - 1):
                # 逐根写入
                bar = r[i]
                huobi_DB_Records.insert_one({"index": index, "High": bar["High"], "Low": bar["Low"], "Open": bar["Open"], "Close": bar["Close"], "Time": bar["Time"], "Volume": bar["Volume"]})                
                index += 1
            preBarTime = r[-1]["Time"]
        elif preBarTime != r[-1]["Time"]:
            bar = r[-2]
            huobi_DB_Records.insert_one({"index": index, "High": bar["High"], "Low": bar["Low"], "Open": bar["Open"], "Close": bar["Close"], "Time": bar["Time"], "Volume": bar["Volume"]})
            index += 1
            preBarTime = r[-1]["Time"]
        LogStatus(_D(), "preBarTime:", preBarTime, "_D(preBarTime):", _D(preBarTime/1000), "index:", index)
        Sleep(10000)
        

Полное руководство:Ссылки

Использование данных

Создание стратегических роботов, использующих данные. Примечание: необходимо отметка"Классовая библиотека рисунков".Если нет, то можно скопировать один из них в свою собственную библиотеку.img

import pymongo
import json

def main():
    Log("测试使用数据库数据")
    
    # 连接数据库服务
    myDBClient = pymongo.MongoClient("mongodb://localhost:27017")   # mongodb://127.0.0.1:27017
    # 创建数据库
    huobi_DB = myDBClient["huobi"]
    
    # 打印目前数据库表
    collist = huobi_DB.list_collection_names()
    Log("collist:", collist)
    
    # 查询数据打印
    huobi_DB_Records = huobi_DB["records"]
    
    while True:
        arrRecords = []
        for x in huobi_DB_Records.find():
            bar = {
                "High": x["High"], 
                "Low": x["Low"], 
                "Close": x["Close"], 
                "Open": x["Open"], 
                "Time": x["Time"], 
                "Volume": x["Volume"]
            }
            arrRecords.append(bar)
        
        # 使用画线类库,把取到的K线数据画出来
        ext.PlotRecords(arrRecords, "K")
        LogStatus(_D(), "records length:", len(arrRecords))
        Sleep(10000)

Можно увидеть, что в стратегии бота-кода, использующего данные, не используется доступ к любому интерфейсу биржи, данные получаются путем доступа к базе данных, программа сборщика рынка не записывает данные текущего BAR, а собирает уже завершенное состояние K-линии BAR, если требуется данные текущего BAR в режиме реального времени, то можно немного изменить. Текущий пример кода, просто для демонстрации, при доступе к таблице в базе данных все записи данных получаются, так что по мере увеличения времени сбора данных и сбора большего количества данных все запросы, которые будут выходить, будут в некоторой степени влиять на производительность.

Работает

Запустить процедуру администратораimg

Это будет работать на устройстве, на котором находится хостинг.MongoDBУслуги базы данных./mongod -f mongo.conf img

Коллектор работает, и он является копией платформы для количественного обмена изобретателямиwexAppО чем вы?BTC_USDTСделки: Адрес:wexApp img

Робот, использующий данные базы данных:img

Робот Б, использующий данные базы данных:img

wexAppСтраница:img

На рисунке вы можете увидеть, как роботы с различными идентификаторами используют один источник данных для обмена данными K-линий.

Сбор данных K-линий с любым циклом

Опираясь на мощные возможности квантовой торговой платформы изобретателя, мы можем легко реализовать сбор K-линейных данных с любым циклом. Например, если я собираю 3-минутную K-линию, а у меня нет 3-минутной K-линии на бирже?

Мы изменили конфигурацию роботов-сборщиков, установив цикл K-линий на 3 минуты, и изобретатели квантовой платформы автоматически синтезируют 3 минуты K-линий для программы сборщиков.img

Мы используем параметры.删除表的名称Настройки:["records"]Удалить таблицу данных K-линии 1 минуты, собранную ранее.

Запуск收集器程序Перезагрузить使用数据的策略机器人

img

img

Вы можете увидеть, что в графике K-линий интервалы между BAR составляют 3 минуты, и каждый BAR представляет собой столбик K-линий с циклом в 3 минуты.

В следующий раз мы постараемся реализовать потребности в настраиваемых источниках данных. Спасибо за чтение.


Связанные

Больше

Сюкити.Прекрасно.

ЗлтмВершина

ЗлтмВершина

проповедьПоздравления.

ДзаидасиВершина

Маленькие мечтыСпасибо за поддержку, я питонец, и я надеюсь, что у меня есть более совершенные решения или предложения.