Toplam Varlık (TL)
100.000,00 ₺
0.00 ₺ (0.00%)
Nakit TL
100.000,00 ₺
GLDTR.IS (Altın ETF)
0 adet
0,00 ₺
GMSTR.IS (Gümüş ETF)
0 adet
0,00 ₺
CANLI VERİ
GLDTR (Altın ETF)
0.00 ₺
+0.00%
GMSTR (Gümüş ETF)
0.00 ₺
+0.00%
USD/TRY Kuru
0.00 ₺
+0.00%
ONS Altın (XAU/USD)
$0.00
+0.00%
[SİSTEM] Robot simülatörü başlatıldı.
[SİSTEM] Fiyat dalgalanması simülasyonu aktif.
Henüz gerçekleşen alım-satım işlemi yok.
Enpara resmi API sunmadığı için kendi bilgisayarınızda arka planda otomatik alım-satım yapmak isterseniz tarayıcı otomasyonu kullanabilirsiniz. Aşağıdaki script Playwright kütüphanesini kullanır ve tarayıcıyı "görünür (non-headless)" modda açar. Bu sayede SMS 2FA doğrulamasını kendiniz elle yapar, ardından robotun otomatik tarama yapıp hisse/ETF alım satım paneline emir girmesini sağlarsınız.
Nasıl Çalıştırılır? Proje dizininde
npm install playwright komutuyla kütüphaneyi kurun ve bu kodu bot.js olarak kaydedip node bot.js ile çalıştırın.
import { chromium } from 'playwright';
// Robot Alım/Satım Parametreleri
const TARGET_ASSET = 'GLDTR'; // Alım-satım yapılacak fon (GLDTR veya GMSTR)
const BUY_THRESHOLD_PCT = 0.2; // Zirveden % kaç düşünce alınacak
const SELL_THRESHOLD_PCT = 0.4; // Alıştan % kaç yükselince satılacak
const TRADE_AMOUNT_TRY = 5000; // Her alımda kullanılacak TL miktarı
async function startEnparaBot() {
console.log('Tarayıcı başlatılıyor...');
const browser = await chromium.launch({ headless: false }); // Girişte SMS doğrulaması için non-headless açıyoruz!
const context = await browser.newContext();
const page = await context.newPage();
// Enpara Yatırım Sayfasına Git
console.log('Enpara Yatırım giriş sayfasına yönlendiriliyor...');
await page.goto('https://enpara.qnbinvest.com.tr/');
console.log('Lütfen banka kullanıcı bilgilerinizi ve telefonunuza gelen SMS 2FA kodunu girerek oturum açın.');
// Kullanıcının oturum açmasını bekle (Portföy sayfasının yüklendiğini teyit et)
await page.waitForSelector('.portfolio-value-container', { timeout: 600000 }); // 10 dakika bekler
console.log('Giriş başarılı! Otomatik trading botu aktif.');
let peakPrice = null;
let lastBuyPrice = null;
let ownedQuantity = 0;
// Takip ve Alım Satım Döngüsü
setInterval(async () => {
try {
// 1. Canlı ETF Fiyatını Al (Ekrandan veya API'den kazı)
await page.goto(`https://enpara.qnbinvest.com.tr/hisse-detay/${TARGET_ASSET}`);
const priceText = await page.locator('.stock-current-price').innerText();
const currentPrice = parseFloat(priceText.replace(',', '.'));
console.log(`[TAKİP] ${TARGET_ASSET} Mevcut Fiyat: ${currentPrice} TRY`);
if (peakPrice === null || currentPrice > peakPrice) {
peakPrice = currentPrice;
console.log(`[TAKİP] Yeni Zirve Fiyat Kaydedildi: ${peakPrice} TRY`);
}
// 2. Alım Kararı
if (ownedQuantity === 0 && currentPrice <= peakPrice * (1 - BUY_THRESHOLD_PCT / 100)) {
console.log(`[ALIM KOŞULU] Fiyat düştü! Alım emri giriliyor. Fiyat: ${currentPrice} TRY`);
// Emir Verme Sayfasına Git & Giriş yap
await page.click('#buy-order-tab');
await page.fill('#order-amount-input', TRADE_AMOUNT_TRY.toString());
await page.click('#submit-buy-order-btn');
await page.click('#confirm-order-btn'); // Onayla
lastBuyPrice = currentPrice;
ownedQuantity = TRADE_AMOUNT_TRY / currentPrice;
peakPrice = currentPrice; // Zirveyi güncelle
console.log(`[ALIM TAMAMLANDI] Alınan Adet: ${ownedQuantity}, Alış Fiyatı: ${lastBuyPrice} TRY`);
}
// 3. Satım Kararı
if (ownedQuantity > 0 && currentPrice >= lastBuyPrice * (1 + SELL_THRESHOLD_PCT / 100)) {
console.log(`[SATIM KOŞULU] Kar hedefine ulaşıldı! Satış emri giriliyor. Fiyat: ${currentPrice} TRY`);
await page.click('#sell-order-tab');
await page.fill('#order-quantity-input', ownedQuantity.toFixed(4));
await page.click('#submit-sell-order-btn');
await page.click('#confirm-order-btn'); // Onayla
console.log(`[SATIM TAMAMLANDI] ${ownedQuantity} adet ${TARGET_ASSET} satıldı. Fiyat: ${currentPrice} TRY`);
ownedQuantity = 0;
lastBuyPrice = null;
peakPrice = currentPrice;
}
} catch (err) {
console.error('Döngü hatası:', err.message);
}
}, 10000); // 10 saniyede bir kontrol et
}
startEnparaBot();