kite-order


Namekite-order JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryA Python module for placing bracket orders with Zerodha's KiteConnect API, featuring authentication, dashboard, Google Sheets integration, and customizable logging.
upload_time2025-08-28 12:35:26
maintainerNone
docs_urlNone
authorNone
requires_python>=3.6
licenseMIT
keywords zerodha kiteconnect trading bracket-orders api google-sheets
VCS
bugtrack_url
requirements kiteconnect gspread oauth2client colorama
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Kite Bracket Orders

A Python module for placing bracket orders with Zerodha's KiteConnect API. It includes features like automated authentication, a dashboard for viewing margins/holdings/positions/orders, Google Sheets integration for trade plans, customizable logging, and market hour checks with AMO (After Market Order) support.

## Features
- **Bracket Order Placement**: Place entry orders with target and stop-loss, including monitoring and modification.
- **Authentication**: Automatic login with dependency installation, config management, and session token handling.
- **Dashboard**: View account margins, holdings, positions, and recent orders in a clean terminal format.
- **Google Sheets Integration**: Load trade plans from a specified sheet for easy data-driven trading.
- **Logging Toggle**: Enable/disable logging to file with a simple flag (no impact on terminal output when disabled).
- **Market Checks**: Detects closed markets/weekends and prompts for AMO orders.


### Dependencies
- kiteconnect
- gspread
- oauth2client
- colorama

These are automatically installed via pip.

## Usage

1. **Setup Credentials**:
   - Create `credentials/config.json` with your Kite API details.
   - Create `credentials/credentials.json` with your Google Service Account key.

2. **Run the Script** (example in order.py):

        # pip install --upgrade kite-order

        from kite_bracket_orders import BracketOrderPlacer, KiteDashboard, safe_print, login, pip_upgrade, pip_install

        order_data = {
            "segment"               : "NSE"     ,           # "NSE" or "NFO"
            "product_type"          : "MIS"     ,           # "MIS" or "CNC" or "NRML"
            "side"                  : "BUY"    ,           # "BUY" or "SELL"
            "entry_order_type"      : "LIMIT"   ,           # "LIMIT" or "MARKET"
            "sl_type"               : "SL-M"    ,           # choose: "SL" or "SL-M"

            "symbol"                : "IDEA"    ,           # e.g. "IDEA", "RELIANCE", or "NIFTY24JUL20000CE"
            "quantity"              : 1         ,           # Must match lot size for options; 1+ for stocks
            "entry_price"           : 7.34      ,           # Only used if LIMIT order
            "target_price"          : 7.45      ,
            "stop_loss_trigger"     : 7.28      ,
            "stop_loss_limit"       : 7.27                  # only used if SL (not SL-M)
        }

        if __name__ == "__main__":
            # pip_install()  # Optional: Uncomment if you want to auto-install packages

            enable_logging = True  # True or False Enable/disable logging

            while True:
                safe_print("\nšŸ“Š  Select an option:")
                safe_print("━" * 30)
                safe_print("1. šŸ”  Kite Login")
                safe_print("2. šŸ“ˆ  Show Dashboard")
                safe_print("3. šŸ›’  Place Order")
                safe_print("4. šŸ›’  Entry Order track")
                safe_print("5. šŸ›’  SL/target Order track")
                safe_print("6. šŸ› ļø   pip Upgrade")
                safe_print("7. āŒ  Exit")


                choice = input("\nšŸ‘‰ Select an option (1-7): ")


                if choice == "1":
                    login()
                elif choice == "2":
                    dash = KiteDashboard()
                    dash.show_all()
                elif choice == "3":
                    placer = BracketOrderPlacer(code_data=order_data, enable_logging=enable_logging)
                    placer.load_kite_login_name_show()
                    placer.place_bracket_order()
                elif choice == "4":
                    placer = BracketOrderPlacer(code_data=order_data, enable_logging=enable_logging)
                    placer.load_kite_login_name_show()
                    safe_print("\nšŸ“‹ Enter Entry Order Details:")
                    entry_order_id = input("šŸ”¢ Entry Order ID: ").strip()
                    target_price = float(input("šŸŽÆ Target Price: "))
                    stop_loss_trigger = float(input("šŸ›‘ Stop Loss Trigger Price: "))
                    sl_type = input("šŸ›‘ Stop Loss Type (SL or SL-M): ").strip().upper()
                    stop_loss_limit = float(input("šŸ›‘ Stop Loss Limit Price (if SL, else enter 0): ")) if sl_type == "SL" else 0
                    placer.track_entry_order(entry_order_id, target_price, stop_loss_trigger, stop_loss_limit, sl_type)
                elif choice == "5":
                    placer = BracketOrderPlacer(code_data=order_data, enable_logging=enable_logging)
                    placer.load_kite_login_name_show()
                    safe_print("\nšŸ“‹ Enter SL/Target Order Details:")
                    target_order_id = input("šŸŽÆ Target Order ID: ").strip()
                    sl_order_id = input("šŸ›‘ Stop Loss Order ID: ").strip()
                    placer.track_sl_target_orders(target_order_id, sl_order_id)
                elif choice == "6":
                    pip_upgrade()
                elif choice == "7":
                    safe_print("\nšŸ‘‹ Exiting... Have a profitable day!")
                    break
                else:
                    safe_print("ā— Invalid option. Please try again.")


