avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

Dibuat di: 2020-04-16 12:44:03, diperbarui pada: 2024-12-12 20:55:38
comments   7
hits   3870

Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

Dalam perdagangan terprogram dan perdagangan kuantitatif, meneliti strategi, merancang strategi, dan analisis pengujian ulang tidak dapat dipisahkan dari dukungan data pasar. Tidak realistis untuk mengumpulkan semua data pasar, lagipula, jumlah datanya terlalu besar. Untuk pasar mata uang digital, Platform Perdagangan Kuantitatif Inventor mendukung data pengujian ulang untuk bursa dan pasangan perdagangan terbatas. Jika Anda ingin menguji ulang beberapa bursa dan pasangan perdagangan yang saat ini tidak mendukung data. Anda dapat menggunakan sumber data khusus untuk pengujian ulang, tetapi ini mengharuskan Anda memiliki data Anda sendiri. Oleh karena itu, ada kebutuhan mendesak untuk program pengumpulan informasi pasar yang dapat disimpan secara persisten dan sebaiknya diperoleh secara real-time.

Ini menyelesaikan beberapa persyaratan, seperti:

  • Sumber data dapat diberikan ke beberapa robot, yang dapat mengurangi frekuensi setiap robot mengakses antarmuka pertukaran.
  • Saat robot mulai bekerja, ia dapat memperoleh data K-line dengan jumlah K-line BAR yang mencukupi, sehingga Anda tidak perlu lagi khawatir tentang jumlah K-line BAR yang tidak mencukupi saat robot mulai bekerja.
  • Ia dapat mengumpulkan data pasar mata uang kecil untuk menyediakan sumber data khusus bagi sistem pengujian ulang Platform Perdagangan Kuantitatif Inventor, sehingga dapat menggunakan sistem pengujian ulang untuk menguji ulang strategi.
  • dll..

Berencana menggunakan Python untuk mengimplementasikannya, mengapa? Karena nyaman :) Jika Anda punya kebutuhan, ambil tindakan!

Mempersiapkan

  • Pustaka pymongo Python

Karena basis data dibutuhkan untuk penyimpanan persisten. Penggunaan pemilihan dataMongoDB, menggunakan bahasa Python untuk menulis program koleksi, sehingga pustaka driver basis data ini diperlukan. Instalasi pada PythonpymongoItu saja.

  • Instal MongoDB di mesin host

Misalnya: Instal MongoDB di MAC. Tentu saja, menginstal MongoDB di WIN sama saja. Ada banyak tutorial daring. Ambil contoh instalasi di Apple MAC:

  • Unduh Tautan unduhan: https://www.mongodb.com/download-center?jmp=nav#community

  • Buka ritsleting Setelah mengunduh, ekstrak ke direktori:/usr/local

  • Mengonfigurasi variabel lingkungan Masukan terminal:open -e .bash_profile, setelah membuka file tersebut, tulis:export PATH=${PATH}:/usr/local/MongoDB/bin Setelah menyimpan, gunakan terminalsource .bash_profileBuat perubahan tersebut berlaku.

  • Konfigurasikan direktori file database dan direktori log secara manual Buat Direktori/usr/local/data/dbFolder yang sesuai di . Buat Direktori/usr/local/data/logsFolder yang sesuai di .

  • Mengedit File Konfigurasimongo.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                               # 开启校验用户
  • Jalankan layanan MongoDB

Memesan:

  ./mongod -f mongo.conf
  • Hentikan layanan
  use admin;
  db.shutdownServer();

Menerapkan Program Kolektor

Kolektor berjalan sebagai strategi robot Python pada Platform Perdagangan Kuantitatif Inventor. Karena keterbatasan kemampuan saya dalam Python, saya hanya menerapkan contoh sederhana untuk menunjukkan gagasan artikel ini.

Kode strategi kolektor:

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)
        

Alamat kebijakan lengkap:Link

Data Penggunaan

Buat bot strategis yang menggunakan data. Catatan: Anda perlu memeriksaPerpustakaan gambar garisJika Anda tidak memilikinya, Anda dapat menyalinnya ke perpustakaan strategi Anda sendiri. Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

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)

Dapat dilihat bahwa kode robot strategi yang menggunakan data tidak mengakses antarmuka pertukaran apa pun. Ia memperoleh data dengan mengakses basis data. Program pengumpul pasar tidak mencatat data BAR saat ini. Ia mengumpulkan BAR K-line di status selesai. Jika BAR saat ini perlu diperbarui secara real time, data dapat dimodifikasi sedikit. Contoh kode saat ini hanya untuk demonstrasi. Saat mengakses catatan data dalam tabel di database, semua catatan data diperoleh. Seiring bertambahnya waktu pengumpulan data, semakin banyak data yang dikumpulkan. Menanyakan semua data akan memengaruhi kinerja sampai batas tertentu. Anda dapat mendesain Hanya kueri data yang lebih baru daripada data saat ini dan menambahkannya ke data saat ini.

berlari

Jalankan program host Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

Di perangkat host, jalankanMongoDBLayanan Basis Data ./mongod -f mongo.conf Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

Kolektor berjalan untuk mengumpulkan disk simulasi platform perdagangan kuantitatif penemuwexAppdariBTC_USDTPasangan Perdagangan: alamat:wexApp Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

Robot A menggunakan data database: Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

Robot B menggunakan data database: Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

wexApphalaman: Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

Seperti yang dapat dilihat pada gambar, robot dengan ID berbeda berbagi data K-line dari sumber data yang sama.

Kumpulkan data K-line dari periode apa pun

Mengandalkan fungsi canggih dari Platform Perdagangan Kuantitatif Inventor, kami dapat dengan mudah mengumpulkan data K-line pada periode apa pun. Misalnya, saya ingin mengumpulkan K-line 3 menit, apa yang harus saya lakukan jika bursa tidak memiliki K-line 3 menit? Tidak apa-apa, itu dapat dicapai dengan mudah.

Kami memodifikasi konfigurasi robot pengumpul dan menetapkan periode K-line menjadi 3 menit. Platform Perdagangan Kuantitatif Inventor akan secara otomatis mensintesis K-line 3 menit untuk program pengumpul. Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

Kami menggunakan parameter删除表的名称,mendirikan:["records"]Hapus tabel data K-line 1 menit yang dikumpulkan sebelumnya. Bersiap untuk mengumpulkan data garis K 3 menit.

rintisan收集器程序, mulai ulang使用数据的策略机器人

Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

Ajari Anda langkah demi langkah untuk menerapkan kolektor pasar

Dari diagram garis K yang digambar, Anda dapat melihat bahwa interval antar BAR adalah 3 menit, dan setiap BAR adalah kolom garis K dengan periode 3 menit.

Pada edisi berikutnya, kami akan mencoba menerapkan persyaratan sumber data khusus. Terima kasih sudah membaca