Pine alarmından gerçek Binance emrine — 3 ana yaklaşımı, eksiksiz kurulumu ve risk kontrolünü öğrenin, stratejinizi 7/24 çalıştırın.
TradingView, dünyanın en büyük grafik ve strateji topluluğu. Pine script yazıp Binance'ta otomatik işletmek istediğinde, Webhook köprüdür — alarm tetiklendiğinde TradingView belirtilen URL'ye JSON POST eder, sunucu alır ve Binance API'sini çağırarak alım/satım yapar.
Akış: TradingView alarmı → Webhook URL (kendi sunucu veya 3. parti) → Binance API → gerçek emir.
Artılar: görsel strateji mantığı, zengin Pine ekosistemi. Eksiler: imzalama, risk yönetimi, yeniden bağlanma kendin halletmek veya hazır platform için ödemek.
| Yaklaşım | Zorluk | Maliyet | Gecikme | Kim için |
|---|---|---|---|---|
| Kendi VPS köprü | Orta-Yüksek | $5-10/mo | 500ms-1.5s | Kod yazabilen, kontrol isteyen |
| 3. parti (3Commas vb.) | Düşük | $15-50/mo | 800ms-2s | Sıfır bakım isteyen |
| Binance API + yerel script | Düşük | Elektrik | Yerel ağa bağlı | Hep açık PC'si olan |
VPS'te küçük Node.js/Python/Go servisi, public URL, alır almaz Binance API'yi imzalayıp çağır. En esnek, her tür özel risk mantığı.
3Commas, Cryptohopper, Wundertrading, Aleeert.com gibi. Hazır Webhook URL verirler, Binance API bağlarsın çalışır. Kolay ama aylık ücret + platform riski + emanet API.
Desktop istemci harici script çalıştırır, yerel Python Binance'ı çağırır. Aylık ödeme yok ama PC sürekli açık olmalı.
Pine v5'te EMA crossover long-only stratejisi, alert_message ile JSON gönderiyor:
//@version=5
strategy("EMA Cross Webhook", overlay=true)
fast = ta.ema(close, 12)
slow = ta.ema(close, 26)
longCond = ta.crossover(fast, slow)
shortCond = ta.crossunder(fast, slow)
if longCond
strategy.entry("L", strategy.long, alert_message='{"passphrase":"YOUR_SECRET","action":"buy","symbol":"BTCUSDT","qty":0.01,"type":"MARKET"}')
if shortCond
strategy.close("L", alert_message='{"passphrase":"YOUR_SECRET","action":"close","symbol":"BTCUSDT"}')
Anahtar noktalar:
alert_message geçerli JSON olmalıpassphrase ortak secret, URL tahmininden korur{{strategy.order.alert_message}} yazhttps://your-vps.com/tv-webhookDigitalOcean/Vultr/Hetzner $5/ay 1 vCPU 1G yeter. Tokyo veya Singapur, Binance'a en düşük gecikme.
TradingView sadece HTTPS'e POST eder. Cloudflare ücretsiz SSL veya Caddy/Nginx + Let's Encrypt.
Express (Node) veya FastAPI (Python) ile POST endpoint, passphrase doğrula, Binance çağır.
pm2 veya systemd ile çökünce otomatik yeniden başlat, log dosyaya yaz.
API yönetimi → key oluştur → sadece spot/marjin veya vadeli, çekim KAPALI, VPS IP beyaz listede.
Grafiğe sağ tık → Alarm ekle → Webhook URL = https://your-vps.com/tv-webhook, Message = {{strategy.order.alert_message}}.
50-100 USDT BTC spot 3-5 gün. Her sinyal doğru emire dönüşüyor mu doğrula, sonra büyüt.
import express from 'express';
import crypto from 'crypto';
import axios from 'axios';
const app = express();
app.use(express.json());
const KEY = process.env.BN_KEY;
const SECRET = process.env.BN_SECRET;
const PASSPHRASE = process.env.PASSPHRASE;
const BASE = 'https://fapi.binance.com';
function sign(query){
return crypto.createHmac('sha256', SECRET).update(query).digest('hex');
}
app.post('/tv-webhook', async (req, res) => {
const { passphrase, symbol, action, qty, type='MARKET' } = req.body;
if (passphrase !== PASSPHRASE) return res.status(401).send('bad passphrase');
const side = action === 'buy' ? 'BUY' : 'SELL';
const ts = Date.now();
const query = `symbol=${symbol}&side=${side}&type=${type}&quantity=${qty}×tamp=${ts}`;
const url = `${BASE}/fapi/v1/order?${query}&signature=${sign(query)}`;
try{
const r = await axios.post(url, null, { headers:{'X-MBX-APIKEY':KEY}});
res.json(r.data);
}catch(e){
console.error(e.response?.data || e.message);
res.status(500).send('order failed');
}
});
app.listen(3000, () => console.log('listening 3000'));
/fapi/v2/account ile kayıp kontrolü, eşik aşılırsa otomatik durdurbookTicker, spread genişse iptalapt install ntpBNAPP kodu ile Binance kayıt, ömür boyu komisyon iadesi — yüksek frekans daha çok kazandırır.
BNAPP koduyla kayıt ol, ömür boyu komisyon iadesi