- TradingView'de göstergeler ve stratejiler nasıl yazılır ve bir borsaya nasıl bağlanır?
- Bölüm 1 — Pine Script ile Başlangıç (Sürüm 5)
- Bölüm 2 — TradingView'de Alarmların ve Web Kancalarının Yapısı
- Bölüm 3 — Alarm almak ve borsaya emir göndermek için bir web sunucusu kurma
- Bölüm 4 — Güvenli Sunucu Dağıtımı (Linux/Docker/systemd)
- Bölüm 5 — Güvenlik ve İstikrar İpuçları
- Bölüm 6 — Geriye Dönük Test, Optimizasyon ve İleriye Dönük Test
- Bölüm 7 — Alım Satım İçin Veri Merkezi Konumlarının Karşılaştırılması
- Bölüm 8 — Alım Satım İçin Önerilen Sunucu Yapılandırmaları
- Bölüm 9 — Otomasyonlu alım satım işlemlerinde riski azaltmaya yönelik pratik ipuçları
- Çözüm
- Sıkça Sorulan Sorular
TradingView'de göstergeler ve stratejiler nasıl yazılır ve bir borsaya nasıl bağlanır?
Bu kapsamlı ve pratik kılavuz, Pine Script sürüm 5 ile göstergeler ve stratejiler yazmayı, TradingView'de webhook alarmları oluşturmayı, Flask ve ccxt ile güvenli bir webhook sunucusu kurmayı ve gecikmeyi azaltmak için teknik/güvenlik ipuçları ve konum seçimini adım adım açıklamaktadır. Bu makale, yatırımcılar, geliştiriciler ve operasyon ekipleri için uygundur.
Bölüm 1 — Pine Script ile Başlangıç (Sürüm 5)
Pine Script sürüm 5, yeni özellikler ve gelişmiş işlevler içeriyor. Başlamak için:
- Sürümü seçin: İtibaren
//@version=5Kullanmak. - İki ana türü vardır: gösterge (grafikte görüntülenmesi ve sinyal üretimi için) ve strateji (Geçmişe dönük testler ve varsayımsal emirlerin yürütülmesi için.).
- Giriş değişkenleri: Fonksiyondan
girişKullanıcı tarafından değiştirilebilir parametreler için kullanılır. - Alarmlar: İtibaren
uyarı durumuTradingView'de kullanılabilir alarm koşullarını tanımlamak için kullanın.
Basit gösterge örneği (EMA kesişimi + RSI filtresi)
//@version=5
indicator("EMA Crossover + RSI Filter", overlay=true)
// Inputs
shortLen = input.int(9, "EMA Short Length")
longLen = input.int(21, "EMA Long Length")
rsiLen = input.int(14, "RSI Length")
rsiThresh = input.int(50, "RSI Threshold")
// Price
price = close
// Indicators
emaShort = ta.ema(price, shortLen)
emaLong = ta.ema(price, longLen)
rsi = ta.rsi(price, rsiLen)
// Signals
bull = ta.crossover(emaShort, emaLong) and rsi > rsiThresh
bear = ta.crossunder(emaShort, emaLong) and rsi < rsiThresh
plot(emaShort, color=color.blue)
plot(emaLong, color=color.orange)
plotshape(bull, title="Long", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
plotshape(bear, title="Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")
// Alerts
alertcondition(bull, title="Long Alert", message="LONG_SIGNAL")
alertcondition(bear, title="Short Alert", message="SHORT_SIGNAL")Pratik ipuçları: Alarm mesajı, web sunucusunun kolayca ayrıştırabileceği şekilde JSON formatında veya belirli bir yapıda olmalıdır; örneğin: {"signal":"LONG","symbol":"BTCUSDT","timeframe":"1m"}.
Risk yönetimi içeren basit strateji örneği
//@version=5
strategy("EMA Crossover Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)
// inputs ...
// (same indicators as above)
shortLen = input.int(9, "EMA Short Length")
longLen = input.int(21, "EMA Long Length")
rsiLen = input.int(14, "RSI Length")
rsiThresh = input.int(50, "RSI Threshold")
price = close
emaShort = ta.ema(price, shortLen)
emaLong = ta.ema(price, longLen)
rsi = ta.rsi(price, rsiLen)
bull = ta.crossover(emaShort, emaLong) and rsi > rsiThresh
bear = ta.crossunder(emaShort, emaLong) and rsi < rsiThresh
if bull
strategy.entry("Long", strategy.long)
if bear
strategy.entry("Short", strategy.short)
// Example Stop Loss / Take Profit
strategy.exit("Exit Long", from_entry="Long", loss=100, profit=200)
strategy.exit("Exit Short", from_entry="Short", loss=100, profit=200)Açıklama: Daha doğru geriye dönük testler için strateji Kullanım ve parametreler stop loss Ve kar al Ve konum boyutunu ayarlayın.
Bölüm 2 — TradingView'de Alarmların ve Web Kancalarının Yapısı
Grafiğe bir gösterge veya strateji ekledikten sonra, Uyarılar menüsünden yeni bir uyarı oluşturun. Ayarlar bölümünde:
- Uyarı türü: Seçenek Webhook URL Sunucu adresinizi seçin ve girin (örneğin: https://trade.example.com/webhook).
- Mesaj: Standart JSON kullanın; alanları ekleyin.
sembol,aksiyon,fiyat,zaman aralığı,uuidVezaman damgası.
Alarm mesajı örneği:
{"symbol":"BTCUSDT","action":"LONG","price":"${close}","timeframe":"1m","strategy":"EMA_CROSS_V1"}
Bölüm 3 — Alarm almak ve borsaya emir göndermek için bir web sunucusu kurma
Önerilen mimari:
- TradingView (Uyarı) → HTTPS Webhook (NGINX + Flask/Node) → Bot (İş Mantığı) → Borsa API'si (ccxt veya SDK)
Önkoşulların yüklenmesi (Ubuntu örneği)
sudo apt update
sudo apt install -y python3 python3-venv python3-pip
python3 -m venv venv
source venv/bin/activate
pip install flask ccxtFlask ve ccxt ile örnek app.py dosyası.
from flask import Flask, request, jsonify
import ccxt, os, hmac, hashlib, time
app = Flask(__name__)
API_KEY = os.getenv("EXCHANGE_API_KEY")
API_SECRET = os.getenv("EXCHANGE_API_SECRET")
exchange = ccxt.binance({
'apiKey': API_KEY,
'secret': API_SECRET,
'enableRateLimit': True,
})
@app.route('/webhook', methods=['POST'])
def webhook():
data = request.json
# simple validation: check data presence (use HMAC in production)
if not data:
return jsonify({"error":"no data"}),400
symbol = data.get("symbol")
action = data.get("action")
qty = data.get("qty", 0.001)
try:
if action == "LONG":
order = exchange.create_market_buy_order(symbol, qty)
elif action == "SHORT":
order = exchange.create_market_sell_order(symbol, qty)
else:
return jsonify({"error":"unknown action"}),400
return jsonify(order)
except Exception as e:
return jsonify({"error":str(e)}),500
Bölüm 4 — Güvenli Sunucu Dağıtımı (Linux/Docker/systemd)
Öneri: Ters proxy olarak nginx ve TLS için certbot ile birlikte Docker Compose kullanın.
docker-compose.yml örneği
version: '3.8'
services:
app:
build: .
restart: always
environment:
- EXCHANGE_API_KEY
- EXCHANGE_API_SECRET
nginx:
image: nginx:stable
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./certs:/etc/letsencrypt
ports:
- "80:80"
- "443:443"Docker olmadan çalıştırılacak örnek systemd birimi
[Unit]
Description=Trading Webhook Bot
After=network.target
[Service]
User=trade
WorkingDirectory=/home/trade/app
Environment=EXCHANGE_API_KEY=your_key_here
Environment=EXCHANGE_API_SECRET=your_secret_here
ExecStart=/home/trade/venv/bin/gunicorn -w 4 -b 127.0.0.1:5000 app:app
Restart=always
[Install]
WantedBy=multi-user.targetÖrnek yönetim komutları:
sudo systemctl daemon-reload
sudo systemctl enable --now tradebot.service
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
Bölüm 5 — Güvenlik ve İstikrar İpuçları
- API Anahtarının güvenli bir şekilde saklanması: Ortam değişkeninden, dosya ile
chmod 600Veya Secret Manager'ı kullanın. - TLS: HTTPS için geçerli bir sertifika kullanın (certbot + nginx).
- Mesaj onayı: Gelen TradingView mesajlarını doğrulamak için HMAC-SHA256 algoritmasını kullanın.
- Sınırlamalar ve Yeniden Deneme: Hız sınırlama ve yeniden deneme/geri çekilme algoritmalarını uygulayın.
- İzleme ve kayıt tutma: Sağlık durumunu ve yanıt sürelerini izlemek için Prometheus + Grafana veya ELK kullanın.
- Saldırılara karşı koruma: Herkese açık uç noktalar için Fail2Ban, iptables ve DDoS karşıtı veya CDN hizmetleri kullanın.
Bölüm 6 — Geriye Dönük Test, Optimizasyon ve İleriye Dönük Test
- Geri test: Fonksiyonlardan
strateji.*Tarihsel analiz için Pine'ı kullanın, ancak Pine'ın parametrik sınırlamalarının farkında olun. - Optimizasyon: Parametreleri manuel olarak veya harici komut dosyaları kullanarak test edin (örneğin, farklı parametrelerle birden fazla grafik oluşturarak).
- İleri test: Geriye dönük testlerden sonra her zaman demo hesapta veya düşük gecikmeli bir VPS'de küçük bir veri hacmiyle test yapın.
- Kayma ve Gecikme Ölçümü: Webhook'un alınma zamanını ve borsadaki siparişin gerçekleşme zamanını kaydedin ve analiz edin.
Bölüm 7 — Alım Satım İçin Veri Merkezi Konumlarının Karşılaştırılması
Veri merkezi konumu, yüksek frekanslı stratejilerin başarısında her milisaniyenin önemini ortaya koyabilir. Konum seçimi, değişim noktalarına ve BGP rotalarına göre yapılmalıdır.
- Avrupa (Frankfurt, Amsterdam): Avrupa borsaları ve bazı likidite fonları için uygundur.
- ABD'nin doğu kesimi (New York, NJ): New York'taki Coinbase ve ilgili piyasalar için uygundur.
- Asya (Singapur, Tokyo, Hong Kong): Binance Asia, OKX ve Asya pazarları için uygundur.
Eğer ağırlıklı olarak Binance veya Asya borsalarında işlem yapıyorsanız, Singapur veya Tokyo'daki bir VPS daha uygun olacaktır; ABD borsaları için ise New York/New Jersey lokasyonu daha iyi sonuç verecektir.
Bölüm 8 — Alım Satım İçin Önerilen Sunucu Yapılandırmaları
Alım Satım için VPS (Düşük Gecikmeli)
- İşlemci: 2-4 yüksek frekanslı sanal işlemci
- RAM: 4-8 GB
- Depolama: NVMe SSD 50-100 GB
- Ağ: düşük gecikme süresi/1 Gbps, gerekirse BGP/Anycast
Yoğun işlem gücü/geriye dönük test sunucusu
- İşlemci: 8+ sanal işlemci
- RAM: 32+ GB
- Depolama: NVMe 1TB
- GPU: Modellerin işlenmesi için makine öğrenimi/yapay zekâ gerekiyorsa
Ayrıca, hizmet istikrarını ve güvenliğini artırmak için DDoS saldırılarına karşı koruma, özel ağ oluşturma ve güvenlik duvarı yönetimi gibi güvenlik özelliklerini kullanın.
Bölüm 9 — Otomasyonlu alım satım işlemlerinde riski azaltmaya yönelik pratik ipuçları
- Zarar Durdurma ve Maksimum Maruz Kalma: Her emir için bir stop loss ve maksimum pozisyon miktarı belirleyin.
- API Hesap Durumu: Kısıtlamaları ve KYC durumunu kontrol edin.
- Devre kesici: Hata oranları artarsa veya gecikme süresi önemli ölçüde yükselirse botu durdurun.
- Sağlık takibi: Çalışma süresini, gecikmeyi ve dolum durumunu izleyin ve destek ekibi için uyarılar ayarlayın.
Çözüm
Bu kılavuz, Pine Script (sürüm 5) ile göstergeler ve stratejiler yazmaktan, TradingView'de webhook alarmları oluşturmaya, Flask/ccxt ile güvenli bir webhook sunucusu kurmaya, önemli güvenlik hususlarına, veri merkezi konumunu seçmeye ve önerilen sunucu yapılandırmalarına kadar ana adımları kapsamaktadır.
Düşük gecikmeli VPS, DDoS saldırılarına karşı korumalı sunucular veya yoğun işlem gerektiren grafik sunucu hizmetleri gibi altyapı çözümlerine ihtiyacınız varsa, şirketimiz 85'ten fazla küresel lokasyonda bu olanakları sunmakta ve altyapınızı kurup optimize edebilmektedir.









