Разработка алгоритма take profit по частям
Частичное закрытие позиции (partial take profit) позволяет зафиксировать часть прибыли по мере достижения целей, оставляя оставшуюся часть позиции для дальнейшего роста. Это компромисс между «продать всё рано» и «держать до конца».
Логика частичного take profit
Вместо одной цели — несколько уровней фиксации прибыли:
Вход: 1 BTC по $40,000
TP1 (25% позиции): $42,000 → продаём 0.25 BTC, profit $500
TP2 (50% оставшегося): $44,000 → продаём 0.375 BTC, profit $1,500
TP3 (остаток): trailing stop от $44k → продаём 0.375 BTC при срабатывании
После TP1 переносим стоп-лосс в безубыток (break-even). После TP2 — trailing stop.
Расчёт уровней take profit
Fibonacci-based: уровни фиксации на 127.2%, 161.8%, 261.8% от первоначального движения.
R:R based: если стоп $500 (1R), то TP1 = 1R ($500), TP2 = 2R ($1000), TP3 = 3R ($1500).
ATR-based: TP1 = entry + 1.5 × ATR, TP2 = entry + 3 × ATR, TP3 = trailing.
Реализация
class PartialTakeProfit:
def __init__(self, total_qty, take_profit_levels):
"""
take_profit_levels: [(price, pct_of_current), ...]
"""
self.remaining_qty = total_qty
self.levels = take_profit_levels
self.completed_levels = set()
def check_levels(self, current_price):
actions = []
for i, (tp_price, pct) in enumerate(self.levels):
if i not in self.completed_levels and current_price >= tp_price:
sell_qty = self.remaining_qty * pct
self.remaining_qty -= sell_qty
self.completed_levels.add(i)
actions.append({'action': 'partial_close', 'qty': sell_qty, 'price': tp_price})
return actions
Break-even stop после первого TP: при исполнении TP1 переносим стоп-лосс на цену входа. Оставшаяся позиция — «free ride».
Разрабатываем модуль частичного take profit с настраиваемыми уровнями, автоматическим переносом стопа в break-even и опциональным trailing stop для последней части позиции.







