Max Draw Down Report (multiple positions)

stable
By Firetron in Trading Bots Published April 2020 👁 1,412 views 💬 1 comments

Description

Add this code to your existing script to report max draw down of positions after a back test completes. You will have to supply the trading code and save the position IDs after you open positions.
HaasScript
local maxDrawDownAmount  = Load('maxDrawDownAmount',  0)
local maxDrawDownPercent = Load('maxDrawDownPercent', 0)

local longPositionId  = Load('longPositionId',  '')
local shortPositionId = Load('shortPositionId', '')

local longContainer  = PositionContainer(longPositionId)
local shortContainer = PositionContainer(shortPositionId)

function CheckMaxDrawDown()

  if longPositionId == '' and shortPositionId == '' then
    return
  end

  local longDrawDownAmount   = 0
  local longDrawDownPercent  = 0
  local shortDrawDownAmount  = 0
  local shortDrawDownPercent = 0

  if longPositionId != '' then
    longDrawDownAmount  = longContainer.profit
    longDrawDownPercent = longContainer.roi
  end

  if shortPositionId != '' then
    shortDrawDownAmount  = shortContainer.profit
    shortDrawDownPercent = shortContainer.roi
  end

  maxDrawDownAmount  = ArrayGet(Min(maxDrawDownAmount,  longDrawDownAmount,  shortDrawDownAmount),  1)
  maxDrawDownPercent = ArrayGet(Min(maxDrawDownPercent, longDrawDownPercent, shortDrawDownPercent), 1)

  Save('maxDrawDownAmount',  maxDrawDownAmount)
  Save('maxDrawDownPercent', maxDrawDownPercent)

end

CheckMaxDrawDown()

Finalize(function()
  CustomReport('Max. Draw Down Amount',  maxDrawDownAmount..' '..QuoteCurrency(), 'Draw Down Report')
  CustomReport('Max. Draw Down Percent', maxDrawDownPercent..' %',                'Draw Down Report')
end)

1 Comment

Sign in to leave a comment.

F
Firetron about 6 years ago

Draw Down was an inaccurate term for this. Please use the new one here: https://www.haasscripts.com/t/max-risk-point-report-multiple-positions/