Die Unterstützung von Marktdaten ist unabdingbar bei programmatisierten Transaktionen, Forschungsstrategien, Designstrategien und Rückmessungsanalysen bei quantitativen Transaktionen. Alle Daten auf dem Markt werden nicht gesammelt und sind nicht realistisch, denn die Datenmenge ist zu groß. Für den digitalen Währungsmarkt unterstützen die Erfinder eine begrenzte Anzahl von Exchanges, Rückmessungsdaten für Transaktionspaare auf der quantitativen Handelsplattform.
Das kann einige Bedürfnisse lösen, wie zum Beispiel:
Ich habe vor, mit Python zu realisieren, warum? Wenn es eine Nachfrage gibt, dann tun Sie es!
Die Python-Pymongo-Bibliothek
Die Datenbank ist für die Permanente-Speicherung erforderlich.MongoDB
Die Datenbank wird in Python geschrieben, sodass ein Treiber für diese Datenbank benötigt wird.
Installiert in Pythonpymongo
Das ist alles.
Installieren von MongoDB auf dem Gerät des Administrators
Zum Beispiel: MAC installiert MongoDB, natürlich ist das Win-System ähnlich wie MongoDB installiert. Es gibt viele Tutorials im Internet, um beispielsweise auf dem Apple MAC zu installieren:
Herunterladen Der Link zum Download:https://www.mongodb.com/download-center?jmp=nav#community
Kompressionsfreiheit
Nach dem Herunterladen wird es in den Verzeichnis freigegeben:/usr/local
。
Umgebungsvariablen konfigurieren
Endgeräte:open -e .bash_profile
Der Autor des Dokuments schreibt:export PATH=${PATH}:/usr/local/MongoDB/bin
Nach dem Speichern für den Endverbrauchsource .bash_profile
Die Änderungen werden in Kraft treten.
Manuelle Konfiguration von Datenbank-Datei- und Log-Verzeichnissen
Erstellen von Verzeichnissen/usr/local/data/db
Die entsprechenden Ordner.
Erstellen von Verzeichnissen/usr/local/data/logs
Die entsprechenden Ordner.
Bearbeiten von Profilenmongo.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-Dienst ausführen
Befehl:
./mongod -f mongo.conf
Dienst eingestellt
use admin;
db.shutdownServer();
Der Sammler arbeitet in Form eines Python-Roboter-Strategies auf einer von den Erfindern quantifizierten Handelsplattform. Da der Python-Level begrenzt ist, wurde nur ein einfaches Beispiel realisiert, um die Idee zu demonstrieren.
Der Sammler-Politik-Code:
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)
Die vollständige Adresse der Strategie:Links
Die Entwicklung von Strategie-Robotern, die Daten nutzen. Bitte beachten Sie:"Draw Line Klassenbuch"Wenn nicht, dann kannst du einen in deine eigene Bibliothek kopieren.
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)
Man kann sehen, dass die Strategien, mit denen die Daten verwendet werden, nicht auf eine Austausch-Interface zugreifen, die Daten durch den Zugriff auf die Datenbank erhalten werden. Der Markt-Sammler-Prozess zeichnet keine Daten für die aktuelle BAR auf, sondern sammelt die bereits vollständige K-Line-BAR, die leicht geändert werden kann, wenn die aktuelle BAR-Realdaten benötigt werden. Der aktuelle Beispielcode ist nur zur Demonstration, dass alle Datensätze in Tabellen in einer Datenbank abgerufen werden, wenn sie aufgerufen werden, so dass alle Abfragen, die abgerufen werden, die Leistung zu einem gewissen Grad beeinflussen, wenn die Zeit der Datenerfassung wächst und mehr und mehr Daten gesammelt werden.
Verwalterprogramm ausführen
Es wird auf dem Gerät des Administrators ausgeführt.MongoDB
Datenbankdienste./mongod -f mongo.conf
Der Sammler läuft, Sammlung der Erfinder Quantitative Handelsplattform SimulationwexApp
DieBTC_USDT
Die Transaktionspaare:
Die Adresse:WexApp
Der Roboter, der Daten aus der Datenbank verwendet A:
Der Roboter B, der Daten aus der Datenbank benutzt:
wexApp
Seite:
Wie Sie sehen können, teilen sich Roboter mit unterschiedlichen IDs K-Daten mit einer Datenquelle.
Mit Hilfe der leistungsstarken Funktionen der quantitativen Handelsplattform der Erfinder können wir leicht K-Line-Daten von beliebigen Perioden sammeln. Zum Beispiel, wenn ich eine 3-minütige K-Linie sammeln möchte, was ist mit einer Börse, die keine 3-minütige K-Linie hat?
Wir haben die Konfiguration des Sammlerrobots geändert, so dass die K-Leinzyklose auf 3 Minuten gesetzt wird, und die Erfinder der quantitativen Handelsplattform synthetisieren automatisch 3 Minuten K-Leine für den Sammlerprogramm.
Wir benutzen die Parameter.删除表的名称
Die Einstellungen:["records"]
Entfernen Sie die zuvor gesammelten 1-Minuten-K-Liniendatenblätter. Bereiten Sie sich vor, 3-Minuten-K-Liniendaten zu sammeln.
Start收集器程序
Wieder anfangen使用数据的策略机器人
。
Sie können sehen, dass die K-Linien-Diagramme, die zwischen den BARs gezeichnet wurden, eine Intervallzeit von 3 Minuten haben, wobei jede BAR eine K-Linien-Säule mit einer 3-minütigen Periode darstellt.
In der nächsten Phase werden wir versuchen, die Notwendigkeit einer benutzerdefinierten Datenquelle zu realisieren. Danke fürs Lesen.
- Ich weiß nicht.Das ist wundervoll.
ZltimDie Spitze
ZltimDie Spitze
PredigtIch danke dir.
Siehe auchDie Spitze
Die Erfinder quantifizieren - Kleine TräumeIch bin Python, und ich bin bereit, eine bessere Implementierung oder Vorschläge zu machen, und ich hoffe, dass sie perfekt sind.