Kamu sudah merancang strategi di Pine Script dan mau strategi itu jalan sendiri. Masalahnya, TradingView tidak mengeksekusi order di brokermu secara langsung (kecuali lewat integrasi native). Jembatannya adalah webhook: alert-nya menyala, mengirim pesan ke server milikmu, dan server itulah yang mengeksekusi order lewat API broker. Panduan ini merakit seluruh pipeline-nya — sekaligus jujur soal di mana ia bisa gagal.
01Arsitektur ujung ke ujung
Ada empat mata rantai. Memahami alurnya wajib sebelum menulis satu baris kode pun:
Prasyarat: fitur webhook di alert mensyaratkan paket berbayar TradingView. Paket gratis tidak bisa mengirim webhook. Kamu juga butuh server dengan URL publik (sebuah VPS, atau layanan seperti Render/Railway) untuk menerima POST-nya.
02Langkah 1: alert di TradingView
Di Pine Script kamu, pakai alert() dengan pesan berformat JSON (supaya bisa dibaca server). Setelah itu, saat membuat alert di antarmukanya, tempel URL webhook kamu di kolom "Webhook URL".
// di Pine Script — pesan terstruktur dalam JSON if ta.crossover(ma_rapida, ma_lenta) alert('{"segredo":"MEU_SEGREDO","acao":"COMPRA","ativo":"BTCUSDT","qtd":0.01}', alert.freq_once_per_bar_close)
Parameter segredo itu vital — inilah yang mencegah siapa pun yang menemukan URL-mu memicu order palsu. Validasinya kita bahas di sisi server.
03Langkah 2: server penerima
Server sederhana di Python dengan FastAPI yang menerima webhook, memvalidasi secret-nya, lalu memprosesnya:
# servidor.py from fastapi import FastAPI, Request, HTTPException import os app = FastAPI() SEGREDO = os.getenv("WEBHOOK_SECRET") # jangan pernah hardcode @app.post("/webhook") async def webhook(request: Request): dados = await request.json() # 1. validasi secret — blokir request palsu if dados.get("segredo") != SEGREDO: raise HTTPException(status_code=403, detail="Não autorizado") # 2. baca sinyalnya acao = dados.get("acao") ativo = dados.get("ativo") qtd = dados.get("qtd") # 3. eksekusi di broker (fungsi dari modul eksekusi kamu) if acao == "COMPRA": executar_compra(ativo, qtd) elif acao == "VENDA": executar_venda(ativo, qtd) return {"status": "ok", "acao": acao}
Fungsi executar_compra memakai API broker — persis kode yang kami tunjukkan di tutorial Binance atau di API MT5. Webhook cuma menggantikan bagian yang "memutuskan" — sekarang yang memutuskan adalah Pine Script.
Keamanan itu wajib, bukan opsional: URL webhook kamu bersifat publik. Tanpa validasi secret, siapa pun yang menemukan URL itu bisa memicu order di akunmu. Selalu pakai: (1) secret di dalam pesannya, (2) HTTPS, (3) idealnya validasi juga IP asal TradingView. Perlakukan ini seperti kamu memperlakukan password rekening bankmu.
04Langkah 3: di mana server-nya di-hosting
Server-nya butuh URL publik dan harus selalu online. Pilihannya:
- VPS (yang sama dengan bot kamu) — kontrol penuh, IP tetap sehingga bisa kamu filter. Lihat panduan VPS kami.
- Platform deploy (Render, Railway, Fly.io) — server naik dengan cepat, ada paket gratis yang terbatas. Bagus untuk uji coba.
- Tunnel lokal (ngrok) — cuma untuk pengujian, karena ia mengekspos PC lokalmu untuk sementara. Jangan pernah dipakai di produksi.
Butuh VPS untuk hosting-nya?
Lihat cara memilih dan mengonfigurasi VPS yang akan menjalankan server webhook kamu 24/7.
05Webhook vs. integrasi native
Sebelum merakit seluruh pipeline ini, pertimbangkan alternatifnya: sebagian broker punya integrasi native dengan TradingView — kamu mengirim order langsung dari chart, tanpa server perantara. Pepperstone adalah salah satu contohnya. Bandingkan:
- Webhook + server sendiri: fleksibel (jalan dengan broker mana pun yang punya API), tapi menambah titik kegagalan (server, latensi, keamanan) dan butuh perawatan.
- Integrasi native: lebih sederhana dan andal (tanpa servermu di tengah), tapi terbatas pada broker yang menyediakannya dan pada apa yang diizinkan integrasi itu.
Rekomendasi: kalau brokermu punya integrasi native dan itu sudah memenuhi kebutuhan strategimu, pilih yang itu — makin sedikit yang bisa rusak. Webhook unggul saat kamu butuh logika kustom di tengah (misalnya manajemen risiko sendiri, beberapa broker sekaligus) atau saat brokernya cuma menyediakan API, bukan integrasi TradingView.
06Risiko jujur dari otomasi lewat webhook
Apa yang bisa salah (dan pasti terjadi suatu saat): server bisa mati dan kamu kehilangan sinyalnya. Request bisa hilang di jaringan. Ada latensi antara alert dan eksekusi (selisih beberapa detik bisa berarti). Satu alert bisa menyala dua kali (order ganda). Kamu butuh log, idempotensi (jangan mengeksekusi order yang sama dua kali), dan monitoring. Otomasi lewat webhook itu ampuh, tapi bukan "atur sekali lalu lupakan".
Praktik yang menurunkan risiko: catat setiap request yang masuk dan setiap order yang dikirim; terapkan idempotensi (tiap alert punya ID, abaikan yang berulang); sediakan "kill switch" (cara mematikan semuanya dengan cepat); dan — selalu — uji seluruh pipeline di akun demo selama berminggu-minggu sebelum menyentuh uang sungguhan.
07Pertanyaan yang sering muncul
Apa itu webhook TradingView?
Webhook adalah request HTTP yang dikirim TradingView secara otomatis ke URL milikmu saat sebuah alert menyala. Request itu bisa memicu server yang mengeksekusi order di broker, sehingga strategi yang dibuat di Pine Script berjalan otomatis.
Apakah butuh paket berbayar TradingView?
Ya. Fitur webhook di alert mensyaratkan paket berbayar. Paket gratis tidak bisa mengirim webhook. Selain itu, kamu butuh server dengan URL publik untuk menerimanya.
Apakah otomasi lewat webhook itu aman?
Ada risikonya: URL-nya publik (butuh validasi secret), server bisa mati, ada latensi, dan alert bisa terkirim ganda. Untuk strategi yang sensitif terhadap waktu, integrasi native lebih andal. Selalu tes di demo dan pakai log, idempotensi, serta kill switch.
Apa bedanya dengan integrasi native?
Integrasi native (misalnya Pepperstone) mengeksekusi langsung dari chart, tanpa servermu — lebih sederhana dan andal. Webhook lebih fleksibel (broker mana pun yang punya API, logika kustom di tengah) tapi menambah titik kegagalan. Pilih yang native kalau sudah memenuhi kebutuhanmu.
Bisakah webhook dipakai untuk B3?
Bisa, asalkan brokermu punya API yang bisa diakses. Server penerima akan memanggil API broker (atau jembatan MT5-Python) untuk mengeksekusi di B3, bursa Brasil. Alurnya sama; yang berubah cuma fungsi eksekusi di ujungnya.