___ _ _ _ _ _ _____ _ _ ____ _
|_ _|_ __ | |_ ___| | (_) __ _ ___ _ __ | |_ |_ _| __ __ _ __| (_)_ __ __ _ | __ ) ___ | |_
| || '_ | __/ _ | | |/ _` |/ _ '_ | __| | || '__/ _` |/ _` | | '_ / _` | | _ / _ | __|
| || | | | || __/ | | | (_| | __/ | | | |_ | || | | (_| | (_| | | | | | (_| | | |_) | (_) | |_
|___|_| |_|_____|_|_|_|__, |___|_| |_|__| |_||_| __,_|__,_|_|_| |_|__, | |____/ ___/ __|
|___/ |___/
₿ Ξ ₳ ₮ ✕ ◎ ● Ð Ł Ƀ Ⱥ ∞ ξ ◈ ꜩ ɱ ε ɨ Ɓ Μ Đ ⓩ Ο Ӿ Ɍ ȿ
?智能交易訊號? https://t.me/intelligent_trading_signals
該專案旨在使用最先進的機器學習(ML)演算法和特徵工程開發用於自動交易加密貨幣的智慧交易機器人。此項目提供以下主要功能:
訊號服務在雲端運行,並將其訊號傳送到此 Telegram 頻道:
?智能交易訊號? https://t.me/intelligent_trading_signals
每個人都可以訂閱該頻道以了解該機器人產生的訊號。
目前,該機器人使用以下參數進行配置:
當分數低於閾值且沒有通知發送到通道時,存在靜默期。如果分數大於閾值,則每分鐘都會發送通知,如下所示
₿24.518???得分:-0.26
第一個數字是最新收盤價。得分-0.26意味著價格很有可能低於當前收盤價。
如果分數超過模型中指定的某個閾值,則會產生買入或賣出訊號,這意味著現在是進行交易的好時機。此類通知如下所示:
?買進:₿ 24,033 分:+0.34
為了使訊號服務正常運作,必須訓練多個 ML 模型,並且模型檔案可用於該服務。所有腳本透過載入一些輸入資料並儲存一些輸出檔案以批次模式運行。批次腳本位於scripts
模組中。
如果一切都已配置,則必須執行以下腳本:
python -m scripts.download_binance -c config.json
python -m scripts.merge -c config.json
python -m scripts.features -c config.json
python -m scripts.labels -c config.json
python -m scripts.train -c config.json
python -m scripts.signals -c config.json
python -m scripts.train_signals -c config.json
如果沒有配置文件,腳本將使用預設參數,這對於測試目的很有用,而不是為了顯示良好的效能。使用為每個版本提供的範例設定文件,例如config-sample-v0.6.0.jsonc
。
這兩個腳本的主要配置參數是data_sources
中的來源清單。此清單中的一項指定資料來源以及用於區分不同來源中具有相同名稱的資料列的column_prefix
。
下載最新歷史資料: python -m scripts.download_binance -c config.json
將多個歷史資料集合併為一個資料集: python -m scripts.merge -c config.json
此腳本用於計算派生特徵:
python -m scripts.features -c config.json
要產生的功能清單是透過設定檔中的feature_sets
清單配置的。如何產生特徵由特徵產生器定義,每個特徵產生器在其配置部分中指定了一些參數。
talib
特徵產生器依賴TA-lib技術分析函式庫。以下是其設定範例"config": {"columns": ["close"], "functions": ["SMA"], "windows": [5, 10, 15]}
itbstats
特徵產生器實現了可以在 tsfresh 中找到的函數,例如scipy_skew
、 scipy_kurtosis
、 lsbm
(低於平均值的最長罷工)、 fmax
(最大值的第一個位置)、 mean
、 std
、 area
、 slope
。以下是典型參數"config": {"columns": ["close"], "functions": ["skew", "fmax"], "windows": [5, 10, 15]}
itblib
特徵產生器在 ITB 中實現,但它的大部分特徵可以透過 talib 產生(更快)tsfresh
從 tsfresh 庫產生函數該腳本與特徵生成類似,因為它會向輸入檔案新增列。然而,這些列描述了我們想要預測的東西以及在線上模式下執行時未知的東西。例如,未來可能會漲價:
python -m scripts.labels -c config.json
要產生的標籤清單透過配置中的label_sets
list 進行配置。一個標籤集指向產生附加列的函數。它們的配置與功能配置非常相似。
highlow
標籤產生器會傳回 Truehighlow2
計算未來的增加(減少),前提是在此之前沒有顯著的減少(增加)。這是其典型配置"config": {"columns": ["close", "high", "low"], "function": "high", "thresholds": [1.0, 1.5, 2.0], "tolerance": 0.2, "horizon": 10080, "names": ["first_high_10", "first_high_15", "first_high_20"]}
topbot
已棄用topbot2
計算最大值和最小值(標記為 True)。每個標記的最大值(最小值)都保證被低於(高於)指定等級的最小值(最大值)包圍。相鄰最小值和最大值之間所需的最小差異透過level
參數指定。容差參數還允許包括接近最大值/最小值的點。這是一個典型的設定"config": {"columns": "close", "function": "bot", "level": 0.02, "tolerances": [0.1, 0.2], "names": ["bot2_1", "bot2_2"]}
此腳本使用指定的輸入特徵和標籤來訓練多個 ML 模型:
python -m scripts.train -c config.json
prediction-metrics.txt
文件配置:
model_store.py
中描述train_features
中指定labels
中指定algorithms
中指定此步驟的目標是聚合不同演算法針對不同標籤產生的預測分數。結果是一個分數,應該由下一步的訊號規則來消耗。聚合參數在score_aggregation
部分中指定。 buy_labels
和sell_labels
指定由聚合過程處理的輸入預測分數。 window
是用於滾動聚合的先前步驟的數量,而combine
是一種將兩種分數類型(購買和標籤)組合成一個輸出分數的方式。
聚合過程產生的分數是某個數字,訊號規則的目標是做出交易決策:買入、賣出或什麼都不做。訊號規則的參數在trade_model
中描述。
該腳本使用許多買賣訊號參數模擬交易,然後選擇性能最佳的訊號參數:
python -m scripts.train_signals -c config.json
腳本啟動一項服務,定期執行一項相同的任務:載入最新資料、生成特徵、進行預測、產生訊號、通知訂閱者:
python -m service.server -c config.json
有兩個問題:
python -m scripts.predict_rolling -c config.json
python -m scripts.train_signals -c config.json
配置參數在兩個檔案中指定:
App
類別的config
字段中的service.App.py
-c config.jsom
服務和腳本的參數。當此檔案載入到腳本或服務中時,此設定檔中的值將覆寫App.config
中的值以下是一些最重要的欄位(在App.py
和config.json
中):
data_folder
- 僅批次離線腳本所需的資料檔案的位置symbol
它是一個交易對,如BTCUSDT
labels
被視為標籤的列名稱清單。如果您定義一個用於訓練然後用於預測的新標籤,那麼您需要在此處指定其名稱algorithms
名稱列表train_features
用作訓練和預測的輸入特徵的所有列名稱的清單。buy_labels
和sell_labels
用於訊號的預測列的列表trade_model
訊號器的參數(主要是一些閾值)trader
是交易者參數部分。目前,尚未經過徹底測試。collector
這些參數部分用於資料收集服務。有兩種類型的資料收集服務:與向資料提供者發出的定期請求同步,以及訂閱資料提供者並在新資料可用時立即取得通知的非同步串流服務。它們正在工作,但尚未經過徹底測試並整合到主要服務中。目前主要使用模式依賴手動批量資料更新、特徵生成和模型訓練。擁有這些資料收集服務的原因之一是1) 獲得更快的更新2) 獲得正常API(如訂單簿)中不可用的資料(存在一些使用此資料的功能,但它們未整合到主工作流程中)。有關更多詳細信息,請參閱 App.config 中的範例設定檔和註釋。
每分鐘,訊號發送器都會執行以下步驟來預測價格是否可能上漲或下跌:
筆記:
啟動服務: python3 -m service.server -c config.json
交易者正在工作,但沒有經過徹底的調試,特別是沒有測試穩定性和可靠性。因此,它應該被視為具有基本功能的原型。它目前與信號器集成,但在更好的設計中應該是一個單獨的服務。
回測
外部集成