Sobes.tech
Back to questions
Senior
8

Расскажи про интересную задачу — онлайн-блокировка по дневному drawdown

Companies where asked
Flant

Answer from AI

sobes.tech AI

Онлайн-блокировка по дневному drawdown — задача ограничения потерь в реальном времени в торговой системе.

Суть: если за текущий торговый день убыток (drawdown) достигает заданного порога, система блокирует дальнейшие операции, чтобы предотвратить большие потери.

Реализация на Go включает:

  • Отслеживание текущего баланса и максимума за день.
  • Вычисление drawdown как разницы между максимумом и текущим балансом.
  • Механизм блокировки, который срабатывает при достижении лимита.

Пример упрощённой логики:

var maxBalance float64 = 100000
var currentBalance float64 = 100000
var drawdownLimit float64 = 5000

func updateBalance(newBalance float64) bool {
    if newBalance > maxBalance {
        maxBalance = newBalance
    }
    currentBalance = newBalance
    drawdown := maxBalance - currentBalance
    if drawdown >= drawdownLimit {
        return false // блокируем операции
    }
    return true // операции разрешены
}

Такой подход помогает контролировать риски в режиме реального времени и предотвращать значительные убытки.