TradingView Webhook Entegrasyonu
Son güncelleme: Ekim 2026
TradingView alarmlarını otomatik olarak canlı emre çevir. Alarmın tetiklenince TradingView etrink'e bir webhook gönderir; EtrinkAgent al/sat emrini MT5 hesabında uygular — bilgisayarın kapalıyken bile 7/24.
Nasıl çalışır
TradingView alarmı → etrink webhook (anahtar, sembol ve hacim limitlerini doğrular) → komut kuyruğu → MT5 terminalindeki EtrinkAgent → broker'ın. Her sinyal panelinde loglanır.
Adım adım kurulum
- Panelde Webhook'u aç, bağlanacak hesabı seç ve + Yeni anahtar'a bas.
- Bir kez gösterilen webhook URL'ini kopyala (gizli tut — emir gönderebilir):
https://api.etrink.com/hooks/etrk_xxxxxxxxxxxxxxxx- TradingView'de bir Alarm oluştur. Webhook URL'i etkinleştir ve yukarıdaki URL'i yapıştır.
- Aşağıdaki JSON'u alarmın Message (mesaj) alanına yapıştır:
{
"action": "buy",
"symbol": "EURUSD",
"volume": 0.01,
"sl": 0,
"tp": 0,
"id": "{{time}}"
}- Kaydet. Alarm tetiklenince emir bağlı hesabında uygulanır.
Mesaj formatı
| Alan | Zorunlu | Açıklama |
|---|---|---|
action | evet | buy · sell · close. close yalnız kapatır, asla yeni emir açmaz. |
symbol | evet | Broker sembolü (ör. EURUSD, XAUUSD) |
volume | hayır | Lot. Buy/sell için gerekli; hesap başına hacim limitine tabidir. |
sl / tp | hayır | Stop-loss / take-profit fiyatı (0 = yok) |
magic | hayır | Emrin MT5 magic number'ı (0 veya üstü tam sayı) — her stratejiye bir tane ver. close'ta verilirse yalnız bu magic'li pozisyonlar kapanır; verilmezse sembolün tüm pozisyonları kapanır. |
closeOpposite | hayır | true = açmadan önce aynı sembolde ters yönü kapat (buy gelince sell'ler, sell gelince buy'lar kapanır); magic verildiyse yalnız aynı magic'liler. Ters pozisyon kapatılamazsa yeni emir açılmaz. |
allowDuplicate | hayır | Varsayılan true. false = sembolde aynı yönde (magic verildiyse aynı magic'li) açık pozisyon varken yeni emir açılmaz. Sinyal panelde atlandı görünür — hata değildir. closeOpposite ile birlikteyse önce ters yön kapanır, sonra bu kontrol yapılır. |
comment | hayır | Açılan emrin MT5 yorumu. En fazla 31 karakter kullanılır; Türkçe harfler Latin'e çevrilir (ç → c), tırnak ve emoji atılır. |
id | hayır | Idempotency — aynı id iki kez işlenmez |
test | hayır | true = sadece doğrula, gerçek emir gönderme |
Alternatif yazımlar da kabul edilir: close_opposite, closeopposite, magicNumber, magic_number, allow_duplicate — ve "true", "false", "1001" gibi metin değerler.
Örnekler
Satış (sell)
{ "action": "sell", "symbol": "XAUUSD", "volume": 0.05 }Açık pozisyonu kapat
{ "action": "close", "symbol": "EURUSD" }Yalnız bir stratejinin pozisyonlarını kapat (magic)
{ "action": "close", "symbol": "XAUUSD", "magic": 1001 }Dinamik değerler (TradingView yer tutucuları)
TradingView gönderim anında {{ticker}}, {{strategy.order.action}}, {{close}} gibi alanları doldurur:
{ "action": "{{strategy.order.action}}", "symbol": "{{ticker}}", "volume": 0.01 }Strateji reverse (long ve short için tek alarm)
Tek bir strateji alarmı grafiğini MT5'te izler: strateji long'a geçince magic 1001'in sell'leri kapanıp buy açılır, short'a geçince tersi. Aynı yönde ikinci pozisyon açılmaz.
{
"action": "{{strategy.order.action}}",
"symbol": "{{ticker}}",
"volume": 0.01,
"magic": 1001,
"closeOpposite": true,
"allowDuplicate": false,
"comment": "TV strateji A",
"id": "{{timenow}}"
}Pine Script örneği
Koşullar sağlanınca mesajın (JSON) webhook'a gitmesi için alert() çağrısını kullan:
//@version=5
strategy("etrink signal", overlay=true)
fast = ta.sma(close, 10)
slow = ta.sma(close, 30)
if ta.crossover(fast, slow)
strategy.entry("Long", strategy.long)
alert('{"action":"buy","symbol":"EURUSD","volume":0.01}',
alert.freq_once_per_bar_close)
if ta.crossunder(fast, slow)
strategy.close("Long")
alert('{"action":"close","symbol":"EURUSD"}',
alert.freq_once_per_bar_close)Güvenli test
Herhangi bir mesaja "test": true ekle (ya da paneldeki Test sinyali butonunu kullan). Tüm kontroller çalışır, olay test olarak loglanır ama gerçek emir gönderilmez.
Sık sorunlar
- “sembol izinli değil” — sembol izin listende yok veya broker'da adı farklı (ör.
EURUSD.m). - “çalışan instance yok” — bağlı hesap durdurulmuş; otomatik yeniden başlar, sonra tekrar gönder.
- Hacim reddedildi — hesap limitinin üstünde;
volume'u düşür veya limiti yükselt. - Sinyal “atlandı” —
allowDuplicate: falseve aynı yönde açık pozisyon vardı; beklenen davranış. - Her çağrı panelindeki Sinyaller sayfasında durumu, sonucu (bilet no veya hata) ve ham JSON'uyla görünür — önce oraya bak.
Yardım gerekirse: [email protected]