ทั้งหมด
{{Object.keys(watchlist).length}}
{{z.label}}
{{countZone(z.key)}}
{{r.label}}
{{countResist(r.key)}}
⚡
Big Move {{bigMoveCount}} ตัว
⚠️ {{priceError}}
กำลังกรอง:
⚡ Big Move
{{zoneList.find(z=>z.key===dashFilter)?.emoji}}
{{zoneList.find(z=>z.key===dashFilter)?.label}}
{{resistList.find(r=>r.key===dashFilter)?.emoji}}
{{resistList.find(r=>r.key===dashFilter)?.label}}
{{Object.keys(filteredWatchlist).length}} ตัว
${{fmtPrice(prices[ticker].price)}}
{{prices[ticker].chg>=0?'▲':'▼'}}
{{prices[ticker].chg>=0?'+':''}}${{fmtPrice(Math.abs(prices[ticker].chg))}}
({{prices[ticker].pct>=0?'+':''}}{{prices[ticker].pct.toFixed(2)}}%)
{{holdingPnL(ticker)>=0?'+':''}}${{fmtPrice(Math.abs(holdingPnL(ticker)))}}
({{holdingPnLPct(ticker)>=0?'+':''}}{{holdingPnLPct(ticker).toFixed(1)}}%)
⚠️ โหลดราคาไม่ได้
── แนวรับ{{(cfg.zone_mode||'manual')==='manual' ? 'ตามกราฟ' : ' % จาก Ref'}} (ช้อนซื้อ) ──
{{z.emoji}} {{z.label}}
{{zoneStatus(ticker,z.key)}}
{{zoneEdit.mode==='pct' ? 'ลง' : '$'}}
%
{{zoneDescFor(ticker,z.key) || z.desc}}
── แนวต้าน{{(cfg.resist_mode||'manual')==='manual' ? 'ตามกราฟ' : ' % จาก Ref'}} (พิจารณาขาย) ──
{{r.emoji}} {{r.label}}
{{cfg[r.key] ? resistStatus(ticker,r.key) : ''}}
{{zoneEdit.mode==='pct' ? 'ขึ้น' : '$'}}
%
{{resistDescFor(ticker,r.key) || r.desc}}
Vol: {{fmtVol(prices[ticker].volume)}}
Cap: {{fmtCap(prices[ticker].mktCap)}}
52W↓ ${{fmtPrice(prices[ticker].lo52)}}
52W↑ ${{fmtPrice(prices[ticker].hi52)}}
Portfolio:
ยังไม่มี Profile
ตั้งชื่อ Profile
มูลค่าพอร์ตรวม
{{fmtThb(totalValue*fxRate)}} ฿
${{fmtPrice(totalValue)}} USD · เรท {{fmtThb(fxRate)}} ฿/$
กำไร/ขาดทุน (จากทุนบาทจริง)
{{totalPnLThb>=0?'+':'−'}}{{fmtThb(Math.abs(totalPnLThb))}} ฿
{{totalPnLThbPct>=0?'+':''}}{{totalPnLThbPct.toFixed(2)}}%
· USD {{totalPnLPct>=0?'+':''}}{{totalPnLPct.toFixed(2)}}%
ทุน (บาทจริง)
{{fmtThb(totalCostThb)}} ฿
💰 กำไรขายแล้ว
{{totalRealizedThb ? (totalRealizedThb>0?'+':'')+fmtThb(totalRealizedThb)+' ฿' : '—'}}
💵 ปันผลสะสม
{{totalDivUsd ? '+'+fmtThb(totalDivThb)+' ฿' : '—'}}
{{r.ticker}} {{portfolioPct(r.ticker).toFixed(1)}}%
⚖️
Holdings
({{portfolioRows.length}} ตัว)
เรียงตาม:
เพิ่ม Holding — บันทึกการซื้อครั้งแรก
💡 กรอก "บาทที่จ่ายจริง" ตามสลิปใน Dime เพื่อให้กำไร/ขาดทุนเป็นบาทแม่นยำ (รวมค่าเรท/spread แล้ว) — เว้นว่างได้ ระบบจะประมาณจากเรทปัจจุบัน
หุ้น *
วันที่ซื้อ
จำนวนหุ้น *
ราคา/หุ้น (USD) *
฿ ที่จ่ายจริง
ทุนรวม: ${{fmtPrice(newHolding.qty*newHolding.price)}}
= {{fmtThb(newHolding.thb || newHolding.qty*newHolding.price*fxRate)}} THB
(ประมาณจากเรทปัจจุบัน {{fmtThb(fxRate)}})
DCA Zone (ซื้อ):
Resistance (ขาย/ลดสัดส่วน):
Custom %:
⛔ Stop Loss % จากต้นทุน
−
%
alert ≤ ${{fmtPrice(newHolding.avg_cost*(1-newHolding.alerts.stop_loss_pct/100))}}
🎯 Take Profit % จากต้นทุน
+
%
alert ≥ ${{fmtPrice(newHolding.avg_cost*(1+newHolding.alerts.take_profit_pct/100))}}
{{r.ticker[0]}}
{{r.ticker}}
{{r.name}}
📋 ยอดรวม — แก้ให้ตรงกับแอป Dime
จำนวนหุ้น
ต้นทุนเฉลี่ย/หุ้น ($)
ทุนรวมจริง (฿)
ทุนรวม: ${{fmtPrice(editHolding.qty*editHolding.avg_cost)}}
= {{fmtThb(editHolding.cost_thb || editHolding.qty*editHolding.avg_cost*fxRate)}} ฿
(≈ เรทปัจจุบัน)
⚠️ ถ้าแก้ยอดรวม ประวัติซื้อขายเดิมจะถูกแทนด้วย "รายการปรับยอด" 1 รายการ —
ถ้าต้องการแก้ทีละไม้ ใช้ 📜 ประวัติ ในการ์ดแทน
⚙️ การแจ้งเตือน
DCA Zone (ซื้อ):
Resistance (ขาย/ลดสัดส่วน):
Custom %:
⛔ Stop Loss % จากต้นทุน
−
%
alert ≤ ${{fmtPrice(editHolding.avg_cost*(1-editHolding.alerts.stop_loss_pct/100))}}
🎯 Take Profit % จากต้นทุน
+
%
alert ≥ ${{fmtPrice(editHolding.avg_cost*(1+editHolding.alerts.take_profit_pct/100))}}
{{r.ticker[0]}}
{{r.ticker}}
↻
{{portfolioPct(r.ticker).toFixed(2)}}%
⚖️
|
{{r.name}}
{{expandedHoldings[r.ticker] ? '▲ ย่อ' : '▼ รายละเอียด · ซื้อขาย · ประวัติ'}}
มูลค่าสินทรัพย์ (บาท)
{{fmtThb(r.totalValue*fxRate)}}
≈ {{fmtPrice(r.totalValue)}} USD
{{r.pnlThb>=0?'↗':'↘'}} {{r.pnlThbPct!=null ? Math.abs(r.pnlThbPct).toFixed(2)+'%' : ''}}
({{r.pnlThb>=0?'+':''}}{{fmtThb(r.pnlThb)}} THB)
USD: {{r.pnl>=0?'+':''}}{{fmtPrice(r.pnl)}} ({{r.pnlPct>=0?'+':''}}{{r.pnlPct.toFixed(2)}}%)
{{loading ? '⏳ กำลังโหลด...' : '— ไม่มีราคา'}}
รอสักครู่
จำนวนหุ้นคงเหลือ
{{r.qty}}
ราคา (USD) และ % เปลี่ยน 1 วัน
{{r.price!=null ? fmtPrice(r.price) : loading ? '...' : '—'}}
{{r.dayPct>=0?'↗':'↘'}} {{Math.abs(r.dayPct).toFixed(2)}}%
ต้นทุนต่อหุ้น (USD)
{{fmtPrice(r.avg_cost)}}
ต้นทุนจริง (บาท)
≈
{{fmtThb(r.costThb)}}
${{fmtPrice(r.totalCost)}} USD
💰 กำไรขายแล้ว (Realized)
{{r.realizedThb>=0?'+':''}}{{fmtThb(r.realizedThb)}} THB
({{r.realizedUsd>=0?'+':''}}${{fmtPrice(r.realizedUsd)}})
💵 ปันผลรับสะสม ({{(r.divs||[]).length}} ครั้ง)
${{fmtPrice(r.divUsd)}}
≈ {{fmtThb(r.divThb)}} ฿
{{txnForm.editId ? '✏️ แก้ไขรายการ' : txnForm.side==='buy' ? '🟢 บันทึกซื้อเพิ่ม' : '🔴 บันทึกขาย'}} — {{r.ticker}}
วันที่
จำนวนหุ้น *
ราคา/หุ้น (USD) *
฿ {{txnForm.side==='buy'?'จ่ายจริง':'ได้รับจริง'}}
${{fmtPrice(txnForm.qty*txnForm.price)}}
= {{fmtThb(txnForm.thb || txnForm.qty*txnForm.price*fxRate)}} THB
(≈ เรทปัจจุบัน)
💵 บันทึกปันผลรับ — {{r.ticker}}
วันที่รับ
ยอดสุทธิ (USD) *
฿ ที่ได้รับ
💡 Dime จ่ายปันผลหุ้น US หลังหัก withholding tax 15% แล้ว — กรอกยอดสุทธิที่เข้าพอร์ต
| วันที่ | ฝั่ง | จำนวน | $/หุ้น | ฿ จริง | |
|---|---|---|---|---|---|
| {{t.date||'—'}} | {{t.adj ? 'ปรับยอด' : t.side==='sell' ? 'ขาย' : 'ซื้อ'}} | {{t.qty}} | {{fmtPrice(t.price)}} | ≈ {{fmtThb(t.thb)}} |
|
| ยังไม่มีรายการ | |||||
💵 ปันผลรับ
| {{dv.date||'—'}} | ${{fmtPrice(dv.usd)}} | {{fmtThb(dv.thb)}} ฿ ≈ {{fmtThb(dv.usd*fxRate)}} ฿ |
|
🔻 Near 52W Low
52W↓ ${{fmtPrice(r.lo52)}}
ห่าง +{{((r.price - r.lo52)/r.lo52*100).toFixed(1)}}%
⛔ SL −{{r.alerts.stop_loss_pct}}%
${{fmtPrice(r.avg_cost*(1-r.alerts.stop_loss_pct/100))}}
⚠️ ถึงแล้ว!
ลงได้อีก {{((r.price - r.avg_cost*(1-r.alerts.stop_loss_pct/100))/r.price*100).toFixed(1)}}%
🎯 TP +{{r.alerts.take_profit_pct}}%
${{fmtPrice(r.avg_cost*(1+r.alerts.take_profit_pct/100))}}
🎉 ถึงแล้ว!
อีก {{((r.avg_cost*(1+r.alerts.take_profit_pct/100) - r.price)/r.price*100).toFixed(1)}}%
Zone:
{{zoneLabel(r.ticker)}}
🔕 ปิดแจ้งเตือน
🔔
{{z.emoji}}
{{rz.emoji}}
⚡
{{r.alerts.big_move_pct}}%
⛔−{{r.alerts.stop_loss_pct}}%
🎯+{{r.alerts.take_profit_pct}}%
🔊
🔻
📅
🔔 ทุกประเภท
📭
ยังไม่มี Holding — กด + เพิ่ม Holding เพื่อเริ่ม
📈 การเติบโตของพอร์ต
{{eqPoints.length}} วัน · ล่าสุด {{eqPoints[eqPoints.length-1].date}}
มูลค่าพอร์ต (฿)
ทุนบาทจริง (฿)
พอร์ต P&L %
QQQM %
⏳ กำลังสะสมข้อมูล — ระบบบันทึกมูลค่าพอร์ตอัตโนมัติทุกวัน (07:55 น.) และทุกครั้งที่เปิด dashboard
กราฟจะแสดงเมื่อมีข้อมูลตั้งแต่ 2 วันขึ้นไป
กราฟจะแสดงเมื่อมีข้อมูลตั้งแต่ 2 วันขึ้นไป
เตือนทุกวันที่
ของเดือน (เตือนซ้ำทุกวันจนบันทึกซื้อครบ)
| หุ้น | ฿/เดือน | เดือนนี้ | |
|---|---|---|---|
| {{t}} | ✓ {{dcaBoughtDate(t).slice(8)}}/{{dcaBoughtDate(t).slice(5,7)}} ⏳ รอซื้อ |
|
|
| รวม | {{fmtThb(dcaPlanTotal)}} ฿ | ||
เพิ่มหุ้นในแผน
฿/เดือน
💡 สถานะ "ซื้อแล้ว" เช็คอัตโนมัติจากรายการซื้อของเดือนนี้ — ซื้อใน Dime แล้วมาบันทึกที่การ์ดหุ้น bot จะหยุดเตือนเอง
📉 Portfolio Drop Alert (%/day)
alert เมื่อ portfolio รวมลง ≥ X% ต่อวัน
⚖️ Rebalance Threshold (%)
alert เมื่อหุ้นตัวใดตัวหนึ่ง ≥ X% ของ portfolio
💼
สร้าง Profile เพื่อบันทึก Portfolio ของแต่ละคน
จัดการ Watchlist
เพิ่มหุ้นใหม่
Ticker *
ชื่อบริษัท *
Ref Price *
แนวรับ:
{{ns.zone_mode==='pct'
? 'คำนวณราคาแนวรับจาก % ที่ตั้ง — แก้ Ref แล้วแนวรับขยับตาม'
: 'ดูแนวรับจากกราฟใน 🔎 Investing / 📊 TradingView แล้วกรอกราคาเอง'}}
🟡 Zone A ลง %
{{ns.ref ? '= $'+fmtPrice(ns.ref*(1-ns.pa/100)) : '—'}}
🟠 Zone B ลง %
{{ns.ref ? '= $'+fmtPrice(ns.ref*(1-ns.pb/100)) : '—'}}
🔴 Zone C ลง %
{{ns.ref ? '= $'+fmtPrice(ns.ref*(1-ns.pc/100)) : '—'}}
🟡 Zone A แนวรับ 1
{{((ns.zone_a/ns.ref-1)*100).toFixed(1)}}% จาก Ref
🟠 Zone B แนวรับ 2
{{((ns.zone_b/ns.ref-1)*100).toFixed(1)}}% จาก Ref
🔴 Zone C แนวรับ 3
{{((ns.zone_c/ns.ref-1)*100).toFixed(1)}}% จาก Ref
🟢 Resist A +15%
💚 Resist B +30%
| Ticker | ชื่อ | Ref | 🟡 Zone A | 🟠 Zone B | 🔴 Zone C | 🟢 Resist A | 💚 Resist B | สถานะ | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ticker}} {{cfg.zone_mode==='pct' ? '📐' : '📊'}} | {{cfg.name}} | ${{fmtPrice(cfg.ref)}} |
${{fmtPrice(cfg.zone_a)}}
{{zoneRefPct(cfg,'zone_a')}}
|
${{fmtPrice(cfg.zone_b)}}
{{zoneRefPct(cfg,'zone_b')}}
|
${{fmtPrice(cfg.zone_c)}}
{{zoneRefPct(cfg,'zone_c')}}
|
{{cfg.resist_a?'$'+fmtPrice(cfg.resist_a):'—'}} | {{cfg.resist_b?'$'+fmtPrice(cfg.resist_b):'—'}} | {{zoneLabel(ticker)}} |
|
{{ticker}} |
−
%
= ${{fmtPrice(ed.ref*(1-(ed.zone_pcts[zk]||0)/100))}}
|
|
🔔 ประวัติการแจ้งเตือน
บันทึกโดย bot ทุกครั้งที่ส่ง alert (เก็บล่าสุด 500 รายการ)
🔕
{{alertLogs.length ? 'ไม่มีรายการในหมวดนี้' : 'ยังไม่มีประวัติ — จะบันทึกอัตโนมัติเมื่อ bot ส่งแจ้งเตือนครั้งถัดไป'}}
🔒
Settings
กรอกรหัสผ่านเพื่อเข้าถึง
รหัสผ่านไม่ถูกต้อง
ตั้งค่า Bot
⚠️
ยังไม่ได้ตั้งค่าช่องทางแจ้งเตือน
ใส่ Discord Webhook URL แล้วกด บันทึก
✈️ Telegram
Bot Token
Chat ID
💡 หา Chat ID:
https://api.telegram.org/bot<TOKEN>/getUpdates
{{testMsg.telegram}}
💬 Discord
Webhook URL
💡 channel → Edit Channel → Integrations → Webhooks → Copy URL
{{testMsg.discord}}
ส่งตัวอย่าง Alert จริงพร้อม embed + chart
{{testMsg.sample}}
⏱️ Timing & Alert
ตรวจราคาทุก (นาที)
แนะนำ 5 นาที
Cooldown (ชั่วโมง)
ไม่ส่งซ้ำภายในเวลานี้
⚡ Big Move Alert (%)
แจ้งเมื่อขึ้น/ลงเกิน % นี้ต่อวัน
💱 เป้าแลก USD (฿/$)
เตือนเมื่อบาทแข็ง ≤ เป้านี้ (เช็คทุก ชม.)
🔐 รหัสผ่าน Dashboard
ใช้ login เข้าเว็บนี้จากทุกอุปกรณ์ — เว้นว่าง = ปิดการล็อกอิน (ไม่แนะนำ เพราะเว็บเปิด public)
⚠️ เปลี่ยนรหัสแล้วทุกอุปกรณ์ต้อง login ใหม่ (รวมเครื่องนี้)
📨 การแจ้งเตือนต่อ Profile
แต่ละ profile สามารถใช้ Discord Webhook / Telegram แยกกันได้ — ว่าง = ใช้ค่า Global ด้านบน
ยังไม่มี Profile —
ก่อน
💼 {{p.name}}
{{Object.keys(p.holdings||{}).length}} holdings:
{{Object.keys(p.holdings||{}).join(', ') || '—'}}
Discord Webhook
Telegram Bot Token
Telegram Chat ID