ทำความรู้จักกับระบบที่เราจะสร้างกัน

ก่อนอื่นเลย เรามาทำความเข้าใจกันก่อนว่าเรากำลังจะสร้างอะไร ลองนึกภาพว่าเรากำลังสร้าง "โกดังเก็บข้อมูล" ขนาดใหญ่สำหรับเก็บข้อมูลราคาคริปโตเคอเรนซีทุกตัว ไม่ว่าจะเป็น Bitcoin, Ethereum, Solana หรือเหรียญอื่นๆ อีกนับพันตัว ระบบนี้จะช่วยให้เราสามารถวิเคราะห์แนวโน้มราคา หาโอกาสในการลงทุน และติดตามพอร์ตโฟลิโอได้อย่างมีประสิทธิภาพ

ClickHouse คือ "ฐานข้อมูลแบบพิเศษ" ที่ออกแบบมาเพื่อจัดการกับข้อมูลจำนวนมากได้อย่างรวดเร็ว ต่างจากฐานข้อมูลทั่วไปที่อาจใช้เวลานานในการค้นหา ClickHouse สามารถประมวลผลข้อมูลหลายล้านแถวได้ในเวลาไม่ถึงวินาที นี่คือเหตุผลว่าทำไมบริษัทใหญ่ๆ อย่าง Cloudflare, Spotify และ Binance ถึงใช้งานมัน

เหมาะกับใคร / ไม่เหมาะกับใคร

✅ เหมาะกับใคร❌ ไม่เหมาะกับใคร
นักลงทุนคริปโตที่ต้องการวิเคราะห์ข้อมูลเชิงลึก ผู้ที่ต้องการแค่ดูราคาปัจจุบันเท่านั้น
นักพัฒนาที่ต้องการสร้างระบบ Trading Bot ผู้ที่ไม่มีพื้นฐานการใช้งานคอมพิวเตอร์เลย
ทีมที่ต้องการเก็บข้อมูลย้อนหลังหลายปี ผู้ที่มีงบประมาณจำกัดมากๆ และต้องการโซลูชันฟรี100%
ผู้ที่ต้องการทำรายงานและ Dashboard สำหรับมืออาชีพ ผู้ที่ต้องการลงทุนแบบรายวันโดยไม่ศึกษาข้อมูล
นักวิเคราะห์ข้อมูลที่ต้องการ Query ข้อมูลแบบซับซ้อน ผู้ที่ไม่มีเวลาศึกษาและดูแลระบบ

ราคาและ ROI

การสร้างระบบ Data Warehouse สำหรับคริปโตนั้น มีตัวเลือกหลายแบบ ขึ้นอยู่กับความต้องการและงบประมาณของคุณ

โซลูชันค่าใช้จ่ายต่อเดือน (โดยประมาณ)ความเร็วความยากในการตั้งค่า
Self-hosted ClickHouse บน VPS $10 - $50 รวดเร็วมาก สูง (ต้องการความรู้ด้าน Server)
ClickHouse Cloud (Official) $40 - $500+ รวดเร็วมาก ต่ำ
สร้าง API เอง + HolySheep AI $5 - $30 น้อยกว่า 50ms ปานกลาง
ซื้อข้อมูลสำเร็จรูปจากผู้ให้บริการ $100 - $1000+ ขึ้นอยู่กับผู้ให้บริการ ต่ำ

ทำไมต้องเลือก HolySheep

สำหรับการสร้างระบบ Data Warehouse สำหรับคริปโตนั้น เราจำเป็นต้องมี API ที่เชื่อถือได้เพื่อดึงข้อมูลราคาและวิเคราะห์แนวโน้ม HolySheep AI เป็นตัวเลือกที่น่าสนใจด้วยเหตุผลหลายประการ:

ขั้นตอนที่ 1: เตรียมเครื่องมือที่จำเป็น

ก่อนจะเริ่มสร้างระบบ เราต้องเตรียมเครื่องมือให้พร้อมก่อน อย่าสั่งซื้อเครื่องมือเยอะแยะตั้งแต่แรก เอาแค่จำเป็นก่อนก็พอ

สิ่งที่ต้องมี:

ขั้นตอนที่ 2: ติดตั้ง Python และ Package ที่จำเป็น

Python เป็นภาษาโปรแกรมที่อ่านง่ายและเข้าใจได้ไม่ยาก เราจะใช้มันในการเขียนโปรแกรมดึงข้อมูลคริปโตและส่งเข้า ClickHouse

วิธีติดตั้ง Python:

ติดตั้ง Package ที่จำเป็น:

เปิด Terminal หรือ Command Prompt แล้วพิมพ์คำสั่งต่อไปนี้ทีละบรรทัด

