O suporte de dados de mercado é indispensável para a negociação programada, estratégias de pesquisa, estratégias de design e análise de retrospectiva em negociações quantitativas. Todos os dados no mercado são coletados e não são reais, afinal, o volume de dados é muito grande. Para o mercado de moeda digital, os inventores suportam uma plataforma de negociação quantitativa com um número limitado de exchanges, dados de retrospectiva de pares de transações.
A partir daí, o projeto foi lançado no Brasil, onde foi lançado o primeiro projeto do projeto.
O que você está fazendo aqui é simples, porque é muito fácil. Se houver necessidade, ação!
Python em Python
O uso de um banco de dados para fazer a conservação permanente.MongoDB
O código-fonte do banco de dados é um código de código de código de código de código de código de código.
Instalando no Pythonpymongo
Não, não.
Instalar o MongoDB no dispositivo onde o administrador está
Por exemplo: instalar o MongoDB no MAC, claro que o sistema WIN também instala o MongoDB, há muitos tutoriais online para instalar no sistema MAC da Apple:
Descarregar O link para baixar:https://www.mongodb.com/download-center?jmp=nav#community
Descompressão
Depois de baixado, descompacte para o diretório:/usr/local
。
Configuração de variáveis de ambiente
Input do terminal:open -e .bash_profile
O Facebook, por sua vez, não é o único site a fazer isso.export PATH=${PATH}:/usr/local/MongoDB/bin
Depois de armazenado, uso finalsource .bash_profile
A mudança foi efetuada para que a alteração entrasse em vigor.
Configure manualmente os diretórios de arquivos e diários do banco de dados
Criar um catálogo/usr/local/data/db
O que é o que você está fazendo?
Criar um catálogo/usr/local/data/logs
O que é o que você está fazendo?
Edição de 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 # 开启校验用户
Executar o serviço MongoDB
Ordem:
./mongod -f mongo.conf
Parar o serviço
use admin;
db.shutdownServer();
O coletor funciona como uma estratégia de robô Python em uma plataforma de negociação quantitativa do inventor. Como o próprio nível de Python é limitado, apenas um exemplo simples foi implementado para demonstrar a idéia deste artigo.
Código de política do 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)
O endereço da política completa:Links
Criar robôs estratégicos que usem dados. Atenção: É necessário selecionar"A biblioteca de linhas gráficas".Se você não tem, pode copiar um para o seu próprio arquivo 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)
Pode-se ver que a estratégia de uso dos dados no código do robô não acede a nenhuma interface de troca, obtém dados acessando o banco de dados, o coletor de mercado não registra os dados do BAR atual, mas coleta o BAR da linha K do estado já concluído, que pode ser modificado um pouco se precisar de dados reais do BAR atual. O código do exemplo atual, apenas para demonstrar que todos os registros de dados dentro de uma tabela no banco de dados são obtidos ao acessar, de modo que, à medida que o tempo de coleta de dados aumenta e mais dados são coletados, todas as consultas que são feitas afetam o desempenho em certa medida. Pode ser projetado para apenas consultar dados novos do que os dados atuais e adicionar aos dados atuais.
Executar o processo de administrador
A partir de agora, o servidor pode ser instalado em qualquer dispositivo do servidor.MongoDB
Serviços de banco de dados./mongod -f mongo.conf
Recolhido, simulação de plataforma de negociação quantitativa de inventoreswexApp
Não.BTC_USDT
Os pares de negócios:
Endereço:wexApp
O robô que usa os dados do banco de dados A:
Robô que usa dados do banco de dados B:
wexApp
Página:
No gráfico, você pode ver que os robôs com diferentes IDs compartilham dados da linha K usando uma fonte de dados.
Com base nos recursos poderosos da plataforma de negociação de quantificação dos inventores, podemos facilmente obter dados da linha K de coleta de ciclos arbitrários. Por exemplo, se eu quiser coletar uma linha K de 3 minutos, e a bolsa não tem uma linha K de 3 minutos, o que acontece?
Modificamos a configuração do robô coletor, o ciclo de K-line é de 3 minutos, e o inventor quantifica a plataforma de negociação para sintetizar automaticamente 3 minutos de K-line para o programa coletor.
Usamos os parâmetros.删除表的名称
, configuração:["records"]
Elimine a tabela de dados da linha K de 1 minuto que foi coletada anteriormente.
Iniciação收集器程序
Reinicie.使用数据的策略机器人
。
Como pode ver no gráfico de linhas K desenhado, o intervalo entre os BAR é de 3 minutos, e cada BAR é um pilar de linhas K com um ciclo de 3 minutos.
No próximo passo, tentaremos realizar a necessidade de fontes de dados personalizadas. Obrigado por ler.
XukittyMaravilhoso.
ZltimO topo
ZltimO topo
homilhaAbençoado
DsaidasiO topo
Inventor quantificado - sonho pequenoEu sou um Python pequeno, lançando o pênis, se você tem uma melhor implementação ou sugestão, espero que seja perfeita.