Crypto Trading Bot
Một dự án đang trong quá trình phát triển về Tiền điện tử cho các sàn giao dịch phổ biến như Bitfinex, Bitmex và Binance. Vì hầu hết các bot giao dịch chỉ cung cấp tín hiệu mua và bán cơ bản, họ cung cấp nhiều tính năng để mang lại lợi nhuận như đặt lệnh trừng phạt hoặc giới hạn dừng không được hỗ trợ bởi các bot chính. Hơn nữa, hạn chế về khoảng thời gian cố định và các chỉ số kỹ thuật cần phải được phá vỡ.
Chưa sẵn sàng cho việc sản xuất chỉ có chức năng cơ bản
Tính năng
- Sử dụng đầy đủ Websocket cho giao tiếp trao đổi để phản ứng càng nhanh càng tốt trên thị trường
- Hỗ trợ nhiều cặp giao dịch trong một phiên bản
- Lưu trữ sqlite3 cho nến, ticker, …
- Giao diện người dùng Webserver
- Hỗ trợ “Short” và “Long”
- Bảng điều khiển duyệt tín hiệu cho các cặp
- Thông báo qua Slack và email
- Kết hợp các nến giao dịch của sàn nước ngoài (ví dụ: Giao dịch trên Bitmex với các giao dịch / nến nhanh hơn trên Binance)
Sàn giao dịch
- Bitmex với cấu hình đòn bẩy
- Bitmex Testnet
- Binance
- Binance Margin
- Binance Futures
- Coinbase Pro
- Bitfinex (ví tiền)
- Bybit
- USDT Perpetual Futures (v2) APIs
- Inverse Perpetual Futures (v2) APIs
CÔNG VIỆC CÒN LẠI:
- Huobi Global (ví tiền)
Công nghệ và gói lệnh kỹ thuật
- node.js
- sqlite3
- technicalindicators
- tulipindicators – tulind
- TA-Lib
- twig
- express
- Bootstrap v4
- Tradingview widgets
Cách sử dụng
[tùy chọn] Tiền cài đặt trước
Thư viện tulip được sử dụng cho các chỉ số; mà đôi khi gặp một số vấn đề trong quá trình npm install
do việc biên dịch mã:
Cài đặt các công cụ biên dịch
sudo apt-get install build-essential
Wrapper nodejs cho tulipindicators được gọi là Tulip Node (tuind), xem hướng dẫn cài đặt tại đó.
Ngoài ra, phiên bản từ mã nguồn không hỗ trợ tất cả các phiên bản nodejs. Có vẻ như các phiên bản <= 10 đang hoạt động. Bạn có thể sử dụng nodejs 12 nếu bạn đã biên dịch nó một lần thông qua phiên bản cũ hơn.
Cài đặt các gói
➜ npm install --production
➜ npm run postinstall
Tạo tệp instance cho các cặp và thay đổi
cp instance.js.dist instance.js
Cung cấp cấu hình với thông tin đăng nhập của sàn giao dịch
cp conf.json.dist conf.json
Tạo một cơ sở dữ liệu sqlite mới sử dụng lược đồ bot.sql để tạo các bảng
sqlite3 bot.db < bot.sql
Bắt đầu nào
npm start
Cách sử dụng: Docker
Để khởi tạo cấu hình một lần
➜ cp instance.js.dist instance.js && cp conf.json.dist conf.json && sqlite3 bot.db < bot.sql
➜ docker-compose build
➜ docker-compose up -d
Sau đó bạn có thể sử dụng docker-compose
để có một bot hoạt động thông qua http://127.0.0.1:8080
Cài đặt Telegram Bot
Trước tiên, bạn cần tạo một bot cho Telegram. Hãy trò chuyện với BotFather và làm theo các bước đơn giản cho đến khi nó cung cấp cho bạn một mã thông báo. Bạn cũng cần tạo một nhóm Telegram, nơi bạn và crypto-trading-bot sẽ giao tiếp. Sau khi tạo nhóm, thêm bot làm quản trị viên (hãy đảm bảo bỏ chọn “Tất cả thành viên đều là quản trị viên”).
Lấy ID Trò chuyện
Mời @RawDataBot
vào nhóm của bạn và lấy id nhóm trong trường chat id đã gửi
Message
├ message_id: 338
├ from
┊ ├ id: *****
┊ ├ is_bot: false
┊ ├ first_name: 사이드
┊ ├ username: ******
┊ └ language_code: en
├ chat
┊ ├ id: -1001118554477
┊ ├ title: Test Group
┊ └ type: supergroup
├ date: 1544948900
└ text: A
Tìm id: -1001118554477 là id trò chuyện của bạn (với dấu âm).
Ghi nhật ký tin nhắn vào Telegram
Ví dụ cài đặt, xem tệp conf.json.dist
, phần log.telegram, đặt chatId, token, level (mặc định là info). Kiểm tra thêm tùy chọn https://github.com/ivanmarban/winston-telegram#readme
Máy chủ Web
Một số liên kết trình duyệt
- Giao diện người dùng: http://127.0.0.1:8080
- Tín hiệu: http://127.0.0.1:8080/signals
- Tradingview: http://127.0.0.1:8080/tradingview/BTCUSD
- Kiểm tra lại: http://127.0.0.1:8080/backtest
- Quản lý Đơn đặt hàng & Cặp: http://127.0.0.1:8080/pairs
Bảo mật / Xác thực
Vì máy chủ web chỉ cung cấp xác thực cơ bản để truy cập, bạn nên kết hợp một số điều đó với https cho máy chủ công cộng. Đây là một ví dụ đơn giản về proxy_pass
cho nginx.
# /etc/nginx/sites-available/YOURHOST
server {
server_name YOURHOST;
location / {
proxy_pass http://127.0.0.1:8080;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/YOURHOST/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/YOURHOST/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Bạn cũng nên đặt địa chỉ IP nghe ở một địa chỉ cục bộ
# config.json
webserver.ip: 127.0.0.1
Giao diện Web
Bảng điều khiển
Giao dịch / Vị trí / Đơn đặt hàng
Kiểm tra lại
Hiện tại có một giao diện người dùng cho việc kiểm tra lại
Đơn đặt hàng thủ công
Chiến lược tích hợp sẵn
Có các chiến lược thông thường với các chỉ số bên trong, nhưng hầu hết thời gian chúng không có lợi nhuận. Xem một số chiến lược nâng cao hơn trong danh sách dưới đây
- dip_catcher
- dca_dipper – Đầu tư dài hạn Chiến lược Đầu tư Trung bình chi phí (DCA) vào Dip
Tìm một số chiến lược ví dụ trong thư mục src/modules/strategy/strategies
Chiến lược Tùy chỉnh
Đối với chiến lược tùy chỉnh, sử dụng thư mục var/strategies.
# simple file structure
var/strategies/your_strategy.js
# or wrap strategy into any sub folder depth
var/strategies/my_strategy/my_strategy.js
var/strategies/subfolder1/our_strategy/our_strategy.js
Công cụ / Watchdog
order_adjust
Giữ các đơn đặt hàng mở trong phần đặt chỗ mua / bán của sổ sách đặt hàng ở vị trí đầu tiên
Watchdog
stoploss
Cung cấp đơn đặt hàng stoploss tổng quát theo phần trăm giá nhập (Đơn đặt hàng trao đổi)risk_reward_ratio
Tạo đơn đặt hàng Risk Reward cho lời chốt lời và stoploss (Đơn đặt hàng trao đổi Giới hạn+Stop)stoploss_watch
Đóng vị trí mở nếu giá biểu mẫu tụt xuống dưới phần trăm tổn thất; sử dụng điều này cho sàn không hỗ trợ đơn đặt hàng stop_loss như Binancetrailing_stop
Sử dụng đơn đặt hàng trailing stop của sàn trao đổi nguyên bản; nếu được hỗ trợ bởi sàn nhưBitfinex
'watchdogs': [ { 'name': 'stoploss', 'percent': 3, }, { 'name': 'risk_reward_ratio', 'target_percent': 6, 'stop_percent': 3, }, { 'name': 'stoploss_watch', 'stop': 1.2, }, { 'name': 'trailing_stop', 'target_percent': 1.2, 'stop_percent': 0.5 } ],
Khoảng thời gian Tick
Theo mặc định, mỗi chiến lược sẽ “được kích hoạt” mỗi phút đầy đủ với cửa sổ thời gian khoảng ~10 giây. Nếu bạn muốn kích hoạt mỗi 15 phút hoặc ít hơn, xem ví dụ có thể dưới đây.
Các đơn vị được hỗ trợ là “m” (phút) và “s” (giây)
{
"strategies": [
{
"strategy": "cci",
"interval": "15m"
},
{
"strategy": "cci2",
"interval": "30s"
},
{
"strategy": "cci3",
"interval": "60m"
}
]
}
Giao dịch
Vốn
Để cho phép bot giao dịch, bạn cần cung cấp một số “vốn chơi”. Bạn có thể cho phép bằng số lượng tài sản hoặc tiền tệ, xem ví dụ dưới đây. Bạn nên chỉ cung cấp một trong số chúng, cái đầu tiên thắng.
c.symbols.push({
'symbol': 'BTC-EUR',
'exchange': 'coinbase_pro',
'trade': {
'capital': 0.015, // this will buy 0.015 BTC
'currency_capital': 50, // this will use 50 EUR and buys the equal amount of BTC (example: BTC price 3000 use 50 EUR. will result in 0.016 BTC)
'balance_percent': 75, // this will use 75 % of your exchange margin tradable balance. Currently implemented only on Bitfinex exchange.
},
})
Chiến lược thực hiện trực tiếp
Mọi thống kê chiến lược cần phải được thực hiện trực tiếp sẽ được đặt bên trong trade
.
{
"trade": {
"strategies": [
{
"strategy": "dip_catcher",
"interval": "15m",
"options": {
"period": "15m"
}
}
]
}
}
Trong các nhật ký, hiển thị qua giao diện trình duyệt, bạn có thể kiểm tra lại quá trình khởi tạo của các chiến lược sau khi ứng dụng bắt đầu.
[info] Starting strategy intervals
[info] "binance_futures" - "ETHUSDT" - "trade" - init strategy "dip_catcher" (15m) in 11.628 minutes
[info] "binance_futures" - "BTCUSDT" - "trade" first strategy run "dip_catcher" now every 15.00 minutes
Ví dụ Giao dịch Đầy đủ
Một ví dụ về instance.js
có thể được tìm thấy trong instance.js.dist_trade
. Đổi tên hoặc di chuyển nội dung đến tệp của bạn.
const c = (module.exports = {});
c.symbols = [
{
symbol: 'ETHUSDT',
exchange: 'binance_futures',
periods: ['1m', '15m', '1h'],
trade: {
currency_capital: 10,
strategies: [
{
strategy: 'dip_catcher',
interval: '15m',
options: {
period: '15m'
}
}
]
},
watchdogs: [
{
name: 'risk_reward_ratio',
target_percent: 3.1,
stop_percent: 2.1
}
]
}
];
Đòn bẩy
Cho mỗi cặp, bạn có thể đặt biên độ sử dụng trước khi đặt lệnh; tùy thuộc vào sàn giao dịch
c.symbols.push({
'symbol': 'BTCUSD',
'exchange': 'bitmex',
'extra': {
'bitmex_leverage': 5,
},
})
c.symbols.push({
'symbol': 'EOSUSD',
'exchange': 'bybit',
'extra': {
'bybit_leverage': 5,
},
})
Công cụ
Điền dữ liệu
lỗi thời , nhưng có một quá trình điền tự động khi khởi động ~1000 nến từ quá khứ (tùy thuộc vào sàn giao dịch) và liên tục được lấy khi chạy
node index.js backfill -e bitmex -p 1m -s XRPZ18
Tín hiệu
Slack
Kiểm tra
npm test
Liên kết liên quan
Cảm hứng cho Bot Giao dịch
Các bot khác với các mẫu thiết kế có thể có
- https://github.com/DeviaVir/zenbot
- https://github.com/magic8bot/magic8bot
- https://github.com/askmike/gekko
- https://github.com/freqtrade/freqtrade
- https://github.com/Ekliptor/WolfBot
- https://github.com/andresilvasantos/bitprophet
- https://github.com/kavehs87/PHPTradingBot
- https://github.com/Superalgos/Superalgos
Chiến lược
Một số chiến lược dựa trên các chỉ số kỹ thuật để thu thập một số ý tưởng
- https://github.com/freqtrade/freqtrade-strategies
- https://github.com/freqtrade/freqtrade-strategies/tree/master/user_data/strategies/berlinguyinca
- https://github.com/xFFFFF/Gekko-Strategies
- https://github.com/sthewissen/Mynt/tree/master/src/Mynt.Core/Strategies
- https://github.com/Ekliptor/WolfBot/tree/master/src/Strategies
- https://github.com/Superalgos/Strategy-BTC-WeakHandsBuster
- https://github.com/Superalgos/Strategy-BTC-BB-Top-Bounce
Chi tiết tải về:
Tác giả: Haehnchen
Mã nguồn: https://github.com/Haehnchen/crypto-trading-bot
Giấy phép: MIT license