pip install clickhouse-driver requests pandas schedule

รอสักครู่จนติดตั้งเสร็จ Package เหล่านี้จะช่วยให้เราสามารถ:

ขั้นตอนที่ 3: ติดตั้ง ClickHouse

ClickHouse มีหลายวิธีในการติดตั้ง แต่สำหรับมือใหม่ แนะนำให้ใช้ Docker ซึ่งเป็นวิธีที่ง่ายที่สุด

ดาวน์โหลดและติดตั้ง Docker:

  1. ไปที่ docker.com
  2. ดาวน์โหลด Docker Desktop
  3. ติดตั้งแล้วเปิดโปรแกรม
  4. รอจน Docker ทำงานพร้อม (ไอคอนจะเป็นสีเขียว)

สร้างไฟล์ docker-compose.yml:

สร้างโฟลเดอร์ใหม่ชื่อ crypto-warehouse แล้วสร้างไฟล์ชื่อ docker-compose.yml ภายในโฟลเดอร์ ใส่ข้อความด้านล่างนี้ลงไป:

version: '3.8'

services:
  clickhouse:
    image: clickhouse/clickhouse-server:latest
    container_name: crypto-clickhouse
    ports:
      - "8123:8123"
      - "9000:9000"
    environment:
      CLICKHOUSE_DB: crypto_data
      CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
    volumes:
      - ./data:/var/lib/clickhouse
      - ./logs:/var/log/clickhouse-server
    restart: unless-stopped

รัน ClickHouse:

เปิด Terminal ไปที่โฟลเดอร์ crypto-warehouse แล้วพิมพ์:

docker-compose up -d

รอสัก 1-2 นาที ClickHouse จะเริ่มทำงาน คุณจะสามารถเข้าใช้งานได้ผ่าน:

ขั้นตอนที่ 4: สร้างตารางสำหรับเก็บข้อมูลคริปโต

ตอนนี้ ClickHouse ของเราพร้อมแล้ว ต่อไปเราต้องสร้าง "ตาราง" เพื่อใช้เก็บข้อมูลคริปโต ลองนึกภาพตารางเหมือน Excel ที่มีหลายคอลัมน์

เชื่อมต่อกับ ClickHouse:

สร้างไฟล์ใหม่ชื่อ setup_database.py แล้วใส่โค้ดด้านล่างนี้:

from clickhouse_driver import Client

เชื่อมต่อกับ ClickHouse

client = Client( host='localhost', port=9000, database='crypto_data' )

สร้างตารางสำหรับเก็บข้อมูลราคาคริปโต

create_table_query = """ CREATE TABLE IF NOT EXISTS crypto_prices ( symbol String, name String, price Float64, volume_24h Float64, market_cap Float64, price_change_24h Float64, timestamp DateTime ) ENGINE = MergeTree() ORDER BY (symbol, timestamp) PARTITION BY toYYYYMM(timestamp) """ try: client.execute(create_table_query) print("✅ สร้างตาราง crypto_prices สำเร็จแล้ว!") except Exception as e: print(f"❌ เกิดข้อผิดพลาด: {e}")

รันโค้ดนี้ด้วยคำสั่ง:

python setup_database.py

ถ้าขึ้นข้อความ ✅ สร้างตาราง crypto_prices สำเร็จแล้ว! แสดงว่าทุกอย่างเรียบร้อย

ขั้นตอนที่ 5: ดึงข้อมูลคริปโตและเก็บเข้าฐานข้อมูล

ตอนนี้เรามีตารางพร้อมแล้ว ต่อไปจะเป็นการดึงข้อมูลราคาคริปโตจากแหล่งฟรีแล้วเก็บเข้า ClickHouse กัน

สร้างไฟล์ fetch_crypto.py:

import requests
import time
from clickhouse_driver import Client
from datetime import datetime

เชื่อมต่อกับ ClickHouse

client = Client( host='localhost', port=9000, database='crypto_data' )

ดึงข้อมูลจาก CoinGecko API (ฟรีไม่ต้องมี Key)

def fetch_crypto_prices(): url = "https://api.coingecko.com/api/v3/coins/markets" params = { "vs_currency": "usd", "order": "market_cap_desc", "per_page": 100, "page": 1, "sparkline": "false" } try: response = requests.get(url, params=params) response.raise_for_status() data = response.json() return data except requests.exceptions.RequestException as e: print(f"❌ ดึงข้อมูลไม่สำเร็จ: {e}") return None

บันทึกข้อมูลลง ClickHouse

