SiamCafe.net Blog
Technology

Martingale คืออะไร

martingale คอ
Martingale คืออะไร | SiamCafe Blog
2026-01-23· อ. บอม — SiamCafe.net· 10,097 คำ

Martingale System

Martingale ระบบบริหารเงิน เพิ่มเดิมพันเมื่อแพ้ Anti-Martingale Risk Management Casino Forex Trading

ครั้งที่เดิมพันผลกำไร/ขาดทุนสะสมทุนที่ต้องมี
1100แพ้-100100
2200แพ้-300300
3400แพ้-700700
4800แพ้-1,5001,500
51,600แพ้-3,1003,100
63,200ชนะ+1006,300

Simulation

# === Martingale Simulation ===

import random

def martingale_simulation(initial_bet, bankroll, max_rounds, win_prob=0.48):
    bet = initial_bet
    total = bankroll
    history = []
    
    for i in range(max_rounds):
        if bet > total:
            history.append({"round": i+1, "action": "BANKRUPT", "total": total})
            break
        
        win = random.random() < win_prob
        if win:
            total += bet
            history.append({"round": i+1, "bet": bet, "result": "WIN", "total": total})
            bet = initial_bet  # Reset to initial
        else:
            total -= bet
            history.append({"round": i+1, "bet": bet, "result": "LOSS", "total": total})
            bet *= 2  # Double the bet
    
    return history

# Run simulation
random.seed(42)
results = martingale_simulation(
    initial_bet=100,
    bankroll=10000,
    max_rounds=100,
    win_prob=0.48  # Slight house edge
)

print("=== Martingale Simulation ===")
print(f"  Initial Bankroll: 10,000")
print(f"  Initial Bet: 100")
print(f"  Win Probability: 48%")
print(f"  Rounds Played: {len(results)}")
print(f"  Final Bankroll: {results[-1]['total']}")

# Count stats
wins = sum(1 for r in results if r.get("result") == "WIN")
losses = sum(1 for r in results if r.get("result") == "LOSS")
bankrupt = any(r.get("action") == "BANKRUPT" for r in results)
max_bet = max(r.get("bet", 0) for r in results)

print(f"  Wins: {wins} | Losses: {losses}")
print(f"  Max Bet: {max_bet}")
print(f"  Bankrupt: {bankrupt}")

Anti-Martingale

# === Anti-Martingale vs Martingale ===

from dataclasses import dataclass

@dataclass
class SystemComparison:
    feature: str
    martingale: str
    anti_martingale: str
    kelly_criterion: str

comparisons = [
    SystemComparison("เมื่อชนะ",
        "กลับไปเดิมพันเริ่มต้น",
        "เพิ่มเดิมพัน (×2 หรือ ×1.5)",
        "คำนวณขนาดจาก Edge + Odds"),
    SystemComparison("เมื่อแพ้",
        "เพิ่มเดิมพัน ×2",
        "กลับไปเดิมพันเริ่มต้น",
        "คำนวณขนาดจาก Edge + Odds"),
    SystemComparison("ทุนที่ต้องมี",
        "มหาศาล Exponential Growth",
        "น้อย เริ่มต้นเท่าเดิม",
        "ปานกลาง ตาม Bankroll %"),
    SystemComparison("ความเสี่ยงล้มละลาย",
        "สูงมาก แพ้ติดหมดตัว",
        "ต่ำ แพ้ติดเสียแค่เริ่มต้น",
        "ต่ำมาก ถ้าคำนวณถูกต้อง"),
    SystemComparison("ผลตอบแทน/ความเสี่ยง",
        "แย่มาก ชนะน้อย แพ้หมด",
        "ดี ใช้ Winning Streak",
        "ดีที่สุด Optimal Growth Rate"),
    SystemComparison("เหมาะกับ",
        "ไม่แนะนำ อันตรายมาก",
        "Trading ที่มี Edge เล็กน้อย",
        "Trading ที่มี Edge ชัดเจน"),
]

print("=== System Comparison ===")
for c in comparisons:
    print(f"  [{c.feature}]")
    print(f"    Martingale: {c.martingale}")
    print(f"    Anti-Mart: {c.anti_martingale}")
    print(f"    Kelly: {c.kelly_criterion}")

Position Sizing

# === Kelly Criterion ===

# Kelly Formula:
# f* = (bp - q) / b
# f* = fraction of bankroll to bet
# b  = odds (win amount / loss amount)
# p  = probability of winning
# q  = probability of losing (1 - p)

def kelly_criterion(win_prob, win_loss_ratio):
    p = win_prob
    q = 1 - p
    b = win_loss_ratio
    kelly = (b * p - q) / b
    return max(0, kelly)  # Never negative

@dataclass
class SizingMethod:
    method: str
    formula: str
    example: str
    risk_level: str
    recommendation: str

methods = [
    SizingMethod("Fixed Fraction",
        "Risk = Account × Fixed% (เช่น 1-2%)",
        "Account 100K × 1% = Risk 1,000 ต่อ Trade",
        "ต่ำ ปลอดภัย", "แนะนำสำหรับทุกู้คืน เริ่มจาก 1%"),
    SizingMethod("Kelly Criterion",
        "f* = (bp - q) / b",
        "Win 55%, R:R 2:1 → Kelly = 27.5% (ใช้ Half Kelly 14%)",
        "กลาง ถ้าใช้ Full Kelly", "ใช้ Half Kelly หรือ Quarter Kelly"),
    SizingMethod("Anti-Martingale",
        "เพิ่ม Size เมื่อชนะ ลดเมื่อแพ้",
        "ชนะ 3 ครั้งติด เพิ่มจาก 1% → 1.5% → 2%",
        "กลาง", "ดีกว่า Martingale แต่ต้องมี Edge"),
    SizingMethod("Martingale",
        "เพิ่ม Size ×2 เมื่อแพ้",
        "แพ้ 5 ครั้ง 100→200→400→800→1600 ต้องมีทุน 3100+",
        "สูงมาก อันตราย", "ไม่แนะนำ ความเสี่ยงล้มละลายสูง"),
]

