Trading bot ของคุณทำงานผ่านอินเทอร์เฟซเดียว นั่นคือ exchange API ทุกคำสั่งซื้อ ทุกการตรวจสอบยอดคงเหลือ ทุกการสอบถามตำแหน่ง ล้วนไหลผ่าน API credential ที่คุณสร้างขึ้น หากข้อมูลรับรองเหล่านี้ถูกตั้งค่าผิด ถูกขโมย หรือถูกเข้าใจผิด ผลที่ตามมามีตั้งแต่การเทรดที่ไม่ได้รับอนุญาตไปจนถึงการถูกถ่ายเงินออกจากบัญชีทั้งหมด
คู่มือนี้ก้าวข้ามสุขลักษณะความปลอดภัยขั้นพื้นฐาน ( ครอบคลุมใน คู่มือความปลอดภัยพื้นฐานของเรา ) และเจาะลึกเข้าสู่กรอบความปลอดภัยเชิงปฏิบัติการที่แยกผู้ปฏิบัติงานบอทมืออาชีพออกจากมือสมัครเล่น เราครอบคลุมสถาปัตยกรรมสิทธิ์ การควบคุมการเข้าถึงระดับเครือข่าย การจัดการวงจรชีวิตของข้อมูลรับรอง การจัดการความล้มเหลวของ exchange และคู่มือการตอบสนองต่อเหตุการณ์ฉบับสมบูรณ์
ประเด็นสำคัญ
- API key มีระดับสิทธิ์สี่ระดับ — อ่าน, เทรด spot, เทรด futures และ withdrawal สิทธิ์ withdrawal ต้องไม่ถูกเปิดใช้งานสำหรับการเชื่อมต่อบอทโดยเด็ดขาด
- IP whitelist ทำให้ API key ที่ถูกขโมยไร้ค่า ตั้งค่าบนทุก exchange — Binance, Bybit และ OKX รองรับทั้งหมด
- หมุนเวียน API key ทุก 90 วันด้วยขั้นตอนที่ไม่มี downtime: สร้างคีย์ใหม่ → อัปเดตบอท → ตรวจสอบ → ลบคีย์เก่า
- การแยก subaccount จำกัดรัศมีความเสียหาย: บอทที่ถูกขโมยจะส่งผลกระทบได้เฉพาะเงินทุนของ subaccount นั้น ไม่ใช่พอร์ตโฟลิโอทั้งหมดของคุณ
- เมื่อ exchange ล่มกลางการเทรด คำสั่งซื้อที่เปิดอยู่จะคงอยู่บน order book และบอทต้องทำการกระทบยอดสถานะหลังจากเชื่อมต่อใหม่
- การละเมิด rate limit (Binance: 1,200/นาที, Bybit: 120/5วินาที) ส่งผลให้เกิดการแบน IP ชั่วคราว — บอทต้องจำกัดคำขอในเชิงรุก
ระดับสิทธิ์ของ API Key: หลักการให้สิทธิ์น้อยที่สุด
ทุก exchange รายใหญ่มีระบบสิทธิ์ที่ละเอียดสำหรับ API key หลักการนั้นง่ายมาก: ให้สิทธิ์ที่บอทต้องการอย่างแม่นยำเท่านั้น ไม่ให้มากไปกว่านั้น นี่คือสิ่งที่แต่ละระดับควบคุม
สถาปัตยกรรมสิทธิ์
| ระดับสิทธิ์ | อนุญาตให้ทำอะไร | บอทต้องการหรือไม่ | ความเสี่ยงหากถูกขโมย |
|---|---|---|---|
| Read-Only | ดูยอดคงเหลือ ประวัติคำสั่งซื้อ ข้อมูลตลาด | ✅ เสมอ | ต่ำ — ผู้โจมตีเห็นข้อมูลบัญชี |
| Spot Trade | วางและยกเลิกคำสั่ง spot market/limit | ✅ สำหรับบอท spot | ปานกลาง — ผู้โจมตีสามารถทำการเทรดได้ |
| Futures Trade | เปิด/ปิดตำแหน่งที่ใช้ leverage, ตั้งค่า margin | ✅ สำหรับบอท futures | สูง — อาจเกิดความสูญเสียจาก leverage |
| Withdrawal | โอนเงินไปยังกระเป๋าภายนอก | ❌ ไม่เคยเลย | ร้ายแรง — สูญเงินทั้งหมด |
| Internal Transfer | ย้ายเงินระหว่าง subaccount | ⚠️ นานๆ ครั้ง | ปานกลาง — การจัดสรรเงินใหม่ |
ทำไมสิทธิ์ Withdrawal จึงเป็น Kill Switch
เมื่อปิด withdrawal ไว้ สถานการณ์เลวร้ายที่สุดจาก API key ที่ถูกขโมยคือสิ่งนี้: ผู้โจมตีวางคำสั่งเทรดที่ไม่ดี เงินทุนของคุณได้รับความเสียหาย แต่ยังคงอยู่บน exchange คุณสามารถกู้คืนได้
เมื่อเปิด withdrawal ไว้ กรณีเลวร้ายที่สุดคือการสูญเสียทั้งหมด ผู้โจมตีถ่ายเงินจากบัญชีของคุณไปยังกระเป๋าของพวกเขาภายในไม่กี่วินาที ธุรกรรมคริปโตไม่สามารถย้อนกลับได้ ไม่มีการคืนเงิน ไม่มีการกู้คืน
คณิตศาสตร์นั้นชัดเจน สมมติว่าคุณมี $50,000 บน Binance:
- ปิด withdrawal, คีย์ถูกขโมย: ผู้โจมตีวางคำสั่งเทรดแบบไม่แน่นอน ความสูญเสียตามจริง: $2,000–$10,000 จาก slippage และการเติมคำสั่งที่ไม่ดีก่อนที่คุณจะสังเกตเห็นและเพิกถอนคีย์ เงินทุนที่เหลือ: $40,000–$48,000
- เปิด withdrawal, คีย์ถูกขโมย: ผู้โจมตีส่ง $50,000 ไปยังกระเป๋าของพวกเขา เงินทุนที่เหลือ: $0
ไม่มีแพลตฟอร์มบอทที่ถูกต้องตามกฎหมาย — รวมถึง Freya Finance — ที่ต้องการสิทธิ์ withdrawal หากแพลตฟอร์มขอสิทธิ์นี้ แพลตฟอร์มนั้นไม่มีความสามารถหรือไม่ก็มีเจตนาร้าย จงเดินจากไปทันที
การตั้งค่าสิทธิ์เฉพาะของแต่ละ Exchange
Binance: ไปที่ Account → API Management → Create API ภายใต้ "API restrictions" ให้เปิดใช้งานเฉพาะ "Enable Spot & Margin Trading" ปล่อยให้ "Enable Withdrawals" และ "Enable Internal Transfer" ไม่ถูกเลือก สำหรับบอท futures ให้เลือก "Enable Futures" ด้วย
Bybit: ไปที่ Profile → API Management → Create New Key ภายใต้สิทธิ์ ให้เปิดใช้งาน "Read-Write" สำหรับ Spot เท่านั้น (หรือ Derivatives หากจำเป็น) ปุ่มสลับ "Withdraw" ต้องคงอยู่ในสถานะ OFF
OKX: ไปที่ Profile → API Keys → Create API Key ภายใต้ "Permissions" ให้เลือก "Trade" เท่านั้น OKX ต้องการ passphrase เพิ่มเติมสำหรับการยืนยันตัวตน API — เก็บสิ่งนี้ไว้ใน password manager ของคุณพร้อมกับคีย์และ secret
IP Whitelist: การควบคุมการเข้าถึงระดับเครือข่าย
IP whitelist เป็นการป้องกัน API key ที่ถูกขโมยที่มีประสิทธิภาพที่สุดเพียงหนึ่งเดียว แม้ผู้โจมตีจะได้ API key และ secret ของคุณ พวกเขาก็ไม่สามารถใช้ได้ — exchange ปฏิเสธคำขอใดๆ ที่ไม่ได้มาจาก IP address ที่อยู่ใน whitelist
IP Whitelist ทำงานอย่างไร
Your Bot Server (IP: 34.85.123.45) → Exchange API → ✅ Whitelisted → Order Executed
Attacker's Server (IP: 192.168.0.99) → Exchange API → ❌ Not Whitelisted → Request Rejected
Exchange จะรักษารายการอนุญาตของ IP address สำหรับแต่ละ API key คำขอ API ขาเข้าทุกรายการจะมีการตรวจสอบ source IP กับรายการนี้ก่อนที่จะประมวลผลการกระทำใดๆ คำขอจาก IP ที่ไม่ได้อยู่ใน whitelist จะถูกปฏิเสธด้วยข้อผิดพลาดการยืนยันตัวตน ไม่ว่า API key และลายเซ็นจะถูกต้องหรือไม่ก็ตาม
ทำไมจึงต่อรองไม่ได้
หากไม่มี IP whitelist ใครก็ตามที่ได้ข้อมูล API ของคุณสามารถใช้ได้จากที่ใดก็ได้ทั่วโลก ด้วย IP whitelist ผู้โจมตีจะต้องเจาะระบบโครงสร้างพื้นฐานเซิร์ฟเวอร์ของแพลตฟอร์มบอทของคุณเพิ่มเติมด้วย — เป้าหมายที่ยากกว่าอย่างมาก
การตั้งค่าเฉพาะของแต่ละแพลตฟอร์ม
Binance:
- ใน API Management ให้เลือกคีย์ของคุณแล้วคลิก "Edit restrictions"
- ภายใต้ "IP access restrictions" ให้เลือก "Restrict access to trusted IPs only"
- ป้อน IP address แต่ละรายการในบรรทัดแยกกัน (Binance รองรับสูงสุด 30 IP ต่อคีย์)
- บันทึกและดำเนินการยืนยัน 2FA ให้เสร็จสมบูรณ์
- หมายเหตุ: Binance บังคับใช้ความล่าช้าในการแพร่กระจาย 5 นาทีหลังจากการเปลี่ยนแปลง IP whitelist
Bybit:
- ใน API Management ให้แก้ไข API key ของคุณ
- ภายใต้ "IP Access" ให้คลิก "Modify"
- ป้อน IP เซิร์ฟเวอร์ของแพลตฟอร์มของคุณ (Bybit รองรับสูงสุด 20 IP)
- คีย์ที่ไม่มีการจำกัด IP จะหมดอายุอัตโนมัติหลังจาก 90 วันบน Bybit
- ดำเนินการยืนยัน 2FA ให้เสร็จสมบูรณ์เพื่อบันทึก
OKX:
- แก้ไข API key ของคุณในแผง API management
- เพิ่ม IP address ในช่อง "IP Address" (OKX รองรับสูงสุด 20 IP)
- OKX แนะนำอย่างยิ่งให้ทำ whitelist — คีย์ที่ไม่ถูกจำกัดมี rate limit ที่ต่ำกว่า
- บันทึกและยืนยันด้วย 2FA
Freya Finance แสดง IP address ของเซิร์ฟเวอร์ในระหว่างขั้นตอนการเชื่อมต่อ API key คัดลอกค่าเหล่านี้โดยตรงไปยัง IP whitelist ของ exchange ของคุณ หาก IP ของแพลตฟอร์มเปลี่ยนแปลง (เกิดขึ้นได้ยาก โดยทั่วไปในระหว่างการย้ายโครงสร้างพื้นฐาน) คุณจะได้รับการแจ้งเตือนพร้อมที่อยู่ใหม่
ข้อผิดพลาดที่พบบ่อยเกี่ยวกับ IP Whitelist
| ข้อผิดพลาด | ผลที่ตามมา | วิธีแก้ไข |
|---|---|---|
| ใช้ IP บ้านของคุณแทน IP ของเซิร์ฟเวอร์บอท | คีย์ทำงานจากแล็ปท็อปของคุณแต่ไม่ทำงานจากบอท | ใช้ IP เซิร์ฟเวอร์ที่แพลตฟอร์มเผยแพร่ |
ทำ whitelist ให้ 0.0.0.0 หรือช่วงกว้าง | ไม่มีการป้องกันที่แท้จริง — รับทุกแหล่งที่มา | ใช้ IP ที่เฉพาะเจาะจงเท่านั้น |
| ลืมอัปเดตหลังการย้ายแพลตฟอร์ม | บอทหยุดเทรดอย่างเงียบๆ | ตรวจสอบข้อผิดพลาดการเชื่อมต่อ คอย IP ให้เป็นปัจจุบัน |
| เพิ่ม IP ของ VPN ที่หมุนเวียน | ความล้มเหลวเป็นช่วงๆ | ใช้ IP แบบคงที่หรือ IP ของแพลตฟอร์ม |
การหมุนเวียน API Key: วงจรชีวิต 90 วัน
ควรปฏิบัติต่อ API key เหมือนรหัสผ่าน: พวกมันมีอายุการใช้งาน ยิ่งคีย์มีอยู่นานเท่าใด ความน่าจะเป็นที่มันจะถูกเปิดเผยผ่านไฟล์ log, ใบสนับสนุน, ภาพหน้าจอ หรือ memory dump ก็ยิ่งสูงขึ้น ผู้ปฏิบัติงานมืออาชีพหมุนเวียนคีย์ตามตารางเวลาที่กำหนดไว้
ความถี่ในการหมุนเวียนที่แนะนำ
| สถานการณ์ | ความถี่ในการหมุนเวียน |
|---|---|
| การดำเนินงานปกติ | ทุก 90 วัน |
| หลังจากสงสัยว่าถูกขโมย | ทันที |
| หลังเหตุการณ์ความปลอดภัยของแพลตฟอร์ม | ทันที |
| หลังจากเพิกถอนการเข้าถึงจากแพลตฟอร์ม | ทันที |
| หลังจากสมาชิกทีมลาออก | ทันที |
ขั้นตอนการหมุนเวียนแบบไม่มี Downtime
การหมุนเวียนคีย์ไม่ควรทำให้การเทรดหยุดชะงัก ทำตามลำดับนี้:
ขั้นตอนที่ 1: สร้าง API key ใหม่บน exchange สร้างคีย์ใหม่ที่มีสิทธิ์และการตั้งค่า IP whitelist เหมือนกับคีย์เก่า ติดป้ายกำกับด้วยวันที่ปัจจุบัน (เช่น "Freya Bot — May 2026")
ขั้นตอนที่ 2: อัปเดตแพลตฟอร์มบอทของคุณด้วยคีย์ใหม่ ป้อน API key และ secret ใหม่ในการตั้งค่าของแพลตฟอร์มบอทของคุณ แพลตฟอร์มส่วนใหญ่อนุญาตให้อัปเดตข้อมูลรับรองได้โดยไม่ต้องหยุดบอท
ขั้นตอนที่ 3: ตรวจสอบการเชื่อมต่อ ยืนยันว่าคีย์ใหม่ทำงานได้: ตรวจสอบว่าแพลตฟอร์มแสดงการเชื่อมต่อที่สำเร็จ ยอดคงเหลือแสดงอย่างถูกต้อง และการเทรดทดสอบ (หากทำได้) ดำเนินการ
ขั้นตอนที่ 4: ลบคีย์เก่าบน exchange หลังจากตรวจสอบว่าคีย์ใหม่ทำงานได้แล้วเท่านั้น จึงลบคีย์เก่าออกจากหน้า API management ของ exchange ของคุณ
ขั้นตอนที่ 5: บันทึกการหมุนเวียน บันทึกวันที่หมุนเวียน ป้ายกำกับคีย์ใหม่ และการยืนยันการเปลี่ยนที่สำเร็จ
ในช่วงเวลาสั้นๆ ที่ทั้งคีย์เก่าและใหม่มีอยู่ (ขั้นตอนที่ 2–4) ทั้งคู่ใช้งานได้ การทับซ้อนนี้จำเป็นสำหรับการหมุนเวียนแบบไม่มี downtime และปลอดภัยเพราะคีย์เก่าจะถูกลบภายในไม่กี่นาที จงรักษาช่วงเวลานี้ให้สั้นที่สุดเท่าที่จะทำได้
การแยก Subaccount: การจำกัดรัศมีความเสียหาย
Subaccount ของ exchange เป็นบัญชีเทรดแยกต่างหากภายใต้บัญชีหลักของคุณ แต่ละ subaccount มียอดคงเหลือของตัวเอง มี API key ของตัวเอง และมีประวัติการเทรดของตัวเอง พวกมันเทียบเท่ากับ network segmentation ในด้าน cybersecurity บน exchange
ทำไม Subaccount จึงสำคัญ
ลองพิจารณาสถานการณ์นี้: คุณรันบอทสามตัว — บอท BTC DCA, บอท ETH Grid และบอท SOL momentum — ทั้งหมดเชื่อมต่อกับบัญชีหลักของคุณที่มีเงินทุนรวม $30,000
โดยไม่มี subaccount: API key ที่ถูกขโมยหนึ่งคีย์เปิดเผย $30,000 บอทที่ทำงานผิดปกติสามารถถ่ายยอดคงเหลือทั้งหมดผ่านการเทรดที่รวดเร็วและไม่แน่นอน
ด้วย subaccount: แต่ละบอทดำเนินการใน subaccount ของตัวเองด้วย $10,000 คีย์ที่ถูกขโมยเปิดเผยเพียง $10,000 บอทที่ทำงานผิดปกติส่งผลกระทบได้เฉพาะเงินทุนที่จัดสรรให้ อีก $20,000 แตะต้องไม่ได้
การตั้งค่า Subaccount แยกตาม Exchange
| คุณสมบัติ | Binance | Bybit | OKX |
|---|---|---|---|
| Subaccount สูงสุด | 200 (ขึ้นอยู่กับ VIP) | 20 (มาตรฐาน) | 5 (มาตรฐาน), มากกว่าด้วย VIP |
| API Key แยก | ✅ ต่อ subaccount | ✅ ต่อ subaccount | ✅ ต่อ subaccount |
| ยอดคงเหลือแยก | ✅ แยกออก | ✅ แยกออก | ✅ แยกออก |
| Internal Transfer | ✅ ทันที, ฟรี | ✅ ทันที, ฟรี | ✅ ทันที, ฟรี |
| ประวัติการเทรดแยก | ✅ แยกเต็มรูปแบบ | ✅ แยกเต็มรูปแบบ | ✅ แยกเต็มรูปแบบ |
| ต้องทำ KYC | ใช้ KYC ของบัญชีหลัก | ใช้ KYC ของบัญชีหลัก | ใช้ KYC ของบัญชีหลัก |
สถาปัตยกรรม Subaccount ที่แนะนำ
สำหรับพอร์ตโฟลิโอ $30,000 กระจายไปยังบอทสามตัว:
Main Account (Master)
├── Subaccount A: BTC DCA Bot — $10,000
│ └── API Key A (spot trade + read, IP whitelisted)
├── Subaccount B: ETH Grid Bot — $10,000
│ └── API Key B (spot trade + read, IP whitelisted)
├── Subaccount C: SOL Momentum Bot — $10,000
│ └── API Key C (spot trade + read, IP whitelisted)
└── Reserve: $0 (held in main, transferred as needed)
แต่ละ subaccount มี API key ของตัวเอง มี IP whitelist ของตัวเอง และสามารถเข้าถึงได้เฉพาะเงินทุนของตัวเอง คีย์ของบัญชีหลัก — ซึ่งไม่มีสิทธิ์เทรด — จัดการการโอนเงินระหว่าง subaccount ตามที่จำเป็น
เมื่อ Exchange ล่มกลางการเทรด
การหยุดทำงานของ exchange เกิดขึ้นได้ Binance, Bybit และ OKX ล้วนเคยประสบ downtime — บางครั้งวางแผนไว้ (การบำรุงรักษา) บางครั้งไม่ได้วางแผน (การโจมตี DDoS, ความล้มเหลวของโครงสร้างพื้นฐาน, ความผันผวนของตลาดที่รุนแรงทำให้เกิดภาระงานพุ่งสูง) บอทของคุณต้องจัดการสิ่งเหล่านี้อย่างนุ่มนวล
คำสั่งซื้อที่เปิดอยู่ในระหว่างการหยุดทำงาน
คำสั่ง limit ที่เปิดอยู่ที่คุณวางไว้ คงอยู่บน order book ของ exchange แม้เมื่อ API ไม่สามารถเข้าถึงได้ matching engine แยกออกจาก API gateway คำสั่งของคุณสามารถดำเนินการเติมต่อไปได้ในระหว่างที่ API หยุดทำงาน
นี่หมายความว่า: หากคุณมีคำสั่ง limit buy ที่ $99,500 สำหรับ BTC และ API ล่ม คำสั่งนั้นยังคงทำงานอยู่ หาก BTC ลดลงเหลือ $99,500 คุณจะได้รับการเติมแม้ว่าบอทของคุณจะไม่สามารถสื่อสารกับ exchange ได้
การเชื่อมต่อบอทใหม่และการกระทบยอดสถานะ
เมื่อ API กลับมาออนไลน์ บอทที่ออกแบบมาอย่างดีต้องกระทบยอดสถานะภายในของมันกับสถานะจริงของ exchange กระบวนการนี้เกี่ยวข้องกับ:
- สอบถามคำสั่งซื้อที่เปิดอยู่ทั้งหมด — ตรวจสอบว่าคำสั่งใดยังคงทำงานอยู่ คำสั่งใดถูกเติมแล้ว คำสั่งใดถูกเติมบางส่วน และคำสั่งใดถูกยกเลิก
- เปรียบเทียบกับบันทึกภายใน — จับคู่สถานะของ exchange กับสิ่งที่บอทคาดหวัง
- แก้ไขความไม่สอดคล้อง — อัปเดตตำแหน่งภายในตามการเติมจริง
- กลับสู่การดำเนินงานปกติ — ดำเนินการกลยุทธ์ต่อจากสถานะที่กระทบยอดแล้ว
Freya จัดการการกระทบยอดนี้ให้คุณโดยอัตโนมัติ หากการเชื่อมต่อของบอทกับ exchange หลุดแล้วเชื่อมต่อใหม่ Freya จะตรวจสอบตำแหน่งของคุณเทียบกับ exchange อีกครั้ง และแก้ไขความคลาดเคลื่อนใดๆ ที่เกิดขึ้นระหว่างที่ขาดการเชื่อมต่อ เพื่อให้กลยุทธ์ของคุณดำเนินต่อจากสถานะที่ถูกต้อง
การเติมบางส่วน
การเติมบางส่วนเกิดขึ้นเมื่อมีเพียงส่วนหนึ่งของคำสั่งของคุณที่ดำเนินการก่อนการหยุดทำงาน (หรือเนื่องจาก liquidity ไม่เพียงพอ) ตัวอย่าง:
- คุณวางคำสั่ง limit buy สำหรับ 0.5 BTC ที่ $100,000 (คำสั่ง $50,000)
- 0.3 BTC ถูกเติมก่อนที่ API จะหลุดการเชื่อมต่อ ($30,000)
- เมื่อบอทเชื่อมต่อใหม่ มันพบ 0.3 BTC ในตำแหน่งและ 0.2 BTC ที่ยังคงเปิดอยู่
บอทที่แข็งแกร่งจัดการสิ่งนี้โดย:
- รับรู้การเติมบางส่วนและอัปเดตขนาดตำแหน่ง
- ตัดสินใจว่าจะคงคำสั่ง 0.2 BTC ที่เหลือไว้ให้ทำงานอยู่หรือยกเลิก
- ปรับระดับ take-profit และ stop-loss ตามขนาดตำแหน่งจริง (0.3 BTC ไม่ใช่ 0.5 BTC ที่ตั้งใจไว้)
สิ่งที่คุณควรทำในระหว่างที่ Exchange หยุดทำงาน
| สถานการณ์ | การกระทำ |
|---|---|
| ประกาศการบำรุงรักษาตามแผน | หยุดบอทชั่วคราวก่อนช่วงบำรุงรักษา; กลับมาทำงานต่อหลังจากนั้น |
| การหยุดทำงานที่ไม่คาดคิด, ไม่มีตำแหน่งเปิด | รอ — บอทจะเชื่อมต่อใหม่โดยอัตโนมัติ |
| การหยุดทำงานที่ไม่คาดคิด, มีตำแหน่งเปิด | ตรวจสอบหน้าสถานะของ exchange; อย่าตื่นตระหนกเทรดด้วยตนเอง |
| การหยุดทำงานในระหว่างความผันผวนสูง | พิจารณาการแทรกแซงด้วยตนเองผ่านเว็บไซต์ของ exchange (หากเข้าถึงได้) |
| การหยุดทำงานเป็นเวลานาน (>1 ชั่วโมง) | ตรวจสอบตำแหน่งผ่านแอป/เว็บไซต์ของ exchange เมื่อมันกลับมา |
Rate Limiting: การเคารพขอบเขตของ Exchange
Exchange บังคับใช้ rate limit เพื่อปกป้องโครงสร้างพื้นฐานของพวกเขาจากการถูกใช้งานมากเกินไป ทุกการเรียก API — ทุกการวางคำสั่ง ทุกการตรวจสอบยอดคงเหลือ ทุกคำขอข้อมูลตลาด — นับรวมเข้าในงบประมาณ rate limit ของคุณ
Rate Limit ของ Exchange
| Exchange | ขีดจำกัดคำขอ | ช่วงเวลา | บทลงโทษสำหรับการละเมิด |
|---|---|---|---|
| Binance | 1,200 คำขอ | ต่อนาที | แบน IP ชั่วคราว (2–10 นาที) |
| Binance (เฉพาะคำสั่ง) | 10 คำสั่ง/วินาที, 200,000/วัน | ต่อบัญชี | การปฏิเสธคำสั่ง, อาจถูกแบน |
| Bybit | 120 คำขอ | ต่อ 5 วินาที | แบน IP ชั่วคราว |
| OKX | 60 คำขอ/วินาที (แตกต่างกันตาม endpoint) | ต่อวินาที | รหัสสถานะ 429, การจำกัด |
บอทจัดการ Rate Limit อย่างไร
บอทมืออาชีพใช้เทคนิคการจัดการ rate limit หลายอย่าง:
การจัดคิวคำขอ: แทนที่จะยิงการเรียก API ทันที คำขอจะเข้าสู่คิวที่ปล่อยออกมาในอัตราที่ควบคุมได้ สำหรับ Binance นั่นหมายถึงไม่เกิน 20 คำขอต่อวินาที เพื่อให้อยู่ต่ำกว่าขีดจำกัด 1,200/นาทีอย่างปลอดภัย
การจัดงบประมาณตามน้ำหนัก: Exchange บางแห่ง (โดยเฉพาะ Binance) กำหนด "น้ำหนัก" ที่แตกต่างกันให้กับ endpoint ที่แตกต่างกัน การตรวจสอบยอดคงเหลืออย่างง่ายอาจมีต้นทุน 1 น้ำหนัก ในขณะที่การสอบถามประวัติคำสั่งที่ซับซ้อนมีต้นทุน 20 บอทติดตามน้ำหนักสะสมเพื่อหลีกเลี่ยงการชนเพดาน
Exponential backoff: หากบอทได้รับข้อผิดพลาด rate limit (HTTP 429) มันจะรอนานขึ้นเรื่อยๆ ก่อนที่จะลองใหม่: 1 วินาที จากนั้น 2 จากนั้น 4 จากนั้น 8 สิ่งนี้ป้องกันไม่ให้การลองใหม่จำนวนมากทำให้สถานการณ์แย่ลง
WebSocket แทน REST: สำหรับข้อมูลตลาด การเชื่อมต่อ WebSocket มีประสิทธิภาพมากกว่าการ polling endpoint REST อย่างมาก การเชื่อมต่อ WebSocket เดียวให้การอัปเดตราคาแบบเรียลไทม์โดยไม่บริโภคงบประมาณ rate limit บอทที่สร้างมาดีใช้ WebSocket สำหรับข้อมูลและใช้ REST เฉพาะสำหรับการจัดการคำสั่งเท่านั้น
การรันบอทหลายตัวบน API key เดียวกันจะแบ่งงบประมาณ rate limit ระหว่างบอททั้งหมด หากคุณรันบอท 5 ตัวบนคีย์เดียวที่แต่ละตัวทำ 50 คำขอ/วินาที คุณจะชนขีดจำกัดของ Binance ทันที ใช้ API key แยก (และในอุดมคติคือ subaccount) ต่อบอท เพื่อให้ได้ rate limit ที่เป็นอิสระ
ความเสี่ยงของคู่สัญญา Exchange: บทเรียนจาก FTX
ในเดือนพฤศจิกายน 2022 FTX — exchange คริปโตที่ใหญ่เป็นอันดับสามของโลก — ล่มสลายในเวลาไม่ถึงหนึ่งสัปดาห์ เงินทุนของลูกค้ามูลค่า 8 พันล้านดอลลาร์หายวับไป ผู้ใช้ที่นำเงินทุนการเทรดทั้งหมดไว้บน FTX สูญเสียทุกอย่าง ไม่ว่า API key ของพวกเขาจะปลอดภัยเพียงใดหรือบอทของพวกเขาจะทำงานได้ดีเพียงใดก็ตาม
บทเรียน: ความปลอดภัยของ API key ของคุณไม่มีความหมายหาก exchange เองล้มเหลว
ประเภทของความเสี่ยงคู่สัญญา
| ประเภทความเสี่ยง | คำอธิบาย | ตัวอย่างทางประวัติศาสตร์ |
|---|---|---|
| การล้มละลาย | exchange ไม่มีสินทรัพย์เพียงพอที่จะครอบคลุมเงินฝาก | FTX (2022) |
| การยึดโดยหน่วยงานกำกับดูแล | รัฐบาลปิดหรืออายัด exchange | Bitzlato (2023) |
| การแฮ็ก/การละเมิด | hot wallet ของ exchange ถูกเจาะ | Mt. Gox (2014), Bitfinex (2016) |
| การระงับ withdrawal | exchange ระงับ withdrawal ในระหว่างวิกฤต | exchange หลายแห่งในระหว่างตลาดถล่ม |
| ความล้มเหลวทางเทคนิค | การหยุดทำงานเป็นเวลานานทำให้เกิดความสูญเสียจากการเทรด | หลากหลาย, ในระหว่างความผันผวนรุนแรง |
การกระจายความเสี่ยงหลาย Exchange
การลดความเสี่ยงนั้นตรงไปตรงมา: อย่าเก็บเงินทุนการเทรดทั้งหมดของคุณไว้บน exchange เดียว กระจายไปยัง exchange รายใหญ่ที่ดำเนินงานอย่างเป็นอิสระ 2–3 แห่ง
ตัวอย่างการจัดสรรสำหรับเงินทุนรวม $60,000:
| Exchange | การจัดสรร | บอทที่ทำงาน |
|---|---|---|
| Binance | $25,000 (42%) | BTC DCA, ETH Grid |
| Bybit | $20,000 (33%) | SOL DCA, AVAX Momentum |
| OKX | $15,000 (25%) | BTC Grid, Multi-pair DCA |
หาก exchange ใด exchange หนึ่งล้มเหลว คุณจะสูญเสียเงินทุนมากที่สุด 42% — เจ็บปวดแต่ยังเอาตัวรอดได้ หากคุณมี $60,000 บน FTX เพียงแห่งเดียว คุณจะสูญเสีย 100%
สิ่งที่ต้องตรวจสอบสำหรับความเสี่ยงคู่สัญญา
- รายงาน Proof of Reserves — มีการเผยแพร่อย่างสม่ำเสมอหรือไม่ ได้รับการตรวจสอบโดยบริษัทที่มีชื่อเสียงหรือไม่
- เวลาในการประมวลผล withdrawal — ความล่าช้าที่เกิดขึ้นอย่างกะทันหันในการ withdrawal เป็นสัญญาณเตือนแต่เนิ่นๆ
- โซเชียลมีเดียและข่าว — ผู้บริหารของ exchange มีพฤติกรรมแปลกๆ, การเปลี่ยนแปลงองค์กรที่ผิดปกติ
- พัฒนาการด้านกฎระเบียบ — คดีความ, การดำเนินการของหน่วยงานกำกับดูแล หรือการเพิกถอนใบอนุญาตในตลาดสำคัญ
- ความสามารถในการ withdrawal ของคุณเอง — ทดสอบ withdrawal เป็นระยะเพื่อยืนยันว่าคุณสามารถเข้าถึงเงินทุนของคุณได้
เก็บเฉพาะเงินทุนการเทรดที่ใช้งานอยู่ไว้บน exchange การถือครองระยะยาวและเงินสำรองควรอยู่ในกระเป๋าแบบ self-custody (กระเป๋าฮาร์ดแวร์ เช่น Ledger หรือ Trezor) แนวทางที่สมเหตุสมผล: ไม่เกิน 30–40% ของพอร์ตโฟลิโอคริปโตทั้งหมดของคุณบน exchange ในเวลาใดก็ตาม
รายการตรวจสอบการตอบสนองต่อเหตุการณ์
เมื่อเหตุการณ์ความปลอดภัยเกิดขึ้น — หรือแม้เมื่อคุณสงสัยว่าเกิดขึ้น — ความเร็วในการตอบสนองเป็นตัวกำหนดผลลัพธ์ ทำตามรายการตรวจสอบนี้ตามลำดับ:
ขั้นตอนที่ 1: ปิดใช้งาน API Key ที่ต้องสงสัยทันที
ล็อกอินเข้า exchange โดยตรง (พิมพ์ URL ด้วยตนเอง อย่าคลิกลิงก์ใดๆ) ลบหรือปิดใช้งานคีย์ที่ถูกขโมย สิ่งนี้ใช้เวลา 30 วินาทีและตัดการเข้าถึงที่ไม่ได้รับอนุญาตทั้งหมดทันที
ขั้นตอนที่ 2: ตรวจสอบและยกเลิกคำสั่งซื้อที่เปิดอยู่ทั้งหมด
ตรวจทานคำสั่งซื้อที่เปิดอยู่ทุกรายการบน exchange ยกเลิกสิ่งใดก็ตามที่คุณไม่ได้วางหรือไม่รู้จัก ตรวจสอบคู่เทรดทั้งหมด ไม่ใช่แค่คู่ที่บอทของคุณใช้ — ผู้โจมตีอาจเทรดคู่ที่คุณจะไม่มีวันเลือก
ขั้นตอนที่ 3: ตรวจสอบประวัติ Withdrawal
ตรวจสอบประวัติ withdrawal 24–48 ชั่วโมงล่าสุด ยืนยันว่าทุกการ withdrawal ได้รับอนุญาตจากคุณ หากคุณเห็น withdrawal ที่ไม่ได้รับอนุญาต ให้ติดต่อฝ่ายสนับสนุนของ exchange ทันทีและบันทึก transaction hash
ขั้นตอนที่ 4: เปลี่ยนรหัสผ่าน Exchange ของคุณ
รีเซ็ตรหัสผ่านของคุณเป็นสตริงที่สร้างขึ้นแบบสุ่มใหม่ (ใช้ password manager ของคุณ) หากผู้โจมตีมีการเข้าถึงบัญชีที่กว้างขึ้น รหัสผ่านเก่าก็ถูกขโมยแล้ว
ขั้นตอนที่ 5: สร้าง API Key ใหม่ด้วย IP Whitelist
สร้าง API key ใหม่ด้วยสิทธิ์ขั้นต่ำที่จำเป็นและ IP whitelist ที่เข้มงวด อย่านำการตั้งค่าใดๆ จากคีย์ที่ถูกขโมยมาใช้ซ้ำ
ขั้นตอนที่ 6: อัปเดตการตั้งค่าบอท
ป้อนข้อมูลรับรอง API ใหม่ในแพลตฟอร์มบอทของคุณ ตรวจสอบการเชื่อมต่อและการทำงานที่ถูกต้องก่อนกลับมาเทรดต่อ
ขั้นตอนที่ 7: ตรวจสอบ Access Log
ตรวจทาน:
- log การเข้าถึง API ของ exchange เพื่อหา IP address ที่ไม่คุ้นเคย
- ประวัติการล็อกอินของ exchange เพื่อหาเซสชันที่ไม่ได้รับอนุญาต
- บัญชีอีเมลเพื่อหาการเข้าถึงหรือกฎการส่งต่อที่ไม่ได้รับอนุญาต
- บัญชีแพลตฟอร์มบอทเพื่อหาการเปลี่ยนแปลงการตั้งค่าที่ไม่ได้รับอนุญาต
ขั้นตอนที่ 8: รายงานเหตุการณ์
ติดต่อทีมความปลอดภัยอย่างเป็นทางการของ exchange พร้อมสิ่งที่คุณค้นพบ หากเงินทุนถูกขโมย ให้แจ้งความกับหน่วยงานบังคับใช้กฎหมายในพื้นที่และหน่วยงานปราบปรามอาชญากรรมทางการเงินของประเทศคุณ
รายการตรวจสอบการตรวจสอบความปลอดภัย: 10 รายการที่ผู้ปฏิบัติงานบอททุกคนต้องยืนยัน
ทำตามรายการตรวจสอบนี้ทุกเดือน แต่ละรายการใช้เวลายืนยันไม่ถึงหนึ่งนาที:
| # | รายการตรวจสอบ | วิธียืนยัน | ✅ / ❌ |
|---|---|---|---|
| 1 | สิทธิ์ withdrawal ถูกปิดใช้งานบน API key ทั้งหมด | หน้า API management ของ exchange | |
| 2 | IP whitelist ถูกเปิดใช้งานบน API key ทั้งหมด | หน้า API management ของ exchange | |
| 3 | 2FA ถูกเปิดใช้งานบนบัญชี exchange (แอป authenticator ไม่ใช่ SMS) | การตั้งค่าความปลอดภัยของ exchange | |
| 4 | 2FA ถูกเปิดใช้งานบนบัญชีแพลตฟอร์มบอท | การตั้งค่าความปลอดภัยของแพลตฟอร์ม | |
| 5 | API key ถูกหมุนเวียนภายใน 90 วันที่ผ่านมา | ตรวจสอบวันที่สร้างคีย์ | |
| 6 | ตั้งค่ารหัส anti-phishing บน exchange แล้ว | การตั้งค่าความปลอดภัยของ exchange | |
| 7 | ไม่มี API key ที่ไม่จำเป็น (คีย์เก่า/ไม่ใช้แล้วถูกลบ) | หน้า API management ของ exchange | |
| 8 | ยอดคงเหลือ subaccount อยู่ภายในขีดจำกัดการจัดสรรที่ตั้งใจไว้ | ภาพรวมยอดคงเหลือของ exchange | |
| 9 | Proof of Reserves ของ exchange ได้รับการยืนยันเมื่อเร็วๆ นี้ | หน้าความโปร่งใสของ exchange | |
| 10 | ทบทวนแผนการตอบสนองฉุกเฉินแล้ว (คุณรู้ว่าจะเพิกถอนคีย์ได้ที่ไหน) | การทบทวนในใจ |
ตั้งการแจ้งเตือนในปฏิทินสำหรับวันที่หนึ่งของทุกเดือนเพื่อทำตามรายการตรวจสอบนี้ ใช้เวลา 10 นาทีและจับความคลาดเคลื่อนของการตั้งค่า คีย์เก่าที่ถูกลืม และการตั้งค่าความปลอดภัยที่หมดอายุ ก่อนที่มันจะกลายเป็นช่องโหว่
รวมทุกอย่างเข้าด้วยกัน: Defense in Depth
ไม่มีมาตรการความปลอดภัยเดียวที่เพียงพอ ผู้ปฏิบัติงานบอทมืออาชีพจัดวางการป้องกันหลายชั้นเพื่อให้ความล้มเหลวของชั้นใดชั้นหนึ่งไม่ส่งผลให้เกิดการละเมิด:
| ชั้นการป้องกัน | ป้องกันอะไร | การนำไปใช้ |
|---|---|---|
| การจำกัดขอบเขตสิทธิ์ (ไม่มี withdrawal) | การสูญเงินทั้งหมดจากการถูกขโมยคีย์ | การตั้งค่า API ของ exchange |
| IP whitelist | การใช้คีย์ที่ถูกขโมยจากระยะไกล | การตั้งค่า API ของ exchange |
| การหมุนเวียนคีย์ (90 วัน) | การเปิดเผยคีย์ในระยะยาว | ขั้นตอนตามกำหนดเวลา |
| การแยก subaccount | การปนเปื้อนข้ามบอท, รัศมีความเสียหาย | การตั้งค่า subaccount ของ exchange |
| 2FA (แอป authenticator) | การยึดบัญชีผ่านการขโมยรหัสผ่าน | การตั้งค่า exchange + แพลตฟอร์ม |
| รหัส anti-phishing | การโจมตี phishing ทางอีเมล | การตั้งค่าความปลอดภัยของ exchange |
| การกระจายความเสี่ยงหลาย exchange | การล้มละลาย/ความล้มเหลวของ exchange | สถาปัตยกรรมพอร์ตโฟลิโอ |
| การตรวจสอบความปลอดภัยรายเดือน | ความคลาดเคลื่อนของการตั้งค่า, คีย์ที่ถูกลืม | การทบทวนตามกำหนดเวลา |
แต่ละชั้นเป็นอิสระต่อกัน หากผู้โจมตีข้าม IP whitelist ได้ (โดยการเจาะเซิร์ฟเวอร์บอท) พวกเขายังคงต้องเผชิญกับการจำกัดขอบเขตสิทธิ์ (ไม่มี withdrawal), การแยก subaccount (การเปิดเผยเงินทุนที่จำกัด) และขั้นตอนการตอบสนองต่อเหตุการณ์ของคุณ
คำถามที่พบบ่อย
จะเกิดอะไรขึ้นหากฉันลืมเพิ่ม IP whitelist?
หากไม่มี IP whitelist API key ของคุณทำงานจาก IP address ใดก็ได้ทั่วโลก หากมีคนได้คีย์ของคุณ (ผ่านการละเมิดข้อมูล, การเปิดเผยโดยไม่ตั้งใจ หรือ phishing) พวกเขาสามารถใช้จากโครงสร้างพื้นฐานของพวกเขาเองได้ บน Bybit คีย์ที่ไม่มีการจำกัด IP จะหมดอายุอัตโนมัติหลังจาก 90 วัน — เป็นตาข่ายนิรภัย บน Binance และ OKX คีย์จะยังคงทำงานอยู่อย่างไม่มีกำหนด เพิ่ม IP whitelist ตอนนี้; ใช้เวลา 2 นาที
ฉันสามารถใช้ API key เดียวกันสำหรับบอทหลายตัวได้หรือไม่?
ในทางเทคนิคได้ แต่เป็นวิธีปฏิบัติที่ไม่ดี บอทหลายตัวที่ใช้คีย์เดียวกันจะแบ่งปัน rate limit ทำให้ง่ายต่อการกระตุ้นการละเมิด rate limit นอกจากนี้ยังหมายความว่าคุณไม่สามารถเพิกถอนการเข้าถึงสำหรับบอทตัวหนึ่งโดยไม่ส่งผลกระทบต่อบอททั้งหมด ใช้ API key หนึ่งคีย์ต่อบอท (ในอุดมคติคือใช้ subaccount แยกต่างหาก)
ฉันจะรู้ได้อย่างไรว่า API key ของฉันถูกขโมย?
สัญญาณเตือนรวมถึง: การเทรดที่คุณไม่ได้อนุญาตปรากฏในประวัติของคุณ, การเปลี่ยนแปลงยอดคงเหลือที่ไม่คาดคิด, ข้อผิดพลาด rate limit เมื่อบอทของคุณอยู่เฉยๆ (บ่งชี้ว่ามีคนอื่นใช้คีย์ของคุณ) หรือการแจ้งเตือนการล็อกอินจาก IP ที่ไม่คุ้นเคย หากคุณเห็นสิ่งใดสิ่งหนึ่งเหล่านี้ ให้ลบคีย์ทันทีและทำตามรายการตรวจสอบการตอบสนองต่อเหตุการณ์
จะเกิดอะไรขึ้นหาก exchange เปลี่ยนข้อกำหนด IP whitelist?
Exchange อัปเดตระบบ IP whitelist ของพวกเขาเป็นครั้งคราว โดยทั่วไปคุณจะได้รับการแจ้งเตือนทางอีเมล หากบอทของคุณหยุดดำเนินการเทรดอย่างกะทันหัน ให้ตรวจสอบว่า exchange ได้เปลี่ยนข้อกำหนดการยืนยันตัวตน API หรือไม่ สิ่งนี้เกิดขึ้นได้ยาก — exchange รายใหญ่มุ่งเน้นความเข้ากันได้แบบย้อนหลัง — แต่ก็คุ้มค่าที่จะติดตาม
ฉันควรใช้ subaccount แม้ว่าจะรันบอทเพียงตัวเดียวหรือไม่?
ใช่ Subaccount สร้างขอบเขตที่ชัดเจนระหว่างเงินทุนการเทรดของบอทของคุณกับเงินสำรองของคุณ แม้จะมีบอทเพียงตัวเดียว subaccount ก็รับประกันว่าบอทที่ทำงานผิดปกติ (หรือบั๊กในกลยุทธ์ของคุณ) จะส่งผลกระทบได้เฉพาะเงินทุนที่จัดสรรให้อย่างชัดเจนเท่านั้น การตั้งค่าไม่มีค่าใช้จ่ายและเพิ่มการป้องกันที่มีความหมาย
การละเมิด rate limit ส่งผลต่อการเทรดของฉันอย่างไร?
การละเมิด rate limit ส่งผลให้มีการปฏิเสธคำขอ API ชั่วคราว ในระหว่างช่วงแบน (โดยทั่วไป 2–10 นาที) บอทของคุณไม่สามารถวางคำสั่ง ตรวจสอบยอดคงเหลือ หรือจัดการตำแหน่งได้ ในตลาดที่ผันผวน การถูกล็อกออกแม้เพียง 5 นาทีอาจหมายถึงการพลาดการกระตุ้น stop-loss หรือจุดเข้าที่ทำกำไรได้ การจัดการ rate limit ที่เหมาะสมไม่ใช่ทางเลือก — มันจำเป็นสำหรับการดำเนินงานบอทที่เชื่อถือได้
การกระจายความเสี่ยงหลาย exchange คุ้มค่ากับความซับซ้อนหรือไม่?
แน่นอน การจัดการบอทใน 2–3 exchange ต้องใช้ความพยายามในการบริหารมากขึ้นเล็กน้อย แต่การลดความเสี่ยงนั้นมหาศาล การล่มสลายของ FTX กวาดล้างเทรดเดอร์ที่กระจุกเงินทุนของพวกเขาไว้บนแพลตฟอร์มเดียว การกระจายความเสี่ยงปกป้องจากเหตุการณ์ที่ไม่มีความปลอดภัยของ API key หรือ IP whitelist ใดป้องกันได้: การล้มเหลวของ exchange เอง
