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

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

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:

  1. Tài khoản Tradingview + đăng nhập tài khoản DNSE để miễn phí data realtime
  2. Tài khoản Cloudflare (miễn phí), tải app Cloudflare Tunnel về máy
  3. 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.

Để 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:

winget install –id Cloudflare.cloudflared

Thêm thư mục cài đặt vào PATH

Để chạy cloudflared từ bất kỳ đâu:

  1. Mở System Properties:
    • Nhấn Win + R > Gõ sysdm.cpl > Chọn tab Advanced > Click Environment Variables.
  2. 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).

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.

Bước 3: Tạo Tunnel và Route DNS

  1. 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ả.

Tạo file cấu hình:


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.

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

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.

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!

Lệnh đặt thành công lên Entrade dễ dàng khi Tradingview có tín hiệu Alert.

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ì.

5. Bảo mật Nâng cao

  1. 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).
  2. Kích hoạt Rate Limiting:
    • Đặt giới hạn request trong Cloudflare (Security > Rate Limiting).
  3. 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 Zalo 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/huong-dan-dat-lenh-tu-dong-tu-tradingview-qua-webhook-toi-ami-x-nho-cloudflare-tunnel/

Read more