3. **Run**:
python order.py

## Configuration
- **config.json**: Stores Kite API_KEY and ACCESS_TOKEN.
- **credentials.json**: Google Sheets auth.
- **Logging**: Set `enable_logging=False` to disable log files.

## License
MIT License. See LICENSE for details.

## Contributing
Fork the repo and submit a pull request. Issues and feature requests are welcome!

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "kite-order",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "zerodha, kiteconnect, trading, bracket-orders, api, google-sheets",
    "author": null,
    "author_email": "Prasad <mr.xprasadx@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/b6/20/5d5888195c91d7cf58fd6fafd54b9f3053ed409ac9eb5a1c58e8beca0047/kite_order-0.2.0.tar.gz",
    "platform": null,
    "description": "# Kite Bracket Orders\r\n\r\nA Python module for placing bracket orders with Zerodha's KiteConnect API. It includes features like automated authentication, a dashboard for viewing margins/holdings/positions/orders, Google Sheets integration for trade plans, customizable logging, and market hour checks with AMO (After Market Order) support.\r\n\r\n## Features\r\n- **Bracket Order Placement**: Place entry orders with target and stop-loss, including monitoring and modification.\r\n- **Authentication**: Automatic login with dependency installation, config management, and session token handling.\r\n- **Dashboard**: View account margins, holdings, positions, and recent orders in a clean terminal format.\r\n- **Google Sheets Integration**: Load trade plans from a specified sheet for easy data-driven trading.\r\n- **Logging Toggle**: Enable/disable logging to file with a simple flag (no impact on terminal output when disabled).\r\n- **Market Checks**: Detects closed markets/weekends and prompts for AMO orders.\r\n\r\n\r\n### Dependencies\r\n- kiteconnect\r\n- gspread\r\n- oauth2client\r\n- colorama\r\n\r\nThese are automatically installed via pip.\r\n\r\n## Usage\r\n\r\n1. **Setup Credentials**:\r\n   - Create `credentials/config.json` with your Kite API details.\r\n   - Create `credentials/credentials.json` with your Google Service Account key.\r\n\r\n2. **Run the Script** (example in order.py):\r\n\r\n        # pip install --upgrade kite-order\r\n\r\n        from kite_bracket_orders import BracketOrderPlacer, KiteDashboard, safe_print, login, pip_upgrade, pip_install\r\n\r\n        order_data = {\r\n            \"segment\"               : \"NSE\"     ,           # \"NSE\" or \"NFO\"\r\n            \"product_type\"          : \"MIS\"     ,           # \"MIS\" or \"CNC\" or \"NRML\"\r\n            \"side\"                  : \"BUY\"    ,           # \"BUY\" or \"SELL\"\r\n            \"entry_order_type\"      : \"LIMIT\"   ,           # \"LIMIT\" or \"MARKET\"\r\n            \"sl_type\"               : \"SL-M\"    ,           # choose: \"SL\" or \"SL-M\"\r\n\r\n            \"symbol\"                : \"IDEA\"    ,           # e.g. \"IDEA\", \"RELIANCE\", or \"NIFTY24JUL20000CE\"\r\n            \"quantity\"              : 1         ,           # Must match lot size for options; 1+ for stocks\r\n            \"entry_price\"           : 7.34      ,           # Only used if LIMIT order\r\n            \"target_price\"          : 7.45      ,\r\n            \"stop_loss_trigger\"     : 7.28      ,\r\n            \"stop_loss_limit\"       : 7.27                  # only used if SL (not SL-M)\r\n        }\r\n\r\n        if __name__ == \"__main__\":\r\n            # pip_install()  # Optional: Uncomment if you want to auto-install packages\r\n\r\n            enable_logging = True  # True or False Enable/disable logging\r\n\r\n            while True:\r\n                safe_print(\"\\n\ud83d\udcca  Select an option:\")\r\n                safe_print(\"\u2501\" * 30)\r\n                safe_print(\"1. \ud83d\udd10  Kite Login\")\r\n                safe_print(\"2. \ud83d\udcc8  Show Dashboard\")\r\n                safe_print(\"3. \ud83d\uded2  Place Order\")\r\n                safe_print(\"4. \ud83d\uded2  Entry Order track\")\r\n                safe_print(\"5. \ud83d\uded2  SL/target Order track\")\r\n                safe_print(\"6. \ud83d\udee0\ufe0f   pip Upgrade\")\r\n                safe_print(\"7. \u274c  Exit\")\r\n\r\n\r\n                choice = input(\"\\n\ud83d\udc49 Select an option (1-7): \")\r\n\r\n\r\n                if choice == \"1\":\r\n                    login()\r\n                elif choice == \"2\":\r\n                    dash = KiteDashboard()\r\n                    dash.show_all()\r\n                elif choice == \"3\":\r\n                    placer = BracketOrderPlacer(code_data=order_data, enable_logging=enable_logging)\r\n                    placer.load_kite_login_name_show()\r\n                    placer.place_bracket_order()\r\n                elif choice == \"4\":\r\n                    placer = BracketOrderPlacer(code_data=order_data, enable_logging=enable_logging)\r\n                    placer.load_kite_login_name_show()\r\n                    safe_print(\"\\n\ud83d\udccb Enter Entry Order Details:\")\r\n                    entry_order_id = input(\"\ud83d\udd22 Entry Order ID: \").strip()\r\n                    target_price = float(input(\"\ud83c\udfaf Target Price: \"))\r\n                    stop_loss_trigger = float(input(\"\ud83d\uded1 Stop Loss Trigger Price: \"))\r\n                    sl_type = input(\"\ud83d\uded1 Stop Loss Type (SL or SL-M): \").strip().upper()\r\n                    stop_loss_limit = float(input(\"\ud83d\uded1 Stop Loss Limit Price (if SL, else enter 0): \")) if sl_type == \"SL\" else 0\r\n                    placer.track_entry_order(entry_order_id, target_price, stop_loss_trigger, stop_loss_limit, sl_type)\r\n                elif choice == \"5\":\r\n                    placer = BracketOrderPlacer(code_data=order_data, enable_logging=enable_logging)\r\n                    placer.load_kite_login_name_show()\r\n                    safe_print(\"\\n\ud83d\udccb Enter SL/Target Order Details:\")\r\n                    target_order_id = input(\"\ud83c\udfaf Target Order ID: \").strip()\r\n                    sl_order_id = input(\"\ud83d\uded1 Stop Loss Order ID: \").strip()\r\n                    placer.track_sl_target_orders(target_order_id, sl_order_id)\r\n                elif choice == \"6\":\r\n                    pip_upgrade()\r\n                elif choice == \"7\":\r\n                    safe_print(\"\\n\ud83d\udc4b Exiting... Have a profitable day!\")\r\n                    break\r\n                else:\r\n                    safe_print(\"\u2757 Invalid option. Please try again.\")\r\n\r\n\r\n3. **Run**:\r\npython order.py\r\n\r\n## Configuration\r\n- **config.json**: Stores Kite API_KEY and ACCESS_TOKEN.\r\n- **credentials.json**: Google Sheets auth.\r\n- **Logging**: Set `enable_logging=False` to disable log files.\r\n\r\n## License\r\nMIT License. See LICENSE for details.\r\n\r\n## Contributing\r\nFork the repo and submit a pull request. Issues and feature requests are welcome!\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A Python module for placing bracket orders with Zerodha's KiteConnect API, featuring authentication, dashboard, Google Sheets integration, and customizable logging.",
    "version": "0.2.0",
    "project_urls": {
        "Repository": "https://github.com/Prasad1612/kite_bracket_orders"
    },
    "split_keywords": [
        "zerodha",
        " kiteconnect",
        " trading",
        " bracket-orders",
        " api",
        " google-sheets"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d8e238a77625e3a9e2f28baf3b612c6b9156b6f74a018a78fbd64bac37156d9b",
                "md5": "da298f5f54b0b7bcf45359990de7a612",
                "sha256": "8bde873630809f203f4c6f87cd0e8b659c9c00def363848628c7055392a79a2e"
            },
            "downloads": -1,
            "filename": "kite_order-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "da298f5f54b0b7bcf45359990de7a612",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 15940,
            "upload_time": "2025-08-28T12:35:24",
            "upload_time_iso_8601": "2025-08-28T12:35:24.428500Z",
            "url": "https://files.pythonhosted.org/packages/d8/e2/38a77625e3a9e2f28baf3b612c6b9156b6f74a018a78fbd64bac37156d9b/kite_order-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b6205d5888195c91d7cf58fd6fafd54b9f3053ed409ac9eb5a1c58e8beca0047",
                "md5": "d6128014f4c48466b4729cfa4720a9d5",
                "sha256": "ce7a9e1f21985fe53231120bf1820d8d63cd6b79b1b1cb20a500c0b3e8186c6a"
            },
            "downloads": -1,
            "filename": "kite_order-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "d6128014f4c48466b4729cfa4720a9d5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 14535,
            "upload_time": "2025-08-28T12:35:26",
            "upload_time_iso_8601": "2025-08-28T12:35:26.028964Z",
            "url": "https://files.pythonhosted.org/packages/b6/20/5d5888195c91d7cf58fd6fafd54b9f3053ed409ac9eb5a1c58e8beca0047/kite_order-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-28 12:35:26",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Prasad1612",
    "github_project": "kite_bracket_orders",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "kiteconnect",
            "specs": []
        },
        {
            "name": "gspread",
            "specs": []
        },
        {
            "name": "oauth2client",
            "specs": []
        },
        {
            "name": "colorama",
            "specs": []
        }
    ],
    "lcname": "kite-order"
}
        
Elapsed time: 1.00638s