En el comercio programático, la estrategia de investigación, la estrategia de diseño y el análisis de retrospectiva en el comercio cuantificado no pueden prescindir del apoyo de los datos de mercado. Todos los datos en el mercado no se recopilan y no son reales, después de todo, el volumen de datos es demasiado grande. Para el mercado de monedas digitales, los inventores admiten un número limitado de intercambios en la plataforma de comercio cuantificado.
Esto puede resolver varias necesidades, por ejemplo:
¿Por qué? ¿Porque es muy fácil? ¡Si hay necesidad, actúen!
La librería de python de Pymongo
Para usar la base de datos, hacer el almacenamiento permanente.MongoDB
, que utiliza el lenguaje Python para escribir programas de recopilación, por lo que se requiere un controlador para esta base de datos.
Se puede instalar en Pythonpymongo
¿Qué es lo que está pasando?
Instalar MongoDB en el equipo del administrador
Por ejemplo: instalar MongoDB en MAC, por supuesto, el sistema WIN también instala MongoDB, hay muchos tutoriales en línea para instalar en el sistema MAC de Apple:
Descargar Enlace para descargar:https://www.mongodb.com/download-center?jmp=nav#community
Descompresión
Después de descargarlo, descomprima en el directorio:/usr/local
。
Configuración de las variables de entorno
La entrada final:open -e .bash_profile
En la página de Facebook, el usuario puede leer el siguiente mensaje:export PATH=${PATH}:/usr/local/MongoDB/bin
Después de ser guardado, terminal de usosource .bash_profile
La modificación tiene que entrar en vigor.
Configurar manualmente los directorios de archivos y diarios de la base de datos
Crear un directorio/usr/local/data/db
En el caso de las carpetas correspondientes.
Crear un directorio/usr/local/data/logs
En el caso de las carpetas correspondientes.
Editar el perfilmongo.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 # 开启校验用户
Cómo ejecutar el servicio MongoDB
Las órdenes:
./mongod -f mongo.conf
El servicio ha sido suspendido.
use admin;
db.shutdownServer();
El recolector funciona como una estrategia de un robot Python en una plataforma de negociación cuantificada por el inventor. Debido a los niveles limitados de Python, solo se implementó un ejemplo simple para mostrar la idea de este artículo.
El código de la política del colector:
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)
La dirección de la política completa:Enlaces
Crear robots estratégicos que utilicen los datos. Nota: Requiere un selector."La biblioteca de líneas de dibujo".Si no, puedes copiar uno en tu propia librería de políticas.
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)
Se puede ver que la estrategia que utiliza los datos no tiene acceso a ninguna interfaz de intercambio en el código del robot, que obtiene los datos accediendo a la base de datos, que el programa de recolección de mercado no registra los datos del BAR actual, que se recopila en la línea K del estado ya completado, que puede modificarse ligeramente si se necesitan datos en tiempo real del BAR actual. El código del ejemplo actual, sólo para demostrar que cuando se accede a una tabla en una base de datos, se obtienen todos los registros de datos, por lo que, a medida que aumenta el tiempo de recopilación de datos y se recopilan más y más datos, todas las consultas que se realizan afectan al rendimiento en cierta medida.
Ejecutar el programa de administradores
En el equipo donde está el administrador, se ejecutaMongoDB
Servicios de base de datos./mongod -f mongo.conf
Recolector en funcionamiento, simulador de plataformas de intercambio cuantitativo de inventoreswexApp
¿Qué es esto?BTC_USDT
Las transacciones:
La dirección es:WexApp
El robot que utiliza los datos de la base de datos A:
El robot B, que usa los datos de la base de datos:
wexApp
Página:
Como se puede ver en el gráfico, los robots con diferentes IDs comparten datos de K-line que utilizan una fuente de datos.
Confiando en las potentes capacidades de la plataforma de intercambio cuantificada por los inventores, podemos realizar fácilmente la recopilación de datos de línea K de cualquier ciclo. Por ejemplo, si quiero recopilar una línea K de 3 minutos, ¿qué pasa si la bolsa no tiene una línea K de 3 minutos?
Modificamos la configuración del robot de recolección, el ciclo de K line se establece en 3 minutos, y el inventor de la plataforma de intercambio cuantitativo automáticamente sintetiza 3 minutos de K line para el programa de recolección.
Usamos los parámetros.删除表的名称
En el caso de las personas que no son musulmanas.["records"]
Elimina la tabla de datos de línea K de 1 minuto recogida anteriormente.
Inicio del proyecto收集器程序
¿Qué es esto?使用数据的策略机器人
。
Como se puede ver en el gráfico de líneas K dibujado, el intervalo entre las BAR es de 3 minutos, y cada BAR es un pilar de líneas K con un ciclo de 3 minutos.
En la próxima fase, intentaremos hacer realidad la necesidad de una fuente de datos personalizada. Gracias por leer.
¿Qué quieres decir?Es maravilloso.
ZltimLa cima
ZltimLa cima
La homilíaY ahora.
¿Qué quieres decir?La cima
Los inventores cuantifican - sueños pequeñosGracias por el apoyo, soy un pitón pequeño y blanco, pero si hay una mejor implementación o sugerencia, espero que se perfeccione.