Розробка алгоритму Martingale/Anti-Martingale
Martingale та Anti-Martingale — дві протилежні системи управління розміром позиції на основі попереднього результату. Martingale подвоює ставку після збитку. Anti-Martingale — після прибутку. Обидва мають математичні обґрунтування та серйозні практичні обмеження.
Класичний Martingale
Логіка: після збитку подвоюємо розмір наступної позиції. При першому виграші відшкодовуємо всі попередні збитки плюс отримуємо базовий прибуток.
Угода 1: $100 → збиток -$100
Угода 2: $200 → збиток -$200
Угода 3: $400 → збиток -$400
Угода 4: $800 → прибуток +$800
Всього: -100 -200 -400 + 800 = +$100
Математична проблема: серія збитків зростає експоненціально. Після 10 збитків: $100 × 2^10 = $102,400. Це або перевищує депозит, або досягає лімітів біржи.
Реалізація у крипто-торговлі:
class MartingaleStrategy:
def __init__(self, base_qty, multiplier=2.0, max_orders=6):
self.base_qty = base_qty
self.multiplier = multiplier
self.max_orders = max_orders
self.current_level = 0
def get_next_qty(self, last_result):
if last_result == 'loss':
self.current_level = min(self.current_level + 1, self.max_orders)
else:
self.current_level = 0
return self.base_qty * (self.multiplier ** self.current_level)
Обмежений Martingale: максимальне подвоєння = 4–6. Після лімітів — фіксуємо збиток та починаємо заново з базового розміру. Перетворює математично небезпечну систему на управляємо.
Anti-Martingale (Reverse Martingale)
Логіка: збільшуємо розмір після прибутку, зменшуємо після збитку. Дозволяє агресивно використовувати «смуги удачі» при утриманні ризику.
Застосування у тренді: при серії прибуткових угод у тренді — pyramid у напрямку тренду. Логіка turtle traders.
class AntiMartingaleStrategy:
def __init__(self, base_qty, multiplier=1.5, win_streak_limit=4):
self.base_qty = base_qty
self.multiplier = multiplier
self.win_streak = 0
self.win_streak_limit = win_streak_limit
def get_next_qty(self, last_result):
if last_result == 'win':
self.win_streak = min(self.win_streak + 1, self.win_streak_limit)
else:
self.win_streak = 0
return self.base_qty * (self.multiplier ** self.win_streak)
Profit lock: при досягненні streak limit N — фіксуємо прибуток та повертаємось до базового розміру. Не даємо «віддати» накопичене.
Застосування у крипто-торговлі
DCA-Martingale боти (популярний паттерн): при падінні ціни збільшуємо розмір наступної покупки. Мета — знизити середню ціну входу. Практично всі «3Commas DCA боти» працюють на цьому принципі.
Ключові параметри DCA-Martingale бота:
- Base order size: $100
- Safety orders: 6 (максимум рівнів)
- Price deviation: 2% (крок вниз для наступної покупки)
- Safety order multiplier: 1.5× (Anti-Martingale по обсягу)
- Take profit: 1.5%
Risk/Reward аналіз
| Параметр | Martingale | Anti-Martingale |
|---|---|---|
| Ризик при серії збитків | Експоненціальний | Лінійний |
| Максимальний збиток | Може знищити депозит | Обмежений base_qty × N |
| Прибуток у тренді | Низький | Високий |
| Підходить для | Боковий ринок | Трендовий ринок |
Залізне правило Martingale: ніколи без обмеження кількості рівнів. Неограничений Martingale — це не стратегія, це рулетка на кредитні гроші.
Розробляємо обидві стратегії з configurability параметрами, risk limits, візуалізацією позицій та P&L, backtesting модулем для оцінки на історичних даних.







