ดึงราคาหุ้นปัจจุบัน:เช่น ปตท. (PTT) หรือหุ้นยอดนิยมใน SET ถ้าราคาต่ำกว่าค่าเฉลี่ย 5 วัน ให้แจ้งเตือน
การดึงข้อมูลย้อนหลัง: ใช้ ticker.history(period="10d") เพื่อเอาตารางราคาปิด (Close) ย้อนหลังมาคำนวณ
สาเหตุที่เราต้องใช้ period="10d" (ดึงข้อมูลย้อนหลัง 10 วัน) ทั้งที่ต้องการหาค่าเฉลี่ยแค่ 5 วัน เป็นเพราะ "วันทำการของตลาดหุ้น"
การคำนวณ MA5: * ใช้ .iloc[-6:-1] คือการเอาข้อมูล 5 วันย้อนหลัง โดยไม่นับรวมราคาของวันนี้
สมมติว่าวันนี้คือ วันจันทร์ที่ 22 ธันวาคม และคุณดึงข้อมูลมา 10 วัน (Trading Days)
ตารางสมมติข้อมูลหุ้น (Index)ตำแหน่ง
(Index)วันที่ (Date)ราคาปิด (Close)คำอธิบาย
[-10] 8 Dec 34.00
[-9] 9 Dec 34.25
[-8] 11 Dec 34.50
[-7] 12 Dec 34.75
[-6] 15 Dec 35.00 เริ่มดึงจากตรงนี้ (จุดเริ่มต้น)
[-5] 16 Dec 35.25
[-4] 17 Dec 35.50
[-3] 18 Dec 35.75
[-2] 19 Dec 36.00 สิ้นสุดตรงนี้
[-1] 22 Dec 32.00
(ราคาปัจจุบัน/วันนี้) - ไม่เอา
เพื่อให้ค่าเฉลี่ย เป็นตัวเปรียบเทียบที่นิ่ง ใช้ .mean() เพื่อหาค่าเฉลี่ยเลขคณิต
mean() จึงเป็น Method ของ Pandas DataFrame (ไม่ใช่ของ yfinance โดยตรง)
yfinance มีหน้าที่แค่ "ส่งมอบ" ตารางข้อมูลให้คุณ ส่วน mean() คือ "เครื่องมือ" ที่ติดมากับตารางนั้นเพื่อใช้คำนวณครับ
เงื่อนไขการแจ้งเตือน (If Statement): * ถ้า current_price < ma5_value ให้แสดงข้อความเตือน
### full code
#pip install yfinance
#pip show yfinance
import yfinance as yf
import time
# 1. กำหนดชื่อหุ้น
ticker_symbol = "PTT.BK"
stock = yf.Ticker(ticker_symbol)
def get_ma5(ticker):
# ดึงข้อมูลย้อนหลัง 10 วันเพื่อให้มั่นใจว่ามีข้อมูลพอคำนวณ MA5 (เผื่อวันหยุด)
hist = ticker.history(period="10d")
# คำนวณค่าเฉลี่ย 5 วันล่าสุด (ไม่รวมราคา Real-time ของวันนี้)
ma5 = hist['Close'].iloc[-6:-1].mean()
return ma5
print(f"--- เริ่มต้นระบบติดตามราคา {ticker_symbol} ---")
ma5_value = get_ma5(stock)
print(f"ค่าเฉลี่ย 5 วันก่อนหน้า (MA5): {ma5_value:.2f} บาท")
while True:
try:
# ดึงราคาล่าสุด
current_price = stock.fast_info['last_price']
# ตรวจสอบเงื่อนไข
if current_price < ma5_value:
status = "⚠️ ต่ำกว่าค่าเฉลี่ย!"
else:
status = "✅ ปกติ"
print(f"ราคาปัจจุบัน: {current_price:.2f} | MA5: {ma5_value:.2f} | สถานะ: {status}")
except Exception as e:
print(f"เกิดข้อผิดพลาด: {e}")
time.sleep(10) # พัก 10 วินาที (แนะนำให้ไม่ถี่เกินไปเพื่อป้องกันการโดน Block)
--------------------------------------------------------
-----------------------------------------------------------------
สำหรับปก YouTube:16:9
Main Title: "Python for Stock Tracking"
Sub Title: "Real-time PTT.BK Price Alert"
Keywords: yfinance, VS Code, Simple Moving Average (MA),History 5 days
Tags: "Python for Stock Tracking","Real-time PTT.BK Price Alert",yfinance, VS Code, Simple Moving Average (MA),History 5 days
Link :

ความคิดเห็น
แสดงความคิดเห็น