# Calculate Kelly examples
scenarios = [
    (0.55, 2.0, "Win 55%, R:R 2:1"),
    (0.50, 2.0, "Win 50%, R:R 2:1"),
    (0.60, 1.5, "Win 60%, R:R 1.5:1"),
    (0.45, 3.0, "Win 45%, R:R 3:1"),
]

print("=== Position Sizing ===")
for m in methods:
    print(f"  [{m.method}] Risk: {m.risk_level}")
    print(f"    Formula: {m.formula}")
    print(f"    Example: {m.example}")
    print(f"    Recommend: {m.recommendation}")

print("\n=== Kelly Criterion Examples ===")
for p, b, desc in scenarios:
    k = kelly_criterion(p, b)
    print(f"  {desc} → Kelly: {k*100:.1f}% | Half Kelly: {k*50:.1f}%")

เคล็ดลับ

การนำความรู้ไปประยุกต์ใช้งานจริง

แหล่งเรียนรู้ที่แนะนำ ได้แก่ Official Documentation ที่อัพเดทล่าสุดเสมอ Online Course จาก Coursera Udemy edX ช่อง YouTube คุณภาพทั้งไทยและอังกฤษ และ Community อย่าง Discord Reddit Stack Overflow ที่ช่วยแลกเปลี่ยนประสบการณ์กับนักพัฒนาทั่วโลก

เปรียบเทียบข้อดีและข้อเสีย

ข้อดีข้อเสีย
ประสิทธิภาพสูง ทำงานได้เร็วและแม่นยำ ลดเวลาทำงานซ้ำซ้อนต้องใช้เวลาเรียนรู้เบื้องต้นพอสมควร มี Learning Curve สูง
มี Community ขนาดใหญ่ มีคนช่วยเหลือและแหล่งเรียนรู้มากมายบางฟีเจอร์อาจยังไม่เสถียร หรือมีการเปลี่ยนแปลงบ่อยในเวอร์ชันใหม่
รองรับ Integration กับเครื่องมือและบริการอื่นได้หลากหลายต้นทุนอาจสูงสำหรับ Enterprise License หรือ Cloud Service
เป็น Open Source หรือมีเวอร์ชันฟรีให้เริ่มต้นใช้งานต้องการ Hardware หรือ Infrastructure ที่เพียงพอ

จากตารางเปรียบเทียบจะเห็นว่าข้อดีมีมากกว่าข้อเสียอย่างชัดเจน โดยเฉพาะในแง่ของประสิทธิภาพและความสามารถในการ Scale สำหรับข้อเสียส่วนใหญ่สามารถแก้ไขได้ด้วยการเรียนรู้อย่างเป็นระบบและวางแผนทรัพยากรให้เหมาะสม

สรุปประเด็นสำคัญ

สิ่งที่ควรทำต่อหลังอ่านบทความนี้จบ คือ ลองตั้ง Lab Environment ทดสอบด้วยตัวเอง อ่าน Official Documentation เพิ่มเติม เข้าร่วม Community เช่น Discord หรือ Facebook Group ที่เกี่ยวข้อง และลองทำ Side Project เล็กๆ เพื่อฝึกฝน หากมีคำถามเพิ่มเติม สามารถติดตามเนื้อหาได้ที่ SiamCafe.net ซึ่งอัพเดทบทความใหม่ทุกสัปดาห์

Martingale คืออะไร

ระบบบริหารเงิน เพิ่มเดิมพันเมื่อแพ้ ×2 กลับเริ่มต้นเมื่อชนะ Casino ศตวรรษ 18 ฝรั่งเศส Forex หุ้น Crypto ชนะคืนทุนทั้งหมด

ข้อดีข้อเสียมีอะไร

ข้อดี Win Rate 90%+ ได้คืนทุน ง่าย ข้อเสีย ทุนมหาศาล Exponential แพ้ 10 ครั้ง 102400 ล้มละลาย Table Limit Margin Call ผลตอบแทนแย่

Anti-Martingale คืออะไร

Reverse ตรงข้าม เพิ่มเมื่อชนะ ลดเมื่อแพ้ Winning Streak ทุนน้อย ล้มละลายต่ำ ผลตอบแทนดีกว่า กำหนด Reset ป้องกันคืนกำไร

ใช้ในการเทรดได้ไหม

ไม่แนะนำ Trend ยาว Margin Call Drawdown สูง ใช้ Fixed Fraction 1-2% Kelly Criterion Anti-Martingale แทน ต้องมี Edge ก่อน

สรุป

Martingale ระบบเพิ่มเดิมพันเมื่อแพ้ อันตราย ไม่แนะนำ Anti-Martingale ดีกว่า Fixed Fraction 1-2% ปลอดภัย Kelly Criterion Optimal Edge

📖 บทความที่เกี่ยวข้อง

ea forex martingaleอ่านบทความ → martingale forex strategyอ่านบทความ → money management martingaleอ่านบทความ → martingaleอ่านบทความ → martingale strategyอ่านบทความ →

📚 ดูบทความทั้งหมด →