def withdraw(self, currency, amount, address):
        """Withdraw a major currency from QuadrigaCX to the given wallet.

        :param currency: Major currency name in lowercase (e.g. "btc", "eth").
        :type currency: str | unicode
        :param amount: Withdrawal amount.
        :type amount: int | float | str | unicode | decimal.Decimal
        :param address: Wallet address.
        :type address: str | unicode

        .. warning::
            Specifying incorrect major currency or wallet address could result
            in permanent loss of your coins. Please be careful when using this
            method!
        """
        self._validate_currency(currency)
        self._log('withdraw {} {} to {}'.format(amount, currency, address))
        coin_name = self.major_currencies[currency]
        return self._rest_client.post(
            endpoint='/{}_withdrawal'.format(coin_name)
        )