def order_buy_crypto_by_price(symbol, amountInDollars, priceType='ask_price', timeInForce='gtc'): """Submits a market order for a crypto by specifying the amount in dollars that you want to trade. Good for share fractions up to 8 decimal places. :param symbol: The crypto ticker of the crypto to trade. :type symbol: str :param amountInDollars: The amount in dollars of the crypto you want to buy. :type amountInDollars: float :param priceType: The type of price to get. Can be 'ask_price', 'bid_price', or 'mark_price' :type priceType: str :param timeInForce: Changes how long the order will be in effect for. 'gtc' = good until cancelled. \ 'gfd' = good for the day. 'ioc' = immediate or cancel. 'opg' execute at opening. :type timeInForce: Optional[str] :returns: Dictionary that contains information regarding the selling of options, \ such as the order id, the state of order (queued,confired,filled, failed, canceled, etc.), \ the price, and the quantity. """ try: symbol = symbol.upper().strip() except AttributeError as message: print(message) return None crypto_info = crypto.get_crypto_info(symbol) price = round( float( crypto.get_crypto_quote_from_id(crypto_info['id'], info=priceType)), 8) # turn the money amount into decimal number of shares try: shares = round(amountInDollars / float(price), 8) except: shares = 0 payload = { 'mimeType': 'application/json', 'account_id': crypto.load_crypto_profile(info="id"), 'currency_pair_id': crypto_info['id'], 'price': price, 'quantity': shares, 'ref_id': str(uuid4()), 'side': 'buy', 'time_in_force': timeInForce, 'type': 'market' } url = urls.order_crypto() data = helper.request_post(url, payload, json=True) return (data)
def order_sell_crypto_limit(symbol, quantity, price, timeInForce='gtc'): """Submits a limit order for a crypto by specifying the decimal amount of shares to sell. Good for share fractions up to 8 decimal places. :param symbol: The crypto ticker of the crypto to trade. :type symbol: str :param quantity: The decimal amount of shares to sell. :type quantity: float :param price: The limit price to set for the crypto. :type price: float :param timeInForce: Changes how long the order will be in effect for. 'gtc' = good until cancelled. \ 'gfd' = good for the day. 'ioc' = immediate or cancel. 'opg' execute at opening. :type timeInForce: Optional[str] :returns: Dictionary that contains information regarding the selling of crypto, \ such as the order id, the state of order (queued, confired, filled, failed, canceled, etc.), \ the price, and the quantity. """ try: symbol = symbol.upper().strip() except AttributeError as message: print(message) return None crypto_info = crypto.get_crypto_info(symbol) if crypto_info['display_only']: print( "WARNING: The dictionary returned by crypto.get_crypto_info() for this crypto has key 'display_only' set to True. May not be able to trade this crypto." ) payload = { 'account_id': crypto.load_crypto_profile(info="id"), 'currency_pair_id': crypto_info['id'], 'price': price, 'quantity': quantity, 'ref_id': str(uuid4()), 'side': 'sell', 'time_in_force': timeInForce, 'type': 'limit' } url = urls.order_crypto() data = helper.request_post(url, payload, json=True) return (data)
def order_sell_crypto_by_quantity(symbol, quantity, priceType='ask_price', timeInForce='gtc'): """Submits a market order for a crypto by specifying the decimal amount of shares to buy. Good for share fractions up to 8 decimal places. :param symbol: The crypto ticker of the crypto to trade. :type symbol: str :param quantity: The decimal amount of shares to sell. :type quantity: float :param priceType: The type of price to get. Can be 'ask_price', 'bid_price', or 'mark_price' :type priceType: str :param timeInForce: Changes how long the order will be in effect for. 'gtc' = good until cancelled. \ 'gfd' = good for the day. 'ioc' = immediate or cancel. 'opg' execute at opening. :type timeInForce: Optional[str] :returns: Dictionary that contains information regarding the selling of options, \ such as the order id, the state of order (queued,confired,filled, failed, canceled, etc.), \ the price, and the quantity. """ crypto_info = crypto.get_crypto_info(symbol) price = round( float( crypto.get_crypto_quote_from_id(crypto_info['id'], info=priceType)), 8) print("pice is ", price) payload = { 'account_id': crypto.load_crypto_profile(info="id"), 'currency_pair_id': crypto_info['id'], 'price': price, 'quantity': quantity, 'ref_id': str(uuid4()), 'side': 'sell', 'time_in_force': timeInForce, 'type': 'market' } url = urls.order_crypto() data = helper.request_post(url, payload, json=True) return (data)