Dalam perdagangan terprogram, strategi penyelidikan, strategi reka bentuk, analisis retrospektif dalam perdagangan kuantitatif, sokongan data pasaran tidak dapat dipisahkan. Semua data di pasaran dikumpulkan dan tidak realistik, kerana jumlah data terlalu besar. Untuk pasaran mata wang digital, pencipta menyokong pertukaran terhad, data retrospektif pasangan dagangan pada platform dagangan kuantitatif.
Ini boleh membantu menyelesaikan beberapa keperluan, seperti:
Perancangan untuk menggunakan Python, kenapa? kerana ia mudah:) Jika ada permintaan, mulakan!
Perpustakaan Python untuk Python
Untuk menyimpan data secara kekal, anda perlu menggunakan pangkalan data.MongoDB
, yang menggunakan bahasa Python untuk menulis program pengumpul, memerlukan pemacu untuk pangkalan data ini.
Pemasangan pada Pythonpymongo
Tidak, tidak, tidak.
Menginstal MongoDB pada peranti hos
Contoh: Mac memasang MongoDB, sudah tentu sistem WIN juga memasang MongoDB, terdapat banyak tutorial dalam talian untuk contoh pemasangan pada sistem Mac Apple:
Muat turun Link untuk memuat turun:https://www.mongodb.com/download-center?jmp=nav#community
Pengecutan
Selepas memuat turun, lepaskan mampatan ke direktori:/usr/local
。
Variabel persekitaran
Penghantaran terminal:open -e .bash_profile
Selepas membuka fail, tulis:export PATH=${PATH}:/usr/local/MongoDB/bin
Simpan dan gunakansource .bash_profile
Mengubahnya menjadi sah.
Mengkonfigurasi direktori fail dan direktori log secara manual
Membuat direktori/usr/local/data/db
Di sini, anda akan melihat beberapa gambar yang berbeza.
Membuat direktori/usr/local/data/logs
Di sini, anda akan melihat beberapa gambar yang berbeza.
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 # 开启校验用户
Memandu perkhidmatan MongoDB
Perintah:
./mongod -f mongo.conf
Penghentian perkhidmatan
use admin;
db.shutdownServer();
Pengumpul beroperasi dalam bentuk strategi robot Python pada platform dagangan kuantiti pencipta. Oleh kerana tahap Python sendiri terhad, hanya satu contoh sederhana yang dilaksanakan untuk menunjukkan idea dalam artikel ini.
Kod dasar pengumpul:
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 lengkap:Pautan
Robot yang menggunakan data untuk membuat strategi. Perhatian: Perlu dicentang"Layanan Kelas Gambar".Jika tidak, anda boleh menyalin satu ke perpustakaan dasar 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)
Seperti yang dapat dilihat dalam kod bot strategi yang menggunakan data tidak mengakses mana-mana antara muka pertukaran, mendapatkan data dengan mengakses pangkalan data, program pengumpul pasaran tidak mencatat data BAR semasa, mengumpul data BAR K baris yang telah selesai, jika anda memerlukan data BAR semasa dalam masa nyata, anda boleh mengubahnya sedikit. Kod contoh semasa, hanya untuk menunjukkan, semua rekod data dalam jadual dalam pangkalan data yang diakses adalah diambil, sehingga apabila masa pengumpulan data meningkat, semakin banyak data yang dikumpulkan, semua pertanyaan yang keluar akan memberi kesan kepada prestasi, boleh direka untuk hanya menanyakan data baru daripada data semasa, ditambah kepada data semasa.
Jalankan prosedur pentadbir
Peranti di mana hos berada, berjalan.MongoDB
Perkhidmatan pangkalan data./mongod -f mongo.conf
Pengumpul berjalan, rak simulasi untuk mengumpul platform pertukaran kuantitatif penciptawexApp
PerbezaanBTC_USDT
Pasangan transaksi:
Alamat:wexApp
Robot menggunakan data pangkalan data A:
Robot B menggunakan data pangkalan data:
wexApp
Halaman:
Seperti yang dapat dilihat dalam gambar, bot dengan ID yang berbeza berkongsi data K-line menggunakan satu sumber data.
Dengan menggunakan keupayaan kuat platform dagangan kuantifikasi pencipta, kita dapat dengan mudah mencapai pengumpulan data K-line dengan tempoh apa sahaja. Sebagai contoh, jika saya ingin mengumpul 3 minit K line, bagaimana jika bursa tidak mempunyai 3 minit K line?
Kami mengubah konfigurasi robot pengumpul, menetapkan kitaran K-line menjadi 3 minit, dan pencipta platform perdagangan kuantitatif secara automatik menyusun 3 minit K-line untuk program pengumpul.
Kita gunakan parameter.删除表的名称
, seting:["records"]
Menghapuskan Jadual Data Jadual K 1 minit yang telah dikumpulkan sebelumnya. Bersedia untuk mengumpul data Jadual K 3 minit.
Permulaan收集器程序
Mulakan semula.使用数据的策略机器人
。
Anda boleh melihat carta garis K yang digambar, dengan selang waktu antara BAR adalah 3 minit, dan setiap BAR adalah tiang garis K dengan kitaran 3 minit.
Pada masa akan datang, kami akan cuba mewujudkan keperluan untuk sumber data tersuai. Terima kasih kerana membaca.
xukittyCantik.
ZltimPuncak
ZltimPuncak
KhotbahPujian
DsaidasiPuncak
Pencipta Kuantiti - Impian KecilTerima kasih atas sokongan anda, saya adalah Python, saya tidak mempunyai masalah, jika ada penyelesaian atau cadangan yang lebih baik, saya berharap ia akan disempurnakan.