プログラム化取引,量化取引における研究戦略,設計戦略,回計分析において,市場データのサポートが不可欠である.市場上のすべてのデータが収集されても現実的ではない.データ量はあまりにも大きい.デジタル通貨市場では,発明者は量化取引プラットフォームで限られた取引所,取引対の回計データをサポートする.一時的にデータをサポートしない取引所,取引対を回計したい場合は,カスタムデータソースを使用して回計を行うことができます.しかし,この前提はデータを持っている必要があります.
この方法は,いくつかのニーズに対応します.
Pythonで実行する計画です.なぜですか?便利だからです. 需要があるなら,行動!
PythonのPymongoライブラリ
データベースを使用する場合は,保存を継続します.MongoDB
Python で作成された収集プログラムなので,このデータベースのドライバが必要です.
Pythonでインストールするpymongo
ほら ほら
管理者のデバイスにMongoDBをインストールする
例えば:MongoDBをMACにインストールする,もちろんWINシステムもMongoDBをインストールする.
ダウンロード ダウンロードリンク:https://www.mongodb.com/download-center?jmp=nav#community
解圧
ダウンロード後,ディレクトリに解圧します./usr/local
。
環境変数を設定する
ターミナル入力:open -e .bash_profile
ファイルを開けると,以下のように書く:export PATH=${PATH}:/usr/local/MongoDB/bin
保存して端末使用source .bash_profile
変更を有効にする.
手動でデータベースのファイルディレクトリとログディレクトリを設定する
カタログを作成する/usr/local/data/db
関連フォルダはこちら.
カタログを作成する/usr/local/data/logs
関連フォルダはこちら.
プロフィール編集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 # 开启校验用户
MongoDB サービスを実行する
命令:
./mongod -f mongo.conf
サービス停止
use admin;
db.shutdownServer();
コレクターは発明者の量化取引プラットフォーム上のPythonロボット戦略として動作する.Pythonのレベルが限られているため,この文章のアイデアを示すための簡単な例のみを実装する.
コレクターポリシーコード:
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)
海外のメディアは,リンク
戦略ロボットを構築し,データを活用する. 注意: チェックインが必要です"図線図書庫"フォローしているサイトでは,フォローしているサイトは,
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)
データを使用する戦略ロボットのコードは,データベースにアクセスしてデータを取得し,現在のBARのデータを記録しない市場収集プログラムで,現在のBARのリアルタイムデータが必要な場合は,少し変更することもできます. 現在の例コードは,単にデータベース内のテーブル内のすべてのデータレコードがアクセス時に取得されていることを実証するためであり,データ収集時間が増加し,より多くのデータが収集されるにつれて,すべてのクエリがパフォーマンスに影響を及ぼし,現在のデータよりも新しいデータをクエリするだけで,現在のデータに追加するように設計することができます.
管理者プログラムを実行する
管理者のデバイスで実行されます.MongoDB
データベースサービス./mongod -f mongo.conf
収集機が稼働し,発明者の定量化取引プラットフォームを収集するシミュレーションディスクwexApp
ありがとうございました.BTC_USDT
取引対:
アドレス:wexApp
データベースデータを使用するロボットA:
データベースデータを使用するロボットB:
wexApp
ページ:
この図では,異なるIDを持つロボットが,同じデータ源を使用したK線データを共有していることが示されています.
発明者による量化取引プラットフォームの強力な機能により,任意の周期のK線データを簡単に収集することができます. 例えば,私が3分K線を集めたい場合,取引所は3分K線がない場合はどうしますか?
収集ロボットの配置を変更し,K線周期を3分に設定し,発明者による量化取引プラットフォームは自動的に3分間のK線を収集プログラムに合成します.
参数を使ってみましょう.删除表的名称
設定は:["records"]
1分K線データ表を削除します. 3分K線データを収集する準備をします.
スタート收集器程序
再び起動使用数据的策略机器人
。
描かれたK線グラフは,BARの間隔が3分であり,各BARは3分周期のK線柱です.
このプロジェクトでは,自作データソースのニーズを実現する取り組みが進められています. ありがとうございました
クキティ素晴らしい
スルティムトップ
スルティムトップ
説教賞賛する
言ったトップ
発明者 量化 - 微かな夢支援ありがとうございます. 私はPython小白です. 引数玉を投げて,より良い実装や提案があれば,完璧に期待します.