Code Monkey home page Code Monkey logo

Comments (1)

ramosmarco avatar ramosmarco commented on June 2, 2024

I wonder why it's not included, but you can create your own class adding the stop_price argument into the place_stop_order method, here is an example. Be aware that I didn't test it.

from cbpro import AuthenticatedClient


class MyAuthenticatedClient(AuthenticatedClient):
    def place_stop_order(self, product_id, stop_type, price, size=None, funds=None,
                         client_oid=None,
                         stp=None,
                         overdraft_enabled=None,
                         funding_amount=None,
                         stop_price=None):
        """ Place stop order.
        Args:
            product_id (str): Product to order (eg. 'BTC-USD')
            stop_type(str): Stop type ('entry' or 'loss')
                      loss: Triggers when the last trade price changes to a value at or below the stop_price.
                      entry: Triggers when the last trade price changes to a value at or above the stop_price
            price (Decimal): Desired price at which the stop order triggers.
            size (Optional[Decimal]): Desired amount in crypto. Specify this or
                `funds`.
            funds (Optional[Decimal]): Desired amount of quote currency to use.
                Specify this or `size`.
            client_oid (Optional[str]): User-specified Order ID
            stp (Optional[str]): Self-trade prevention flag. See `place_order`
                for details.
            overdraft_enabled (Optional[bool]): If true funding above and
                beyond the account balance will be provided by margin, as
                necessary.
            funding_amount (Optional[Decimal]): Amount of margin funding to be
                provided for the order. Mutually exclusive with
                `overdraft_enabled`.
        Returns:
            dict: Order details. See `place_order` for example.
        """

        if stop_type == 'loss':
            side = 'sell'
        elif stop_type == 'entry':
            side = 'buy'
        else:
            raise ValueError('Invalid stop_type for stop order: ' + stop_type)

        # If not receive the stop_price use price
        if not bool(stop_price):
            stop_price = price

        params = {'product_id': product_id,
                  'side': side,
                  'price': price,
                  'order_type': None,
                  'stop': stop_type,
                  'stop_price': stop_price,
                  'size': size,
                  'funds': funds,
                  'client_oid': client_oid,
                  'stp': stp,
                  'overdraft_enabled': overdraft_enabled,
                  'funding_amount': funding_amount}
        params = dict((k, v) for k, v in params.items() if v is not None)

        return self.place_order(**params)

from coinbasepro-python.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.