{"id":30,"date":"2026-02-18T23:54:22","date_gmt":"2026-02-18T20:54:22","guid":{"rendered":"https:\/\/piyasaozet.com\/?page_id=30"},"modified":"2026-02-18T23:54:22","modified_gmt":"2026-02-18T20:54:22","slug":"canli-veri-2","status":"publish","type":"page","link":"https:\/\/piyasaozet.com\/","title":{"rendered":"-Canl\u0131 Veri-"},"content":{"rendered":"    <style>\n        :root {\n            --bg-dark: #0b0e11;\n            --card-bg: #161b22;\n            --text-main: #e6edf3;\n            --accent-blue: #2962ff;\n            --border: rgba(255, 255, 255, 0.1);\n            --danger: #f85149;\n            --success: #2eb67d;\n        }\n        body, #page, .site-content { background-color: var(--bg-dark) !important; color: var(--text-main); }\n        .dashboard-container { background: var(--bg-dark); padding: 20px; font-family: 'Inter', sans-serif; min-height: 100vh; max-width: 1440px; margin: 0 auto; }\n        .main-layout { display: grid; grid-template-columns: 2.2fr 1.2fr; gap: 20px; margin-bottom: 20px; }\n        @media (max-width: 1024px) { .main-layout { grid-template-columns: 1fr; } }\n        .chart-box { height: 600px; background: var(--card-bg); border-radius: 12px; border: 1px solid var(--border); overflow: hidden; }\n        .calc-box { background: var(--card-bg); border-radius: 12px; border: 1px solid var(--border); padding: 20px; }\n        .calc-row {\n            display: grid; grid-template-columns: 1.5fr 1fr 1fr; gap: 10px;\n            margin-bottom: 12px; align-items: center; border-bottom: 1px solid rgba(255,255,255,0.05); padding-bottom: 8px;\n        }\n        .calc-row label { font-size: 0.8rem; color: #8b949e; font-weight: bold; }\n        .calc-row input {\n            background: #0d1117; border: 1px solid #30363d; border-radius: 6px;\n            padding: 8px 10px; color: white; outline: none; font-size: 0.9rem; width: 100%;\n        }\n        .calc-row input:focus { border-color: var(--accent-blue); }\n        .result-card {\n            background: linear-gradient(135deg, #1e222d 0%, #0d1117 100%);\n            border: 2px solid var(--accent-blue); border-radius: 12px; padding: 15px; text-align: center; margin-top: 15px;\n        }\n        .result-val { font-size: 2rem; font-weight: 800; color: white; }\n        .tool-card { background: var(--card-bg); border-radius: 12px; border: 1px solid var(--border); padding: 25px; margin-top: 10px; }\n        .alarm-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-bottom: 20px; }\n        .btn-action { background: var(--accent-blue); color: white; border: none; padding: 12px; border-radius: 8px; font-weight: bold; cursor: pointer; transition: 0.2s; }\n        .alarm-table { width: 100%; border-collapse: collapse; margin-top: 15px; }\n        .alarm-table th { text-align: left; padding: 12px; color: #8b949e; border-bottom: 1px solid var(--border); font-size: 0.85rem; }\n        .alarm-table td { padding: 12px; border-bottom: 1px solid rgba(255,255,255,0.05); font-size: 0.9rem; }\n        .btn-delete { color: var(--danger); background: none; border: 1px solid var(--danger); padding: 4px 8px; border-radius: 4px; cursor: pointer; }\n    <\/style>\n\n    <div class=\"dashboard-container\">\n        <div style=\"margin-bottom: 15px;\">\n            <script type=\"text\/javascript\" src=\"https:\/\/s3.tradingview.com\/external-embedding\/embed-widget-ticker-tape.js\" async>\n            { \"symbols\": [\n                {\"proName\": \"FX_IDC:XAUTRYG\", \"title\": \"Gram Alt\u0131n\"},\n                {\"proName\": \"FX_IDC:XAGTRYG\", \"title\": \"Gram G\u00fcm\u00fc\u015f\"},\n                {\"proName\": \"FX:USDTRY\", \"title\": \"Dolar\/TL\"},\n                {\"proName\": \"BINANCE:BTCUSDT\", \"title\": \"Bitcoin\"},\n                {\"proName\": \"BINANCE:ETHUSDT\", \"title\": \"Ethereum\"}\n            ], \"colorTheme\": \"dark\", \"isTransparent\": true, \"displayMode\": \"adaptive\", \"locale\": \"tr\" }\n            <\/script>\n        <\/div>\n\n        <div class=\"main-layout\">\n            <div class=\"chart-box\">\n                <script type=\"text\/javascript\" src=\"https:\/\/s3.tradingview.com\/external-embedding\/embed-widget-symbol-overview.js\" async>\n                { \"symbols\": [\n                    [\"Gram Alt\u0131n\",\"FX_IDC:XAUTRYG|1D\"], [\"Gram G\u00fcm\u00fc\u015f\",\"FX_IDC:XAGTRYG|1D\"],\n                    [\"Bitcoin\",\"BINANCE:BTCUSDT|1D\"], [\"Dolar\/TL\",\"FX:USDTRY|1D\"],\n                    [\"Euro\/Dolar\",\"FX:EURUSD|1D\"], [\"Ons G\u00fcm\u00fc\u015f\",\"OANDA:XAGUSD|1D\"]\n                ],\n                  \"chartOnly\": false, \"width\": \"100%\", \"height\": \"100%\", \"locale\": \"tr\", \"colorTheme\": \"dark\", \"isTransparent\": true, \"autosize\": true, \"chartType\": \"area\" }\n                <\/script>\n            <\/div>\n\n            <div class=\"calc-box\">\n                <h3 style=\"margin-top:0;\">\ud83d\udcbc Net Portf\u00f6y\u00fcm<\/h3>\n                <div class=\"calc-row\" style=\"border:none; padding:0;\"><label>Varl\u0131k<\/label><label>Miktar<\/label><label>Birim Fiyat (\u20ba)<\/label><\/div>\n                <div class=\"calc-row\"><span>G. Alt\u0131n<\/span><input type=\"number\" step=\"0.01\" id=\"q_1\" oninput=\"v22Calc()\"><input type=\"number\" step=\"0.01\" id=\"p_1\" oninput=\"v22Calc()\"><\/div>\n                <div class=\"calc-row\"><span>G. G\u00fcm\u00fc\u015f<\/span><input type=\"number\" step=\"0.01\" id=\"q_2\" oninput=\"v22Calc()\"><input type=\"number\" step=\"0.01\" id=\"p_2\" oninput=\"v22Calc()\"><\/div>\n                <div class=\"calc-row\"><span>Dolar ($)<\/span><input type=\"number\" step=\"0.0001\" id=\"q_3\" oninput=\"v22Calc()\"><input type=\"number\" step=\"0.0001\" id=\"p_3\" oninput=\"v22Calc()\"><\/div>\n                <div class=\"calc-row\"><span>Bitcoin<\/span><input type=\"number\" step=\"0.0001\" id=\"q_4\" oninput=\"v22Calc()\"><input type=\"number\" step=\"0.01\" id=\"p_4\" oninput=\"v22Calc()\"><\/div>\n                <div class=\"calc-row\"><span>Ethereum<\/span><input type=\"number\" step=\"0.0001\" id=\"q_5\" oninput=\"v22Calc()\"><input type=\"number\" step=\"0.01\" id=\"p_5\" oninput=\"v22Calc()\"><\/div>\n                <div class=\"result-card\">\n                    <div style=\"font-size: 0.8rem; color: #58a6ff;\">TOPLAM VARLIK<\/div>\n                    <div id=\"v22_total\" class=\"result-val\">0,00 \u20ba<\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"tool-card\">\n            <h3 style=\"margin-top:0;\">\ud83d\udd14 Ki\u015fiye \u00d6zel Fiyat Alarm\u0131 Kur<\/h3>\n            <div class=\"alarm-grid\">\n                <div style=\"display:flex; flex-direction:column; gap:5px;\">\n                    <label style=\"font-size:0.8rem; color:#8b949e;\">Varl\u0131k<\/label>\n                    <select id=\"al_asset\" style=\"padding:12px; background:#0d1117; border:1px solid #30363d; color:white; border-radius:8px;\">\n                        <option value=\"Alt\u0131n\">Gram Alt\u0131n<\/option>\n                        <option value=\"G\u00fcm\u00fc\u015f\">Gram G\u00fcm\u00fc\u015f<\/option>\n                        <option value=\"Bitcoin\">Bitcoin<\/option>\n                        <option value=\"Dolar\">Dolar\/TL<\/option>\n                    <\/select>\n                <\/div>\n                <div style=\"display:flex; flex-direction:column; gap:5px;\">\n                    <label style=\"font-size:0.8rem; color:#8b949e;\">Hedef Fiyat (\u20ba)<\/label>\n                    <input type=\"number\" step=\"0.01\" id=\"al_price\" placeholder=\"\u00d6rn: 7100\" style=\"padding:12px; background:#0d1117; border:1px solid #30363d; color:white; border-radius:8px;\">\n                <\/div>\n                <div style=\"display:flex; flex-direction:column; gap:5px;\">\n                    <label style=\"font-size:0.8rem; color:#8b949e;\">E-posta<\/label>\n                    <input type=\"email\" id=\"al_mail\" placeholder=\"mail@adresiniz.com\" style=\"padding:12px; background:#0d1117; border:1px solid #30363d; color:white; border-radius:8px;\">\n                <\/div>\n                <div style=\"display:flex; align-items:flex-end;\">\n                    <button type=\"button\" class=\"btn-action\" id=\"btnSave\" onclick=\"saveV22()\" style=\"width:100%;\">Alarm\u0131 Aktif Et<\/button>\n                <\/div>\n            <\/div>\n            <table class=\"alarm-table\">\n                <thead><tr><th>Varl\u0131k<\/th><th>Hedef Fiyat<\/th><th>E-posta<\/th><th>\u0130\u015flem<\/th><\/tr><\/thead>\n                <tbody id=\"v22_log\"><\/tbody>\n            <\/table>\n        <\/div>\n    <\/div>\n\n    <script>\n    window.PIYASA_V22 = {\n        ajaxUrl: \"https:\\\/\\\/piyasaozet.com\\\/wp-admin\\\/admin-ajax.php\",\n        nonce: \"bc288b41b8\"    };\n\n    function v22AlarmId(a) {\n        if (a && a.id) return String(a.id);\n        return [a.a, a.p, a.m, a.t || 0].join('|');\n    }\n\n    function v22Calc() {\n        let total = 0;\n        for (let i = 1; i <= 5; i++) {\n            const q = parseFloat(document.getElementById('q_' + i).value) || 0;\n            const p = parseFloat(document.getElementById('p_' + i).value) || 0;\n            total += q * p;\n        }\n        document.getElementById('v22_total').innerText = new Intl.NumberFormat('tr-TR', { style: 'currency', currency: 'TRY' }).format(total);\n\n        const data = {};\n        for (let i = 1; i <= 5; i++) {\n            data['q' + i] = document.getElementById('q_' + i).value;\n            data['p' + i] = document.getElementById('p_' + i).value;\n        }\n        localStorage.setItem('v22_calc', JSON.stringify(data));\n    }\n\n    async function v22FetchPrices() {\n        const cgRes = await fetch('https:\/\/api.coingecko.com\/api\/v3\/simple\/price?ids=bitcoin,ethereum,gram-gold,gram-silver&vs_currencies=try');\n        const cgData = await cgRes.json();\n\n        const tcmbRes = await fetch('https:\/\/www.tcmb.gov.tr\/kurlar\/today.xml');\n        const tcmbText = await tcmbRes.text();\n        const parser = new DOMParser();\n        const xml = parser.parseFromString(tcmbText, 'text\/xml');\n        const usdNode = xml.querySelector('Currency[CurrencyCode=\"USD\"] ForexSelling');\n        const dolar = usdNode ? parseFloat(usdNode.textContent) : 0;\n\n        return {\n            Alt\u0131n: cgData['gram-gold']?.try || 0,\n            G\u00fcm\u00fc\u015f: cgData['gram-silver']?.try || 0,\n            Bitcoin: cgData.bitcoin?.try || 0,\n            Ethereum: cgData.ethereum?.try || 0,\n            Dolar: dolar\n        };\n    }\n\n    async function updateLivePrices() {\n        try {\n            const cgRes = await fetch('https:\/\/api.coingecko.com\/api\/v3\/simple\/price?ids=bitcoin,ethereum,gram-gold,gram-silver&vs_currencies=try');\n            const cgData = await cgRes.json();\n            document.getElementById('p_1').value = cgData['gram-gold']?.try?.toFixed(2) || '';\n            document.getElementById('p_2').value = cgData['gram-silver']?.try?.toFixed(2) || '';\n            document.getElementById('p_4').value = cgData.bitcoin?.try?.toFixed(2) || '';\n            document.getElementById('p_5').value = cgData.ethereum?.try?.toFixed(2) || '';\n\n            const tcmbRes = await fetch('https:\/\/www.tcmb.gov.tr\/kurlar\/today.xml');\n            const tcmbText = await tcmbRes.text();\n            const parser = new DOMParser();\n            const xml = parser.parseFromString(tcmbText, 'text\/xml');\n            const usdNode = xml.querySelector('Currency[CurrencyCode=\"USD\"] ForexSelling');\n            if (usdNode) {\n                document.getElementById('p_3').value = parseFloat(usdNode.textContent).toFixed(4);\n            }\n            v22Calc();\n        } catch (e) {\n            console.warn('Canl\u0131 fiyat al\u0131namad\u0131:', e);\n        }\n    }\n\n    async function v22SendAlarmMail(alarm, current) {\n        const body = new URLSearchParams();\n        body.append('action', 'send_v21_alarm_mail');\n        body.append('nonce', window.PIYASA_V22.nonce);\n        body.append('current', String(current));\n        body.append('info[a]', alarm.a);\n        body.append('info[p]', String(alarm.p));\n        body.append('info[m]', alarm.m);\n        body.append('info[t]', String(alarm.t || 0));\n        if (alarm.id) body.append('info[id]', String(alarm.id));\n\n        const res = await fetch(window.PIYASA_V22.ajaxUrl, {\n            method: 'POST',\n            headers: { 'Content-Type': 'application\/x-www-form-urlencoded; charset=UTF-8' },\n            credentials: 'same-origin',\n            body\n        });\n\n        let data = null;\n        try { data = await res.json(); } catch (e) { return false; }\n        return !!(data && data.success);\n    }\n\n    function loadV22() {\n        try {\n            const raw = localStorage.getItem('v22_calc');\n            if (raw) {\n                const saved = JSON.parse(raw);\n                if (saved && typeof saved === 'object') {\n                    for (let i = 1; i <= 5; i++) {\n                        document.getElementById('q_' + i).value = saved['q' + i] || '';\n                        document.getElementById('p_' + i).value = saved['p' + i] || '';\n                    }\n                    v22Calc();\n                }\n            }\n        } catch (e) {}\n\n        void updateLivePrices();\n\n        let alarms = [];\n        try { alarms = JSON.parse(localStorage.getItem('v22_alarms') || '[]'); } catch (e) { alarms = []; }\n        let html = '';\n        if (alarms.length > 0) {\n            alarms.forEach(function (item, index) {\n                html += '<tr>' +\n                    '<td><strong>' + item.a + '<\/strong><\/td>' +\n                    '<td>' + parseFloat(item.p).toLocaleString('tr-TR') + ' \u20ba<\/td>' +\n                    '<td>' + item.m + '<\/td>' +\n                    '<td><button type=\"button\" class=\"btn-delete\" onclick=\"deleteV22(' + index + ')\">Sil<\/button><\/td>' +\n                    '<\/tr>';\n            });\n        } else {\n            html = '<tr><td colspan=\"4\" style=\"text-align:center;\">Hen\u00fcz alarm kurulmad\u0131 (sadece bu taray\u0131c\u0131da g\u00f6r\u00fcn\u00fcr).<\/td><\/tr>';\n        }\n        document.getElementById('v22_log').innerHTML = html;\n    }\n\n    function saveV22() {\n        const asset = document.getElementById('al_asset').value;\n        const price = parseFloat(document.getElementById('al_price').value);\n        const mail = document.getElementById('al_mail').value.trim();\n        if (!asset || isNaN(price) || price <= 0 || !mail) {\n            alert('T\u00fcm alanlar\u0131 doldurun!');\n            return;\n        }\n\n        let alarms = [];\n        try { alarms = JSON.parse(localStorage.getItem('v22_alarms') || '[]'); } catch (e) { alarms = []; }\n\n        const id = (crypto && crypto.randomUUID) ? crypto.randomUUID() : ('id_' + Date.now() + '_' + Math.random().toString(16).slice(2));\n        alarms.push({ id: id, a: asset, p: price, m: mail, t: Date.now() });\n        localStorage.setItem('v22_alarms', JSON.stringify(alarms));\n\n        document.getElementById('al_price').value = '';\n        document.getElementById('al_mail').value = '';\n        loadV22();\n        alert('Alarm kuruldu! Sadece bu taray\u0131c\u0131da g\u00f6r\u00fcnecek.');\n    }\n\n    function deleteV22(index) {\n        let alarms = [];\n        try { alarms = JSON.parse(localStorage.getItem('v22_alarms') || '[]'); } catch (e) { alarms = []; }\n        alarms.splice(index, 1);\n        localStorage.setItem('v22_alarms', JSON.stringify(alarms));\n        loadV22();\n    }\n\n    async function checkAlarmsAndNotify() {\n        let alarms = [];\n        try { alarms = JSON.parse(localStorage.getItem('v22_alarms') || '[]'); } catch (e) { alarms = []; }\n        if (!alarms.length) return;\n\n        let prices;\n        try {\n            prices = await v22FetchPrices();\n        } catch (e) {\n            console.warn('Alarm kontrol: fiyat al\u0131namad\u0131', e);\n            return;\n        }\n\n        const triggered = [];\n        for (let i = 0; i < alarms.length; i++) {\n            const alarm = alarms[i];\n            const current = prices[alarm.a] || 0;\n            if (current > 0 && current >= alarm.p) {\n                triggered.push({ alarm: alarm, current: current });\n            }\n        }\n\n        if (!triggered.length) return;\n\n        const idsToRemove = new Set();\n\n        for (let j = 0; j < triggered.length; j++) {\n            const alarm = triggered[j].alarm;\n            const current = triggered[j].current;\n            const ok = await v22SendAlarmMail(alarm, current);\n            if (ok) {\n                idsToRemove.add(v22AlarmId(alarm));\n                alert('Alarm tetiklendi: ' + alarm.a + ' \u2014 g\u00fcncel ' + current.toLocaleString('tr-TR', { maximumFractionDigits: 2 }) + ' \u20ba');\n            }\n        }\n\n        let next = alarms.filter(function (a) {\n            return !idsToRemove.has(v22AlarmId(a));\n        });\n        localStorage.setItem('v22_alarms', JSON.stringify(next));\n        loadV22();\n    }\n\n    window.addEventListener('load', function () {\n        loadV22();\n        setInterval(updateLivePrices, 60000);\n        setInterval(checkAlarmsAndNotify, 300000);\n        checkAlarmsAndNotify();\n    });\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-30","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/piyasaozet.com\/index.php?rest_route=\/wp\/v2\/pages\/30","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piyasaozet.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/piyasaozet.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/piyasaozet.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piyasaozet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=30"}],"version-history":[{"count":1,"href":"https:\/\/piyasaozet.com\/index.php?rest_route=\/wp\/v2\/pages\/30\/revisions"}],"predecessor-version":[{"id":31,"href":"https:\/\/piyasaozet.com\/index.php?rest_route=\/wp\/v2\/pages\/30\/revisions\/31"}],"wp:attachment":[{"href":"https:\/\/piyasaozet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=30"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}