def save_to_clickhouse(crypto_data): if not crypto_data: return False timestamp = datetime.now() records = [] for coin in crypto_data: record = ( coin.get('symbol', '').upper(), coin.get('name', ''), float(coin.get('current_price', 0)), float(coin.get('total_volume', 0)), float(coin.get('market_cap', 0)), float(coin.get('price_change_percentage_24h', 0)), timestamp ) records.append(record) try: client.execute( 'INSERT INTO crypto_prices VALUES', records ) print(f"✅ บันทึกข้อมูล {len(records)} เหรียญสำเร็จแล้ว!") return True except Exception as e: print(f"❌ บันทึกข้อมูลไม่สำเร็จ: {e}") return False

ทดสอบดึงข้อมูล 1 ครั้ง

if __name__ == "__main__": print("🚀 เริ่มดึงข้อมูลคริปโต...") data = fetch_crypto_prices() if data: save_to_clickhouse(data) print(f"📊 ข้อมูลล่าสุด: {len(data)} เหรียญ") for coin in data[:5]: print(f" {coin['symbol'].upper()}: ${coin['current_price']:,.2f}")

รันโค้ดด้วยคำสั่ง:

python fetch_crypto.py

ถ้าสำเร็จ คุณจะเห็นรายชื่อเหรียญยอดนิยม 5 อันดับแรกพร้อมราคา

ขั้นตอนที่ 6: ตั้งเวลาดึงข้อมูลอัตโนมัติ

แทนที่จะมานั่งรันโค้ดทุกครั้ง เราจะตั้งให้ระบบดึงข้อมูลอัตโนมัติทุกๆ 5 นาที หรือทุกชั่วโมงตามที่ต้องการ

สร้างไฟล์ auto_fetch.py:

import schedule
import time
from fetch_crypto import fetch_crypto_prices, save_to_clickhouse

def job():
    print(f"\n{'='*50}")
    print(f"🕐 {time.strftime('%Y-%m-%d %H:%M:%S')}")
    print("📥 กำลังดึงข้อมูลคริปโต...")
    
    data = fetch_crypto_prices()
    if data:
        save_to_clickhouse(data)
    else:
        print("⚠️ ไม่สามารถดึงข้อมูลได้ จะลองใหม่ในครั้งถัดไป")

ตั้งเวลาให้ทำงานทุก 5 นาที

schedule.every(5).minutes.do(job) print("✅ ระบบดึงข้อมูลอัตโนมัติเริ่มทำงานแล้ว!") print("📌 กด Ctrl+C เพื่อหยุดการทำงาน") print("-" * 50)

วนลูปตลอดไป

while True: schedule.run_pending() time.sleep(1)

รันโค้ดด้วยคำสั่ง:

python auto_fetch.py

ทีนี้ระบบจะดึงข้อมูลใหม่ทุก 5 นาทีโดยอัตโนมัติ แนะนำให้เปิดทิ้งไว้ข้ามคืนเพื่อเก็บข้อมูลย้อนหลัง

ขั้นตอนที่ 7: ใช้ AI วิเคราะห์ข้อมูลคริปโต

นี่คือส่วนที่น่าตื่นเต้น! เราจะนำ HolySheep AI มาช่วยวิเคราะห์ข้อมูลที่เราเก็บไว้ เพื่อหาแนวโน้มและโอกาสในการลงทุน

สร้างไฟล์ ai_analysis.py:

import requests
from clickhouse_driver import Client
from datetime import datetime, timedelta

เชื่อมต่อกับ ClickHouse

client = Client( host='localhost', port=9000, database='crypto_data' )

ดึงข้อมูลย้อนหลัง 24 ชั่วโมง

def get_recent_data(): query = """ SELECT symbol, toDateTime(max(timestamp)) as latest_time, argMax(price, timestamp) as latest_price, argMin(price, timestamp) as lowest_price, round((argMax(price, timestamp) - argMin(price, timestamp)) / argMin(price, timestamp) * 100, 2) as volatility_24h, count() as data_points FROM crypto_prices WHERE timestamp >= now() - INTERVAL 24 HOUR GROUP BY symbol HAVING data_points >= 10 ORDER BY volatility_24h DESC LIMIT 20 """ try: result = client.execute(query) return result except Exception as e: print(f"❌ ดึงข้อมูลไม่สำเร็จ: {e}") return []

ส่งข้อมูลให้ AI วิเคราะห์

def analyze_with_ai(data): # สร้างรายงานข้อมูล report = "รายงานข้อมูลคริปโต 24 ชั่วโมงล่าสุด:\n\n" for row in data: report += f"- {row[0]}: ราคาล่าสุด ${row[2]:,.2f}, ความผันผวน {row[4]}%\n" report += "\n\nโปรดวิเคราะห์ข้อมูลนี้และให้คำแนะนำการลงทุนระยะสั้น" # เรียก HolySheep AI API url = "