Hướng dẫn đặt lệnh tự động từ Tradingview qua webhook tới Ami X nhờ Cloudflare Tunnel

Chủ đề trong 'Thị trường chứng khoán' bởi AmiX, 23/06/2025.

1606 người đang online, trong đó có 642 thành viên. 12:51 (UTC+07:00) Bangkok, Hanoi, Jakarta
  1. 0 người đang xem box này (Thành viên: 0, Khách: 0)
Chủ đề này đã có 1083 lượt đọc và 0 bài trả lời
  1. AmiX

    AmiX Thành viên rất tích cực

    Tham gia ngày:
    17/01/2025
    Đã được thích:
    41
    [​IMG]
    Bài viết này dành cho những bạn muốn dùng Tradingview để xây dựng chiến thuật giao dịch tự động thay vì Amibroker, và muốn dùng webhook để đặt lệnh tới tài khoản DNSE/Entrade một cách tự động.
    Điểm đặc biệt là bạn có thể đặt lệnh cả bằng tay, lẫn đặt lệnh tự động từ Tradingview tới nhiều tài khoản DNSE/Entrade với phần mềm Ami X. Có thể dặt lệnh cả cơ sở + phái sinh. Còn chần chừ gì nữa mà không thử!
    Bạn sẽ cần:
    Tài khoản Tradingview + đăng nhập tài khoản DNSE để
    miễn phí data realtime
    Tài khoản Cloudflare (miễn phí), tải app Cloudflare Tunnel về máy
    Tài khoản DNSE (miễn phí),
    tải app Ami X về máy
    để đặt lệnh tự động với DNSE hoặc Entrade.
    Cài đặt Python để chạy 1 file code.
    [​IMG]
    Để kết nối webhook từ TradingView thông qua Cloudflare đến máy tính cá nhân của bạn, bạn cần
    thiết lập Cloudflare Tunnel
    để expose server local ra internet một cách an toàn. Dưới đây là các bước chi tiết:
    1. Thiết lập Cloudflare Tunnel (Không cần mở port router)
    Cloudflare Tunnel (Argo Tunnel) giúp kết nối máy tính cá nhân của bạn với Cloudflare mà không cần mở port trên router.
    Bước 1: Cài đặt
    cloudflared
    Tải công cụ
    cloudflared
    từ
    trang chủ Cloudflare
    .
    Giải nén và đặt file vào thư mục dễ truy cập (ví dụ:
    C:\cloudflared
    ).
    Bạn có thể Download và install
    cloudflared
    bằng
    winget ↗
    . Mở cửa sổ Terminal window và nhập:
    [​IMG]
    winget install –id Cloudflare.cloudflared
    Thêm thư mục cài đặt vào PATH
    Để chạy
    cloudflared
    từ bất kỳ đâu:
    Mở
    System Properties
    :
    Nhấn
    Win + R
    > Gõ
    sysdm.cpl
    > Chọn tab
    Advanced
    > Click
    Environment Variables
    .
    Chỉnh sửa
    Path
    trong phần
    System variables
    :
    Thêm đường dẫn:
    C:\Program Files\Cloudflare\Cloudflared
    .
    Nếu không thấy file, hãy cài đặt lại thủ công từ trang GitHub (tải file .exe và đặt vào thư mục trên).
    Kiểm tra lại quá trình cài đặt. Mở thư mục C:\Program Files\Cloudflare\Cloudflared để đảm bảo file cloudflared.exe tồn tại. Có thể máy tính của bạn sẽ là thư mục khác. Nếu không thấy file, hãy cài đặt lại thủ công từ
    trang GitHub
    (tải file
    .exe
    và đặt vào thư mục trên).
    [​IMG]
    Bước 2: Authenticate với Cloudflare
    Khởi động lại PowerShell
    Chạy lệnh sau để đăng nhập vào tài khoản Cloudflare:
    cloudflared tunnel login
    Mở URL được sinh ra trong terminal và chọn domain của bạn đã lưu trên Cloudfare.
    [​IMG]
    Bước 3: Tạo Tunnel và Rou
    te DNS
    Tạo Tunnel
    : Gõ vào Terminal: cloudflared tunnel create <TÊN_TUNNEL> # Ví dụ: trading-tunnel
    cloudflared tunnel create trading-tunnel
    Lưu lại
    Tunnel ID
    được sinh ra. Bạn sẽ thấy thông tin nó trên màn hình Terminal kết quả.
    [​IMG]
    Tạo file cấu hình
    :
    [​IMG]
    Tạo file
    config.yml
    trong thư mục
    .cloudflared
    (thường ở
    C:\Users\<user>\.cloudflared
    ) với nội dung (nhớ thay cái <TUNNEL_ID> bằng chuỗi text bạn nhận được ở trên và thay hostname bằng domain của bạn.
    [​IMG]
    tunnel: <TUNNEL_ID>
    credentials-file: C:\Users\<user>\.cloudflared\<TUNNEL_ID>.json
    ingress:
    – hostname: webhook.yourdomain.com # Thay yourdomain.com bằng domain của bạn
    service: http://localhost:5000 # Trỏ đến server local của bạn
    – service: http_status:404 # Xử lý các request không khớp
    Thêm DNS Record
    :
    cloudflared tunnel route dns <TUNNEL_ID> webhook.yourdomain.com
    Bước 4: Chạy Tunnel
    Chạy lệnh sau để khởi động tunnel:
    cloudflared tunnel run <TUNNEL_ID>
    Tạo service để chạy nền (tuỳ chọn)
    Để tunnel chạy tự động khi khởi động máy:
    cloudflared service install
    cloudflared tunnel run –config “C:\Users\Admin\.cloudflared\config.yml”
    5. Kiểm tra kết nối
    Mở trình duyệt và truy cập:
    https://webhook.yourdomain.com/
    Nếu trả về
    404
    hoặc phản hồi từ server local của bạn là thành công!
    Nếu bạn đã chạy file Main.py ở máy tính thì sẽ mở được trang web như này là thành công.
    2. Cấu hình TradingView Webhook
    Bước 1: Định dạng Request từ TradingView
    [​IMG]
    TradingView gửi POST request dạng JSON. Bạn cần chuyển đổi nó thành các URL local server của bạn. Ví dụ:
    {
    “secret_key”: “your-secret-key”,
    “action”: “BUY”,
    “symbol”: “VN30F1M”,
    “price”: 1300,
    “account”: “0001177065”,
    “loan”: 2403,
    “volume”: 1
    }
    Bước 2: Tạo Webhook URL trên TradingView
    URL Webhook:
    https://webhook.yourdomain.com/trade
    (hoặc
    /closeorders
    )
    3. Cấu hình Server trên Máy tính cá nhân
    Server của bạn cần xử lý POST request từ Cloudflare và chuyển thành GET request đến các endpoint local.
    Ví dụ bằng Python (Flask):
    Tải file demo
    .
    File
    Demo ver 3
    (26/3/2025):
    Gộp việc chạy câu lệnh
    cloudflared tunnel run <TUNNEL_ID>
    vào cùng file python khi chạy. Sửa đoạn code convert mã VN30H2025 kiểu Tradingview sang VN30F2503 theo bảng mã hóa. Giúp có thể đặt lệnh cả cơ sở và phái sinh linh hoạt.
    Chạy file main.py này trên máy tính của bạn để bảo đảm xử lý webhook từ Tradingview redirect tới câu lệnh Ami X hoặc Amiphaisinh.
    from flask import Flask, request, jsonify
    import requests
    app = Flask(__name__)
    SECRET_KEY = “your-secret-key” # Khớp với header từ TradingView
    @app.route(‘/trade’, methods=[‘POST’])
    def handle_trade():
    data = request.json # Lấy dữ liệu JSON từ webhook TradingView
    # Kiểm tra xem JSON có tồn tại không
    if not data or “secret_key” not in data:
    return jsonify({“error”: “Invalid request”}), 400
    # Kiểm tra secret_key
    if data[“secret_key”] != “your-secret-key”:
    return jsonify({“error”: “Unauthorized”}), 401
    # Lấy dữ liệu từ payload JSON
    action = data.get(“action”, “”).upper()
    symbol = data.get(“symbol”)
    price = data.get(“price”)
    time = data.get(“time”)
    print(f”Received alert: {action} {symbol} at {price} (Time: {time})”) # Ghi log
    # Xử lý logic gửi lệnh giao dịch
    if action == “BUY”:
    trade_action = “NB” # Lệnh mua
    elif action == “SELL”:
    trade_action = “NS” # Lệnh bán
    else:
    return jsonify({“error”: “Invalid action”}), 400
    # URL API xử lý giao dịch (dùng code đặt lệnh của Ami X hoặc Amiphaisinh)
    trade_url = f”http://localhost:7979/trade?side={trade_action}&symbol={symbol}&price={price}&volume=1&type=LO”
    response = requests.get(trade_url)
    return jsonify({“status”: response.text}), response.status_code
    if __name__ == ‘__main__’:
    app.run(port=5000) # Đổi cổng để tránh xung đột với AmiX
    Bạn có thể sửa đoạn mã ở url trong code để cấu hình gọi đặt lệnh tới Ami X hoặc
    Amiphaisinh
    .
    Hiện tại Ami X bản 1.9.2 đã hỗ trợ đặt lệnh tự động cho cả DNSE và Entrade.
    Xem thêm tại đây
    . Bạn có thể tải Sổ tay sử dụng Ami X
    tại đây
    .
    [​IMG]
    4. Kiểm tra
    Bạn có thể chạy file fakewebhook.py trong thư mục tải về, để kiểm tra xem đã đặt lệnh thành công chưa mà chưa cần cấu hình Tradingview hoặc kiểm tra bằng Curl.
    Test với cURL:
    # Test lệnh Long
    curl -X POST https://webhook.yourdomain.com/trade \
    -H “Content-Type: application/json” \
    -d ‘{“secret_key”: “your-secret-key”, “action”: “BUY”, “symbol”: “VN30F1M”, “price”: 1300}’
    # Test đóng lệnh
    curl -X POST https://webhook.yourdomain.com/closeorders \
    Kiểm tra xem lệnh đã được Ami X nhận chưa là thành công!
    [​IMG]
    Lệnh đặt thành công lên Entrade dễ dàng khi Tradingview có tín hiệu Alert.
    [​IMG]
    [​IMG]
    Tốc độ đặt lệnh tùy thuộc mạng Internet, nhưng khi Tradingview có alert lúc 14:01:05 thì 14:01:09 là lệnh đã đặt từ Ami X lên DNSE/Entrade rồi. Cũng gần như tức thì.
    [​IMG]
    5. Bảo mật Nâng cao
    Giới hạn IP nguồn
    :
    Trong Cloudflare, vào
    Security > WAF > Rules
    .
    Tạo rule chỉ cho phép IP của TradingView (nếu họ công bố dải IP).
    Kích hoạt Rate Limiting
    :
    Đặt giới hạn request trong Cloudflare (
    Security > Rate Limiting
    ).
    Mã hóa dữ liệu
    :
    Sử dụng HTTPS (Cloudflare tự động kích hoạt SSL/TLS).
    Thêm xác thực 2 lớp (ví dụ: kết hợp secret key và timestamp).
    Lưu ý Quan trọng
    Đảm bảo máy tính cá nhân
    luôn chạy
    và kết nối Internet ổn định.
    Sử dụng
    PM2
    (Node.js) hoặc
    Supervisor
    (Python) để tự động restart server nếu gặp lỗi.
    Thường xuyên kiểm tra logs của Cloudflare Tunnel (
    cloudflared tunnel info <TUNNEL_ID>
    ).
    Nếu bạn cần hỗ trợ gì, bạn có thể tham gia
    group **** Tradingview của DNSE
    để cùng trao đổi nhé. Có gần 1000 người đang trao đổi hỗ trợ nhau ở đây đó.
    Chúc bạn sẽ luôn giao dịch thành công!
    Nguồn: https://phaisinh.online/2025/06/23/...-qua-webhook-toi-ami-x-nho-cloudflare-tunnel/

Chia sẻ trang này