lib/xtb_client/messages/margin_mode.ex
defmodule XtbClient.Messages.MarginMode do
@moduledoc """
Atoms representing margin mode.
"""
@type t :: :forex | :cfd_leveraged | :cfd | :hundred_and_four
@type margin_code :: 101 | 102 | 103 | 104
@doc """
Parse an integer value as a valid atom for margin mode.
"""
@spec parse(margin_code()) :: t()
def parse(value) when is_number(value) and value in [101, 102, 103, 104] do
parse_margin_mode(value)
end
defp parse_margin_mode(value) do
case value do
101 -> :forex
102 -> :cfd_leveraged
103 -> :cfd
104 -> :hundred_and_four
end
end
end