Untuk perdagangan terprogram, strategi penelitian, strategi desain, analisis retrospeksi dalam perdagangan kuantitatif sangat diperlukan dukungan data pasar. Semua data di pasar dikumpulkan dan tidak realistis, karena jumlah data terlalu besar. Untuk pasar mata uang digital, penemu mendukung pertukaran terbatas, data retrospeksi pasangan perdagangan di platform perdagangan kuantitatif. Jika Anda ingin retrospeksi beberapa pertukaran yang sementara tidak mendukung data, pasangan perdagangan.
Dengan demikian, beberapa kebutuhan dapat diselesaikan, seperti:
Perencanaan implementasi menggunakan Python, mengapa? karena sangat mudah:) Jika ada permintaan, lakukan!
Perpustakaan PyMongo untuk Python
Karena untuk menggunakan database, Anda harus menyimpan data secara permanen.MongoDB
, yang ditulis dalam bahasa Python, sehingga membutuhkan driver untuk database ini.
Instal di Pythonpymongo
Tidak ada yang salah.
Menginstal MongoDB pada perangkat yang dimiliki oleh host
Contoh: Menginstal MongoDB di Mac, tentu saja sistem WIN menginstal MongoDB juga hampir sama, ada banyak tutorial online untuk menginstal di sistem Mac Apple sebagai contoh:
Unduh Link untuk download:https://www.mongodb.com/download-center?jmp=nav#community
Pengurangan kompresi
Setelah diunduh, dekompres ke direktori:/usr/local
。
Mengkonfigurasi variabel lingkungan
Input terminal:open -e .bash_profile
Setelah membuka file, tulis:export PATH=${PATH}:/usr/local/MongoDB/bin
Setelah disimpan, digunakan secara terminalsource .bash_profile
Untuk membuat perubahan tersebut berlaku.
Mengkonfigurasi direktori file database dan direktori log secara manual
Membuat direktori/usr/local/data/db
Di sini Anda akan menemukan beberapa hal yang menarik.
Membuat direktori/usr/local/data/logs
Di sini Anda akan menemukan beberapa hal yang menarik.
Mengedit profilmongo.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 # 开启校验用户
Mengoperasikan layanan MongoDB
Perintah:
./mongod -f mongo.conf
Penghentian layanan
use admin;
db.shutdownServer();
Pengumpul berjalan dalam bentuk strategi robot Python pada platform perdagangan kuantitatif para penemu. Karena tingkat Python sendiri terbatas, hanya satu contoh sederhana yang diterapkan untuk menunjukkan gagasan dalam artikel ini.
Kode kebijakan 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)
Di sini, Anda dapat menemukan informasi lengkap tentang strategi ini:Tautan
Robot-robot yang menggunakan data untuk membuat strategi. Catatan: Harus di pilih"Layanan Kelas Gambar"Jika tidak, Anda dapat menyalin salah satu ke dalam toolbar Anda sendiri.
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)
Anda dapat melihat bahwa strategi yang menggunakan data dalam kode robot tidak mengakses antarmuka bursa apa pun, mendapatkan data dengan mengakses database, program pengumpul pasar tidak mencatat data BAR saat ini, mengumpulkan data BAR K baris yang telah selesai, hanya sedikit dimodifikasi jika Anda membutuhkan data BAR saat ini secara real time. Contoh kode saat ini, hanya untuk menunjukkan bahwa semua catatan data dalam tabel yang diakses dalam database diambil, sehingga seiring waktu pengumpulan data meningkat, semakin banyak data yang dikumpulkan, semua kueri yang keluar akan mempengaruhi kinerja hingga batas tertentu, dapat dirancang untuk hanya menanyakan data baru dari data saat ini, yang ditambahkan ke data saat ini.
Mengoperasikan program administrator
Perangkat yang berada di host akan berjalan.MongoDB
Layanan Database./mongod -f mongo.conf
Pemasok yang berjalan, simulasi dari inventor yang mengumpulkan platform perdagangan kuantitatifwexApp
PerbedaanBTC_USDT
Pasangan transaksi:
Alamat:wexApp
Robot yang menggunakan data database A:
Robot B menggunakan data database:
wexApp
Halaman:
Seperti yang dapat dilihat pada gambar, robot dengan ID yang berbeda berbagi data K-line yang menggunakan satu sumber data.
Dengan mengandalkan kemampuan kuat dari inventor untuk mengukur platform perdagangan, kita dapat dengan mudah melakukan pengumpulan data K-line dengan siklus yang tidak diinginkan. Misalnya, jika saya ingin mengumpulkan 3 menit K line, bagaimana jika bursa tidak memiliki 3 menit K line? Tidak apa-apa, itu mudah dilakukan.
Kami mengubah konfigurasi robot pengumpul, mengatur siklus K-line menjadi 3 menit, dan penemu platform perdagangan kuantitatif secara otomatis akan menyintesis 3 menit K-line ke program pengumpul.
Kita menggunakan parameter.删除表的名称
Peraturan:["records"]
Menghapus tabel data K-line 1 menit yang dikumpulkan sebelumnya. Bersiap untuk mengumpulkan data K-line 3 menit.
Memulai收集器程序
Mulai lagi.使用数据的策略机器人
。
Anda dapat melihat grafik garis K yang digambar, interval antara BAR adalah 3 menit, dan setiap BAR adalah kolom garis K dengan siklus 3 menit.
Pada tahap berikutnya, kami mencoba untuk mewujudkan kebutuhan untuk sumber data yang disesuaikan. Terima kasih sudah membaca.
xukittyLuar biasa.
ZltimPuncak
ZltimPuncak
khotbahTerima kasih.
DsaidasiPuncak
Penemu Kuantitas - Mimpi KecilTerima kasih atas dukungannya, saya adalah python kecil putih, berputar-putar, memiliki implementasi atau saran yang lebih baik, berharap untuk disempurnakan.