Розробка алгоритму Martingale/Anti-Martingale для криптотрейдингу
Трейдери часто стикаються з дилемою: як управляти розміром позиції, щоб не розоритися на серії збитків, але й не упустити прибуток при тренді. Класичні системи Martingale та Anti-Martingale пропонують протилежні рішення, але на практиці вимагають тонкого налаштування та жорстких обмежень. Ми розробляємо обидва підходи з нуля під конкретний ринок та ризик-профіль клієнта — від простих DCA-ботів до складних стратегій з динамічним розміром плеча.
Класичний Martingale: математика та обмеження
Логіка: після збитку подвоюємо розмір наступної позиції. При першому виграші відшкодовуємо всі попередні збитки та отримуємо базовий прибуток.
Угода 1: $100 → збиток -$100 Угода 2: $200 → збиток -$200 Угода 3: $400 → збиток -$400 Угода 4: $800 → прибуток +$800 Підсумок: -100 -200 -400 + 800 = +$100 Математична проблема: серія збитків зростає експоненційно. Після 10 збитків поспіль: $100 × 2^10 = $102,400. Це або перевищує депозит, або досягає ліміту біржі. На реальному депозиті це призводить до маржин-колу або стоп-ауту. Якщо хочете глибше зрозуміти математику, вивчіть Martingale (betting system).
Обмежений Martingale: практичне рішення
Встановлюємо максимальну кількість подвоєнь (зазвичай 4–6). Після досягнення ліміту фіксуємо збиток і починаємо заново з базового розміру. Це перетворює математично небезпечну систему в керований інструмент.
Реалізація в крипто-торгівлі:
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 self.total_invested = 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) def get_break_even_price(self, entries): """Ціна беззбитковості для поточної накопиченої позиції""" total_value = sum(qty * price for qty, price in entries) total_qty = sum(qty for qty, price in entries) return total_value / total_qty if total_qty > 0 else 0 Чому Martingale небезпечний без обмежень?
Необмежений Martingale — це не стратегія, а рулетка на позикові кошти. Ймовірність серії з 10 збитків у рівноймовірній грі становить 1/1024, але в криптовалютах з високою волатильністю такі просадки трапляються частіше. Ми завжди вбудовуємо захист: денний ліміт збитку, максимальна кількість рівнів та динамічний стоп.
Anti-Martingale: робота по тренду
Логіка: збільшуємо розмір після прибутку, зменшуємо після збитку. Дозволяє агресивно використовувати «смуги удачі» при утриманні ризику.
Реалізація:
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 фіксуємо прибуток і повертаємося до базового розміру. Не даємо «віддати» накопичене.
Коли Anti-Martingale дає перевагу?
На трендових ринках (наприклад, виражений бичачий тренд) Anti-Martingale дозволяє в кілька разів збільшити дохідність порівняно з фіксованим розміром позиції. На бічному ринку він програє Martingale, який усереднює ціну входу. Різниця може сягати 2-3 разів по дохідності.
Де застосовується в крипто-торгівлі
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%
Ми налаштовуємо ці параметри під волатильність конкретної пари та допустиму просадку.
Порівняння стратегій
| Параметр | Martingale | Anti-Martingale |
|---|---|---|
| Ризик при серії збитків | Експоненційний | Лінійний |
| Максимальний збиток | Може знищити депозит | Обмежений base_qty × N |
| Прибуток при тренді | Низька | Висока |
| Підходить для | Бічний ринок | Трендовий ринок |
Рекомендовані параметри для різної волатильності
| Волатильність | Base order | Deviation | Safety orders | Take profit |
|---|---|---|---|---|
| Низька (BTC) | 0.01 BTC | 1% | 3 | 0.5% |
| Середня (ETH) | 0.1 ETH | 2% | 5 | 1.5% |
| Висока (ALT) | базовий об'єм | 3% | 8 | 2.5% |
Що входить в розробку алгоритму
- Модуль стратегії з конфігурованими параметрами.
- Risk manager: стоп-ліміти, daily drawdown limit, max order count.
- Візуалізація позицій та P&L у реальному часі.
- Backtesting на історичних даних зі звітом (Sharpe ratio, max drawdown).
- Інтеграція з біржами (Binance, Bybit, OKX) через WebSocket.
- Технічна документація та навчання команди.
При розробці ми використовуємо Foundry та Hardhat для тестування та деплою смарт-контрактів, якщо стратегія потребує on-chain виконання. Наша команда має 5+ років досвіду в криптотрейдингу та реалізувала більше 30 алгоритмів для клієнтів.
Процес роботи
- Аналіз ринку та ваших вимог.
- Проектування стратегії та вибір параметрів.
- Написання та тестування коду на історичних даних.
- Паперовий трейдинг для верифікації.
- Деплой на реальний рахунок з обмеженим ризиком.
- Моніторинг та оптимізація.
Терміни розробки: від 2 до 6 тижнів залежно від складності. Вартість розраховується індивідуально — зв'яжіться з нами для оцінки вашого проекту.
Типові помилки при реалізації
- Відсутність обмеження кількості рівнів — головна причина втрати депозиту.
- Фіксований take profit без урахування спреду та комісій.
- Ігнорування slippage при великому обсязі ордера.
- Використання однакових параметрів для всіх волатильностей.
Ми враховуємо ці нюанси на етапі проектування та гарантуємо працездатність алгоритму.
Для консультації та оцінки вашого проекту зв'яжіться з нами. Отримайте готове рішення під ключ з налаштованим ризик-менеджментом.







