Các chiến lược nghiên cứu, thiết kế, phân tích lại trong giao dịch định lượng, hỗ trợ dữ liệu thị trường không thể tách khỏi dữ liệu thị trường. Tất cả dữ liệu trên thị trường đều được thu thập và không thực tế, sau khi tất cả, số lượng dữ liệu là quá lớn. Đối với thị trường tiền kỹ thuật số, các nhà phát minh hỗ trợ một số sàn giao dịch định lượng trên nền tảng giao dịch.
Điều này giúp giải quyết một số nhu cầu, chẳng hạn như:
Vì nó rất thuận tiện:) Nếu có nhu cầu, hãy bắt tay!
Pythons Python thư viện
Vì bạn cần sử dụng cơ sở dữ liệu để lưu trữ lâu dài.MongoDB
Các trình điều khiển của cơ sở dữ liệu này được sử dụng để viết trình thu thập bằng ngôn ngữ Python.
cài đặt trên Pythonpymongo
Có thể.
Cài đặt MongoDB trên thiết bị của chủ nhà
Ví dụ: cài đặt MongoDB trên máy Mac, và tất nhiên hệ thống Win cũng cài đặt MongoDB tương tự, có rất nhiều hướng dẫn trực tuyến để cài đặt trên hệ thống Mac của Apple:
Tải xuống Đường dẫn tải về:https://www.mongodb.com/download-center?jmp=nav#community
Giải nén
Sau khi tải xuống, giải nén vào thư mục:/usr/local
。
Thiết lập các biến môi trường
Đầu vào cuối cùng:open -e .bash_profile
Sau khi mở tài liệu, hãy viết:export PATH=${PATH}:/usr/local/MongoDB/bin
Sau khi lưu, dùng cuối cùngsource .bash_profile
Những điều này sẽ khiến cho các thay đổi này có hiệu lực.
Chọn thư mục tập tin và thư mục nhật ký cơ sở dữ liệu theo cách thủ công
Tạo danh mục/usr/local/data/db
Trong thư mục tương ứng.
Tạo danh mục/usr/local/data/logs
Trong thư mục tương ứng.
Biến đổi hồ sơ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 # 开启校验用户
Chạy MongoDB
Chỉ thị:
./mongod -f mongo.conf
Dừng dịch vụ
use admin;
db.shutdownServer();
Bộ sưu tập hoạt động dưới dạng chiến lược của robot Python trên nền tảng giao dịch định lượng của nhà phát minh. Vì mức độ Python của bản thân hạn chế, chỉ thực hiện một ví dụ đơn giản để thể hiện ý tưởng của bài viết này.
Có thể bạn có thể sử dụng các công cụ này để thu thập thông tin.
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)
Địa chỉ chính sách đầy đủ:Liên kết
Một số người dùng đã sử dụng các công cụ này để tạo ra các robot chiến lược sử dụng dữ liệu. Lưu ý: cần chọn"Bộ thư viện đường vẽ"Nếu không, bạn có thể sao chép một trong các thư viện chính sách của mình.
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)
Bạn có thể thấy rằng trong mã robot chiến lược sử dụng dữ liệu không truy cập vào bất kỳ giao diện giao dịch nào, thu thập dữ liệu bằng cách truy cập vào cơ sở dữ liệu, các chương trình thu thập thị trường không ghi lại dữ liệu của BAR hiện tại, thu thập dữ liệu của K-line BAR đã hoàn thành trạng thái, nếu cần dữ liệu thời gian thực của BAR hiện tại, bạn có thể sửa đổi một chút. Ví dụ mã hiện tại, chỉ để chứng minh, tất cả các bản ghi dữ liệu trong bảng trong cơ sở dữ liệu được lấy khi truy cập, do đó, khi thời gian thu thập dữ liệu tăng lên, thu thập dữ liệu ngày càng nhiều, tất cả các truy vấn ra sẽ ảnh hưởng đến hiệu suất ở một mức độ nào đó, có thể được thiết kế để chỉ truy vấn dữ liệu mới hơn dữ liệu hiện tại và thêm vào dữ liệu hiện tại.
Chạy trình quản trị
Các thiết bị trên máy chủ được chạy.MongoDB
Dịch vụ cơ sở dữ liệu./mongod -f mongo.conf
Bộ sưu tập hoạt động, bộ sưu tập nền tảng giao dịch định lượng của nhà phát minhwexApp
củaBTC_USDT
Các cặp giao dịch:
Địa chỉ:wexApp
Robot sử dụng dữ liệu cơ sở dữ liệu A:
Robot B sử dụng dữ liệu cơ sở dữ liệu
wexApp
Trang:
Bạn có thể thấy trên hình, các robot với ID khác nhau, chia sẻ dữ liệu K-line sử dụng một nguồn dữ liệu.
Với tính năng mạnh mẽ của nền tảng giao dịch định lượng của nhà phát minh, chúng ta có thể dễ dàng thu thập dữ liệu K-line theo bất kỳ chu kỳ nào. Ví dụ, nếu tôi muốn thu thập 3 phút K-line, nhưng sàn giao dịch không có 3 phút K-line thì sao?
Chúng tôi đã thay đổi cấu hình của robot thu thập dữ liệu, đặt chu kỳ dòng K là 3 phút, và các nhà phát minh định lượng nền tảng giao dịch sẽ tự động tổng hợp các dòng K 3 phút cho chương trình thu thập dữ liệu.
Chúng ta sử dụng các tham số.删除表的名称
, cài đặt:["records"]
Loại bỏ bảng dữ liệu K-Line 1 phút thu thập trước đó.
Khởi động收集器程序
Khởi động lại使用数据的策略机器人
。
Bạn có thể thấy biểu đồ đường K được vẽ, khoảng thời gian giữa các BAR là 3 phút, mỗi BAR là các cột đường K có chu kỳ 3 phút.
Trong giai đoạn tiếp theo, chúng tôi sẽ cố gắng thực hiện nhu cầu về nguồn dữ liệu tùy chỉnh. Cảm ơn đã đọc.
xukittyThật tuyệt vời.
zltimđỉnh
zltimđỉnh
bài giảngTôn vinh
dsaidasiđỉnh
Những nhà phát minh định lượng - những giấc mơ nhỏCảm ơn vì đã hỗ trợ, tôi là một người Python nhỏ bé, và tôi đang cố gắng để thực hiện tốt hơn hoặc đề xuất, tôi mong đợi sự hoàn thiện.