webull-openapi-python-sdk 2.0.19__tar.gz → 3.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/PKG-INFO +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/screener/screener_client.py +55 -2
- webull_openapi_python_sdk-3.0.0/webull/__init__.py +1 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/__init__.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/config/bean/query_config_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/token/bean/check_token_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/token/bean/create_token_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/token/bean/refresh_token_request.py +1 -1
- webull_openapi_python_sdk-3.0.0/webull/data/__init__.py +3 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/fundamentals.py +19 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/instrument.py +148 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/screener.py +179 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_analyst_rating_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_analyst_target_price_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_batch_historical_bars_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_capital_flow_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_company_profile_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_corp_action_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_crypto_historical_bars_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_crypto_instruments_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/data/request/get_crypto_instruments_request_v2.py +41 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_crypto_snapshot_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_dividend_calendar_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_earnings_calendar_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_eod_bars_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_event_bars_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_event_depth_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_event_events_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_event_instrument_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/data/request/get_event_instrument_request_v2.py +45 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_event_series_categories.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_event_series_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/data/request/get_event_series_request_v2.py +37 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_event_snapshot_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_event_tick_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_financials_alert_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_financials_balance_sheet_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_financials_cashflow_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_financials_income_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_financials_indicators_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_footprint_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_forecast_eps_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_fund_allocation_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_fund_brief_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_fund_dividends_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/data/request/get_fund_dividends_request_v2.py +35 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_fund_files_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_fund_holdings_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_fund_net_value_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_fund_performance_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_fund_rating_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_fund_splits_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_futures_depth_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_futures_footprint_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_futures_historical_bars_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_futures_instruments_by_code_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_futures_instruments_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_futures_product_class.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_futures_products_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_futures_snapshot_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_futures_tick_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_historical_bars_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_industry_comparison_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_instruments_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/data/request/get_instruments_request_v2.py +44 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_noii_bars_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_noii_snapshot_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_option_bars_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_option_contracts_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/data/request/get_option_contracts_request_v2.py +78 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_option_snapshot_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_option_tick_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_quotes_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_sec_filings_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_snapshot_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/get_tick_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/screener/get_52whl_request.py +4 -0
- webull_openapi_python_sdk-3.0.0/webull/data/request/screener/get_52whl_request_v2.py +45 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/screener/get_gainers_losers_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/data/request/screener/get_gainers_losers_request_v2.py +94 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/screener/get_high_dividend_request.py +4 -0
- webull_openapi_python_sdk-3.0.0/webull/data/request/screener/get_high_dividend_request_v2.py +41 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/screener/get_market_sectors_detail_request.py +4 -0
- webull_openapi_python_sdk-3.0.0/webull/data/request/screener/get_market_sectors_detail_request_v2.py +47 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/screener/get_market_sectors_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/data/request/screener/get_market_sectors_request_v2.py +43 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/screener/get_most_active_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/data/request/screener/get_most_active_request_v2.py +92 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/subscribe_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/unsubscribe_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/watchlist/add_watchlist_instruments_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/watchlist/create_watchlist_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/watchlist/delete_watchlist_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/watchlist/get_watchlist_instruments_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/watchlist/get_watchlist_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/watchlist/remove_watchlist_instruments_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/watchlist/update_watchlist_instruments_request.py +2 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/watchlist/update_watchlist_request.py +1 -1
- webull_openapi_python_sdk-3.0.0/webull/trade/__init__.py +1 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/cancel_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_account_balance_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_account_positions_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_account_profile_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_activities_request.py +4 -0
- webull_openapi_python_sdk-3.0.0/webull/trade/request/get_activities_request_v2.py +41 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_app_subscriptions.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_open_orders_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_order_detail_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_today_orders_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_trade_calendar_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_trade_instrument_detail_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_trade_security_detail_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/get_tradeable_instruments_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/palce_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/place_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/place_order_request_v2.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/replace_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/replace_order_request_v2.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/cancel_option_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/cancel_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/get_account_balance_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/get_account_list.py +1 -3
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/get_account_list_request.py +1 -3
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/get_account_position_details_request.py +4 -0
- webull_openapi_python_sdk-3.0.0/webull/trade/request/v2/get_account_position_details_request_v2.py +31 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/get_account_positions_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/get_order_detail_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/get_order_executions_request.py +5 -0
- webull_openapi_python_sdk-3.0.0/webull/trade/request/v2/get_order_executions_request_v2.py +35 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/get_order_history_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/get_order_open_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/palce_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/place_option_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/place_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/preview_option_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/preview_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/replace_option_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/replace_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v3/batch_place_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v3/cancel_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v3/get_order_detail_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v3/get_order_history_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/trade/request/v3/get_order_history_request_v2.py +35 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v3/get_order_open_request.py +5 -1
- webull_openapi_python_sdk-3.0.0/webull/trade/request/v3/get_order_open_request_v2.py +27 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v3/place_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v3/preview_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v3/replace_order_request.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade/activity.py +33 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade/v2/account_info_v2.py +24 -0
- webull_openapi_python_sdk-2.0.19/webull/trade/trade/v3/order_opration_v3.py → webull_openapi_python_sdk-3.0.0/webull/trade/trade/v3/order_operation_v3.py +94 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade_client.py +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull_openapi_python_sdk.egg-info/PKG-INFO +1 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull_openapi_python_sdk.egg-info/SOURCES.txt +18 -1
- webull_openapi_python_sdk-2.0.19/webull/__init__.py +0 -1
- webull_openapi_python_sdk-2.0.19/webull/data/__init__.py +0 -3
- webull_openapi_python_sdk-2.0.19/webull/trade/__init__.py +0 -1
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/ChangeLog.txt +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/LICENSE +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/MANIFEST.in +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/NOTICE +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/README.rst +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/account/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/account/account_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/assets/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/assets/assets_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/data/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/data/data_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/data/data_client_event.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/data/data_streaming_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/data/data_streaming_client_async.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/data/data_streaming_client_event.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/order/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/order/order_option_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/order/order_stock_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/screener/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/trade/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/trade/trade_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/trade/trade_client_v2.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/trade/trade_client_v3.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/trade/trade_client_v3_event.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/trade/trade_event_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/watchlist/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/samples/watchlist/watchlist_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/setup.cfg +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/setup.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/algorithm/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/algorithm/sha_hmac1.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/algorithm/sha_hmac256.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/algorithm/sha_hmac256_new.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/composer/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/composer/default_signature_composer.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/credentials.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/signers/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/signers/app_key_signer.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/signers/signer.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/auth/signers/signer_factory.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/cache/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/common/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/common/api_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/common/easy_enum.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/common/region.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/compat.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/context/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/context/request_context_holder.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/data/endpoints.json +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/data/retry_config.json +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/endpoint/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/endpoint/chained_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/endpoint/default_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/endpoint/local_config_regional_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/endpoint/resolver_endpoint_request.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/endpoint/user_customized_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/exception/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/exception/error_code.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/exception/error_msg.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/exception/exceptions.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/headers.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/client_initializer.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/config/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/config/bean/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/config/config_operation.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/token/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/token/bean/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/token/bean/access_token.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/token/token_manager.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/token/token_operation.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/initializer/token/token_storage.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/method_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/protocol_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/request.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/http/response.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/request.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/retry/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/retry/backoff_strategy.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/retry/retry_condition.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/retry/retry_policy.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/retry/retry_policy_context.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/utils/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/utils/common.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/utils/data.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/utils/desensitize.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/core/utils/validation.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/category.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/connect_ack.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/contract_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/direction.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/exchange_code.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/exercise_style.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/expiration_cycle.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/instrument_status.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/option_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/subscribe_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/common/timespan.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/data_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/data_streaming_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/internal/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/internal/default_retry_policy.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/internal/exceptions.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/internal/quotes_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/internal/quotes_decoder.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/internal/quotes_payload_decoder.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/internal/quotes_topic.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/crypto_market_data.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/event_market_data.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/futures_market_data.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/market_data.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/market_streaming_data.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/option_market_data.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/ask_bid_result.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/basic_result.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/broker_result.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/event_depth_decoder.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/event_depth_result.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/event_snapshot_decoder.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/event_snapshot_result.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/event_tick_decoder.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/event_tick_result.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/message_pb2.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/notice_decoder.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/order_result.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/payload_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/quote_decoder.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/quote_result.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/snapshot_decoder.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/snapshot_result.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/tick_decoder.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/subscribe/tick_result.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/watchlist.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/screener/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/request/watchlist/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/account_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/category.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/combo_ticker_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/combo_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/currency.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/forbid_reason.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/instrument_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/markets.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/order_entrust_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/order_side.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/order_status.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/order_tif.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/order_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/position_intent.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/trade_policy.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/trading_date_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/common/trailing_type.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/events/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/events/default_retry_policy.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/events/events_pb2.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/events/events_pb2_grpc.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/events/signature_composer.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/events/types.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v2/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/request/v3/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade/account_info.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade/order_operation.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade/trade_calendar.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade/trade_instrument.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade/v2/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade/v2/order_operation_v2.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade/v3/__init__.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/trade/trade_events_client.py +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull_openapi_python_sdk.egg-info/dependency_links.txt +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull_openapi_python_sdk.egg-info/requires.txt +0 -0
- {webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull_openapi_python_sdk.egg-info/top_level.txt +0 -0
|
@@ -98,8 +98,8 @@ if __name__ == '__main__':
|
|
|
98
98
|
# Get most active stocks by turnover amount
|
|
99
99
|
res = data_client.screener.get_most_active(
|
|
100
100
|
category="US_STOCK",
|
|
101
|
-
rank_type="
|
|
102
|
-
sort_by="
|
|
101
|
+
rank_type="RELATIVE_VOLUME_10D",
|
|
102
|
+
sort_by="RELATIVE_VOLUME_10D",
|
|
103
103
|
direction="DESC",
|
|
104
104
|
page_size=10
|
|
105
105
|
)
|
|
@@ -116,3 +116,56 @@ if __name__ == '__main__':
|
|
|
116
116
|
)
|
|
117
117
|
if res.status_code == 200:
|
|
118
118
|
print('get_high_amplitude_stocks:', res.json())
|
|
119
|
+
|
|
120
|
+
# ------------------------------------------------------------------
|
|
121
|
+
# New endpoints. These rankings are not paginated and return top 200.
|
|
122
|
+
# ------------------------------------------------------------------
|
|
123
|
+
|
|
124
|
+
# Get top gainers for today (new endpoint, no pagination)
|
|
125
|
+
res = data_client.screener.list_gainers_losers(
|
|
126
|
+
rank_type="DAY_1",
|
|
127
|
+
category="US_STOCK",
|
|
128
|
+
sort_by="CHANGE_RATIO",
|
|
129
|
+
direction="DESC"
|
|
130
|
+
)
|
|
131
|
+
if res.status_code == 200:
|
|
132
|
+
print('list_gainers (day):', res.json())
|
|
133
|
+
|
|
134
|
+
# Get top losers for today (new endpoint, no pagination)
|
|
135
|
+
res = data_client.screener.list_gainers_losers(
|
|
136
|
+
rank_type="DAY_1",
|
|
137
|
+
category="US_STOCK",
|
|
138
|
+
sort_by="CHANGE_RATIO",
|
|
139
|
+
direction="ASC"
|
|
140
|
+
)
|
|
141
|
+
if res.status_code == 200:
|
|
142
|
+
print('list_losers (day):', res.json())
|
|
143
|
+
|
|
144
|
+
# Get most active stocks by volume (new endpoint, no pagination)
|
|
145
|
+
res = data_client.screener.list_most_active(
|
|
146
|
+
category="US_STOCK",
|
|
147
|
+
rank_type="VOLUME",
|
|
148
|
+
sort_by="VOLUME",
|
|
149
|
+
direction="DESC"
|
|
150
|
+
)
|
|
151
|
+
if res.status_code == 200:
|
|
152
|
+
print('list_most_active_by_volume:', res.json())
|
|
153
|
+
|
|
154
|
+
# Get high dividend rank list (new endpoint, no pagination)
|
|
155
|
+
res = data_client.screener.list_high_dividend(
|
|
156
|
+
category="US_STOCK",
|
|
157
|
+
sort_by="YIELD",
|
|
158
|
+
direction="DESC"
|
|
159
|
+
)
|
|
160
|
+
if res.status_code == 200:
|
|
161
|
+
print('list_high_dividend:', res.json())
|
|
162
|
+
|
|
163
|
+
# Get 52 week new highs (new endpoint, no pagination)
|
|
164
|
+
res = data_client.screener.list_52whl(
|
|
165
|
+
category="US_STOCK",
|
|
166
|
+
rank_type="NEW_HIGH",
|
|
167
|
+
sort_by="CHANGE_RATIO_52W",
|
|
168
|
+
direction="DESC"
|
|
169
|
+
)
|
|
170
|
+
if res.status_code == 200:
|
|
171
|
+
print('list_52whl_new_high:', res.json())
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '3.0.0'
|
|
@@ -38,4 +38,4 @@ from webull.core.request import ApiRequest
|
|
|
38
38
|
|
|
39
39
|
class GetConfigRequest(ApiRequest):
|
|
40
40
|
def __init__(self):
|
|
41
|
-
super().__init__("/openapi/config", version='
|
|
41
|
+
super().__init__("/openapi/config", version='v3', method="GET", query_params={})
|
|
@@ -38,7 +38,7 @@ from webull.core.request import ApiRequest
|
|
|
38
38
|
|
|
39
39
|
class CheckTokenRequest(ApiRequest):
|
|
40
40
|
def __init__(self):
|
|
41
|
-
super().__init__("/
|
|
41
|
+
super().__init__("/auth/tokens/check", version='v3', method="POST", body_params={})
|
|
42
42
|
|
|
43
43
|
def set_token(self, token):
|
|
44
44
|
self.add_body_params("token", token)
|
|
@@ -38,7 +38,7 @@ from webull.core.request import ApiRequest
|
|
|
38
38
|
|
|
39
39
|
class CreateTokenRequest(ApiRequest):
|
|
40
40
|
def __init__(self):
|
|
41
|
-
super().__init__("/
|
|
41
|
+
super().__init__("/auth/tokens/create", version='v3', method="POST", body_params={})
|
|
42
42
|
|
|
43
43
|
def set_token(self, token):
|
|
44
44
|
if token:
|
|
@@ -38,7 +38,7 @@ from webull.core.request import ApiRequest
|
|
|
38
38
|
|
|
39
39
|
class RefreshTokenRequest(ApiRequest):
|
|
40
40
|
def __init__(self):
|
|
41
|
-
super().__init__("/openapi/auth/token/refresh", version='
|
|
41
|
+
super().__init__("/openapi/auth/token/refresh", version='v3', method="POST", body_params={})
|
|
42
42
|
|
|
43
43
|
def set_token(self, token):
|
|
44
44
|
self.add_body_params("token", token)
|
|
@@ -27,6 +27,7 @@ from webull.data.request.get_fund_net_value_request import GetFundNetValueReques
|
|
|
27
27
|
from webull.data.request.get_fund_holdings_request import GetFundHoldingsRequest
|
|
28
28
|
from webull.data.request.get_fund_files_request import GetFundFilesRequest
|
|
29
29
|
from webull.data.request.get_fund_dividends_request import GetFundDividendsRequest
|
|
30
|
+
from webull.data.request.get_fund_dividends_request_v2 import GetFundDividendsRequestV2
|
|
30
31
|
from webull.data.request.get_fund_brief_request import GetFundBriefRequest
|
|
31
32
|
from webull.data.request.get_fund_allocation_request import GetFundAllocationRequest
|
|
32
33
|
from webull.data.request.get_financials_indicators_request import GetFinancialsIndicatorsRequest
|
|
@@ -197,6 +198,9 @@ class Fundamentals:
|
|
|
197
198
|
|
|
198
199
|
def get_fund_dividends(self, symbol, category=Category.US_STOCK.name, page_index=None, page_size=None):
|
|
199
200
|
"""
|
|
201
|
+
.. deprecated::
|
|
202
|
+
Use :meth:`list_fund_dividends` instead.
|
|
203
|
+
|
|
200
204
|
Query fund dividends for a security.
|
|
201
205
|
|
|
202
206
|
:param symbol: Security symbol, e.g. QQQ.
|
|
@@ -212,6 +216,21 @@ class Fundamentals:
|
|
|
212
216
|
response = self.client.get_response(request)
|
|
213
217
|
return response
|
|
214
218
|
|
|
219
|
+
def list_fund_dividends(self, symbol, category=Category.US_STOCK.name, pagination_key=None):
|
|
220
|
+
"""
|
|
221
|
+
Query fund dividends for a security.
|
|
222
|
+
|
|
223
|
+
:param symbol: Security symbol, e.g. QQQ.
|
|
224
|
+
:param category: Security type. Category values are as shown in the enum.
|
|
225
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
226
|
+
"""
|
|
227
|
+
request = GetFundDividendsRequestV2()
|
|
228
|
+
request.set_symbol(symbol)
|
|
229
|
+
request.set_category(category)
|
|
230
|
+
request.set_pagination_key(pagination_key)
|
|
231
|
+
response = self.client.get_response(request)
|
|
232
|
+
return response
|
|
233
|
+
|
|
215
234
|
def get_fund_brief(self, symbol, category=Category.US_STOCK.name):
|
|
216
235
|
"""
|
|
217
236
|
Query fund brief information.
|
|
@@ -20,7 +20,12 @@ from webull.data.request.get_event_instrument_request import GetEventInstrumentR
|
|
|
20
20
|
from webull.data.request.get_event_series_categories import GetEventCategoriesRequest
|
|
21
21
|
from webull.data.request.get_event_series_request import GetEventSeriesRequest
|
|
22
22
|
from webull.data.request.get_instruments_request import GetInstrumentsRequest
|
|
23
|
+
from webull.data.request.get_instruments_request_v2 import GetInstrumentsRequestV2
|
|
23
24
|
from webull.data.request.get_crypto_instruments_request import GetCryptoInstrumentsRequest
|
|
25
|
+
from webull.data.request.get_crypto_instruments_request_v2 import GetCryptoInstrumentsRequestV2
|
|
26
|
+
from webull.data.request.get_event_series_request_v2 import GetEventSeriesRequestV2
|
|
27
|
+
from webull.data.request.get_event_instrument_request_v2 import GetEventInstrumentRequestV2
|
|
28
|
+
from webull.data.request.get_option_contracts_request_v2 import GetOptionContractsRequestV2
|
|
24
29
|
from webull.data.request.get_futures_instruments_request import GetFuturesInstrumentsRequest
|
|
25
30
|
from webull.data.request.get_futures_products_request import GetFuturesProductsRequest
|
|
26
31
|
from webull.data.request.get_futures_instruments_by_code_request import GetFuturesInstrumentsByCodeRequest
|
|
@@ -35,6 +40,9 @@ class Instrument:
|
|
|
35
40
|
def get_instrument(self, symbols=None, category=Category.US_STOCK.name, status=None, sub_category=None,
|
|
36
41
|
last_instrument_id=None, page_size=1000):
|
|
37
42
|
"""
|
|
43
|
+
.. deprecated::
|
|
44
|
+
Use :meth:`list_instruments` instead.
|
|
45
|
+
|
|
38
46
|
Query the underlying information according to the security symbol list and security type.
|
|
39
47
|
|
|
40
48
|
:param symbols: Securities symbol, such as: 00700,00981.
|
|
@@ -54,9 +62,32 @@ class Instrument:
|
|
|
54
62
|
response = self.client.get_response(instruments_request)
|
|
55
63
|
return response
|
|
56
64
|
|
|
65
|
+
def list_instruments(self, symbols=None, category=Category.US_STOCK.name, status=None, sub_category=None,
|
|
66
|
+
pagination_key=None):
|
|
67
|
+
"""
|
|
68
|
+
Query the underlying information according to the security symbol list and security type.
|
|
69
|
+
|
|
70
|
+
:param symbols: Securities symbol, such as: 00700,00981.
|
|
71
|
+
:param category: Security type, enumeration.
|
|
72
|
+
:param status: Tradable status.
|
|
73
|
+
:param sub_category: Security sub category.
|
|
74
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
75
|
+
"""
|
|
76
|
+
instruments_request = GetInstrumentsRequestV2()
|
|
77
|
+
instruments_request.set_symbols(symbols)
|
|
78
|
+
instruments_request.set_category(category)
|
|
79
|
+
instruments_request.set_status(status)
|
|
80
|
+
instruments_request.set_sub_category(sub_category)
|
|
81
|
+
instruments_request.set_pagination_key(pagination_key)
|
|
82
|
+
response = self.client.get_response(instruments_request)
|
|
83
|
+
return response
|
|
84
|
+
|
|
57
85
|
def get_crypto_instrument(self, symbols=None, status=None, last_instrument_id=None,
|
|
58
86
|
category=Category.US_CRYPTO.name, page_size=1000):
|
|
59
87
|
"""
|
|
88
|
+
.. deprecated::
|
|
89
|
+
Use :meth:`list_crypto_instruments` instead.
|
|
90
|
+
|
|
60
91
|
Query the crypto underlying information according to the security symbol.
|
|
61
92
|
:param symbols: Securities symbol, such as: BTCUSD,ETHUSD.
|
|
62
93
|
:param status: Tradable status.
|
|
@@ -75,6 +106,25 @@ class Instrument:
|
|
|
75
106
|
response = self.client.get_response(crypto_instruments_request)
|
|
76
107
|
return response
|
|
77
108
|
|
|
109
|
+
def list_crypto_instruments(self, symbols=None, status=None, category=Category.US_CRYPTO.name,
|
|
110
|
+
pagination_key=None):
|
|
111
|
+
"""
|
|
112
|
+
Query the crypto underlying information according to the security symbol.
|
|
113
|
+
:param symbols: Securities symbol, such as: BTCUSD,ETHUSD.
|
|
114
|
+
:param status: Tradable status.
|
|
115
|
+
:param category: (str, required) Instrument type.
|
|
116
|
+
Possible values: ["US_CRYPTO"]
|
|
117
|
+
Example: "US_CRYPTO"
|
|
118
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
119
|
+
"""
|
|
120
|
+
crypto_instruments_request = GetCryptoInstrumentsRequestV2()
|
|
121
|
+
crypto_instruments_request.set_symbols(symbols)
|
|
122
|
+
crypto_instruments_request.set_category(category)
|
|
123
|
+
crypto_instruments_request.set_status(status)
|
|
124
|
+
crypto_instruments_request.set_pagination_key(pagination_key)
|
|
125
|
+
response = self.client.get_response(crypto_instruments_request)
|
|
126
|
+
return response
|
|
127
|
+
|
|
78
128
|
def get_futures_instrument(self, symbols=None, category=Category.US_STOCK.name, code=None, status=None):
|
|
79
129
|
"""
|
|
80
130
|
Query the futures instrument information based on the futures contract symbol.
|
|
@@ -155,6 +205,9 @@ class Instrument:
|
|
|
155
205
|
|
|
156
206
|
def get_event_series(self, category=None, symbols=None, last_series_id=None, page_size=500):
|
|
157
207
|
"""
|
|
208
|
+
.. deprecated::
|
|
209
|
+
Use :meth:`list_event_series` instead.
|
|
210
|
+
|
|
158
211
|
Retrieve multiple series with specified filters.
|
|
159
212
|
A series represents a template for recurring events that follow the same format and rules (e.g., “Monthly Jobs Report” ).
|
|
160
213
|
This endpoint allows you to browse and discover available series templates by category.
|
|
@@ -178,6 +231,28 @@ class Instrument:
|
|
|
178
231
|
response = self.client.get_response(event_series_request)
|
|
179
232
|
return response
|
|
180
233
|
|
|
234
|
+
def list_event_series(self, category=None, symbols=None, pagination_key=None):
|
|
235
|
+
"""
|
|
236
|
+
Retrieve multiple series with specified filters.
|
|
237
|
+
A series represents a template for recurring events that follow the same format and rules.
|
|
238
|
+
This endpoint allows you to browse and discover available series templates by category.
|
|
239
|
+
|
|
240
|
+
:param category: The category which this series belongs to.Allowed values:
|
|
241
|
+
ECONOMICS, FINANCIALS, POLITICS, ENTERTAINMENT, SCIENCE_TECHNOLOGY,
|
|
242
|
+
CLIMATE_WEATHER, TRANSPORTATION, CRYPTO, SPORTS
|
|
243
|
+
:param symbols: Symbol of the event series, supports JSON array format, multiple symbols separated by commas; maximum 100 symbols per query.
|
|
244
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
245
|
+
"""
|
|
246
|
+
event_series_request = GetEventSeriesRequestV2()
|
|
247
|
+
if category:
|
|
248
|
+
event_series_request.set_category(category)
|
|
249
|
+
if symbols:
|
|
250
|
+
event_series_request.set_symbols(symbols)
|
|
251
|
+
if pagination_key:
|
|
252
|
+
event_series_request.set_pagination_key(pagination_key)
|
|
253
|
+
response = self.client.get_response(event_series_request)
|
|
254
|
+
return response
|
|
255
|
+
|
|
181
256
|
def get_event_events(self, series_symbol, symbols=None, status=None):
|
|
182
257
|
"""
|
|
183
258
|
Query event contract events
|
|
@@ -197,13 +272,16 @@ class Instrument:
|
|
|
197
272
|
|
|
198
273
|
def get_event_instrument(self, series_symbol, event_symbol=None, symbols=None, expiration_date_after=None, last_instrument_id=None, page_size=500):
|
|
199
274
|
"""
|
|
275
|
+
.. deprecated::
|
|
276
|
+
Use :meth:`list_event_instruments` instead.
|
|
277
|
+
|
|
200
278
|
Retrieve profile information for event contract markets based on the series symbol.
|
|
201
279
|
|
|
202
280
|
:param series_symbol: Symbol that identifies this series.
|
|
203
281
|
:param event_symbol: Symbol of the event events.
|
|
204
282
|
:param symbols: Symbol of the event market, supports JSON array format, multiple symbols separated by commas; maximum 100 symbols per query.
|
|
205
283
|
:param expiration_date_after: Used to filter items whose expiration date is later than a specified date; the default selection is the current day (inclusive).
|
|
206
|
-
:param last_instrument_id: Last
|
|
284
|
+
:param last_instrument_id: Last series id for pagination.
|
|
207
285
|
:param page_size: Page size, default 500.
|
|
208
286
|
"""
|
|
209
287
|
|
|
@@ -221,11 +299,40 @@ class Instrument:
|
|
|
221
299
|
response = self.client.get_response(event_instrument_request)
|
|
222
300
|
return response
|
|
223
301
|
|
|
302
|
+
def list_event_instruments(self, series_symbol=None, event_symbol=None, symbols=None, expiration_date_after=None,
|
|
303
|
+
pagination_key=None):
|
|
304
|
+
"""
|
|
305
|
+
Retrieve profile information for event contract markets based on the series symbol.
|
|
306
|
+
|
|
307
|
+
:param series_symbol: Symbol that identifies this series.
|
|
308
|
+
:param event_symbol: Symbol of the event events.
|
|
309
|
+
:param symbols: Symbol of the event market, supports JSON array format, multiple symbols separated by commas; maximum 100 symbols per query.
|
|
310
|
+
:param expiration_date_after: Used to filter items whose expiration date is later than a specified date; the default selection is the current day (inclusive).
|
|
311
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
312
|
+
"""
|
|
313
|
+
|
|
314
|
+
event_instrument_request = GetEventInstrumentRequestV2()
|
|
315
|
+
if series_symbol:
|
|
316
|
+
event_instrument_request.set_series_symbol(series_symbol)
|
|
317
|
+
if event_symbol:
|
|
318
|
+
event_instrument_request.set_event_symbol(event_symbol)
|
|
319
|
+
if symbols:
|
|
320
|
+
event_instrument_request.set_symbols(symbols)
|
|
321
|
+
if expiration_date_after:
|
|
322
|
+
event_instrument_request.set_expiration_date_after(expiration_date_after)
|
|
323
|
+
if pagination_key:
|
|
324
|
+
event_instrument_request.set_pagination_key(pagination_key)
|
|
325
|
+
response = self.client.get_response(event_instrument_request)
|
|
326
|
+
return response
|
|
327
|
+
|
|
224
328
|
def get_option_contracts(self, category=Category.US_OPTION.name, underlying_symbols=None, status=None,
|
|
225
329
|
start_date=None, end_date=None, root_symbol=None, option_symbol=None,
|
|
226
330
|
option_type=None, style=None, strike_price_gte=None, strike_price_lte=None,
|
|
227
331
|
ppind=None, show_deliverables=None, page_size=10, last_instrument_id=None):
|
|
228
332
|
"""
|
|
333
|
+
.. deprecated::
|
|
334
|
+
Use :meth:`list_option_contracts` instead.
|
|
335
|
+
|
|
229
336
|
Query option contracts list by conditions such as underlying_symbols, status, expiration date, etc.
|
|
230
337
|
|
|
231
338
|
:param category: Market category. Value: US_OPTION.
|
|
@@ -263,6 +370,46 @@ class Instrument:
|
|
|
263
370
|
response = self.client.get_response(request)
|
|
264
371
|
return response
|
|
265
372
|
|
|
373
|
+
def list_option_contracts(self, category=Category.US_OPTION.name, option_symbols=None, underlying_symbols=None,
|
|
374
|
+
status=None, start_date=None, end_date=None, root_symbol=None, option_type=None,
|
|
375
|
+
style=None, strike_price_gte=None, strike_price_lte=None, ppind=None,
|
|
376
|
+
show_deliverables=None, pagination_key=None):
|
|
377
|
+
"""
|
|
378
|
+
Query option contracts list by conditions such as underlying_symbols, status, expiration date, etc.
|
|
379
|
+
|
|
380
|
+
:param category: Market category. Value: US_OPTION.
|
|
381
|
+
:param option_symbols: Option symbol(s), comma-separated for multiple, e.g. AAPL250620C00150000.
|
|
382
|
+
:param underlying_symbols: Underlying symbol(s), comma-separated for multiple, e.g. AAPL,MSFT.
|
|
383
|
+
:param status: Contract status: LISTING (default), DELISTING.
|
|
384
|
+
:param start_date: Exact expiration date, format YYYY-MM-DD.
|
|
385
|
+
:param end_date: Expiration date lower bound (inclusive), format YYYY-MM-DD.
|
|
386
|
+
:param root_symbol: Root symbol filter (series symbol, e.g. SPXW), mainly for index options and non-standard contracts after CA.
|
|
387
|
+
:param option_type: Contract type: CALL / PUT.
|
|
388
|
+
:param style: Exercise style: AMERICAN / EUROPEAN.
|
|
389
|
+
:param strike_price_gte: Strike price lower bound (inclusive).
|
|
390
|
+
:param strike_price_lte: Strike price upper bound (inclusive).
|
|
391
|
+
:param ppind: Penny Program Indicator: true = Penny Pilot, false = non-Penny Pilot.
|
|
392
|
+
:param show_deliverables: Whether to return deliverables array in response: true / false, default false.
|
|
393
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
394
|
+
"""
|
|
395
|
+
request = GetOptionContractsRequestV2()
|
|
396
|
+
request.set_category(category)
|
|
397
|
+
request.set_option_symbols(option_symbols)
|
|
398
|
+
request.set_underlying_symbols(underlying_symbols)
|
|
399
|
+
request.set_status(status)
|
|
400
|
+
request.set_start_date(start_date)
|
|
401
|
+
request.set_end_date(end_date)
|
|
402
|
+
request.set_root_symbol(root_symbol)
|
|
403
|
+
request.set_option_type(option_type)
|
|
404
|
+
request.set_style(style)
|
|
405
|
+
request.set_strike_price_gte(strike_price_gte)
|
|
406
|
+
request.set_strike_price_lte(strike_price_lte)
|
|
407
|
+
request.set_ppind(ppind)
|
|
408
|
+
request.set_show_deliverables(show_deliverables)
|
|
409
|
+
request.set_pagination_key(pagination_key)
|
|
410
|
+
response = self.client.get_response(request)
|
|
411
|
+
return response
|
|
412
|
+
|
|
266
413
|
def get_company_profile(self, symbol, category=Category.US_STOCK.name):
|
|
267
414
|
"""
|
|
268
415
|
Get company profile for one instrument.
|
{webull_openapi_python_sdk-2.0.19 → webull_openapi_python_sdk-3.0.0}/webull/data/quotes/screener.py
RENAMED
|
@@ -15,11 +15,17 @@
|
|
|
15
15
|
# coding=utf-8
|
|
16
16
|
|
|
17
17
|
from webull.data.request.screener.get_gainers_losers_request import GetGainersLosersRequest
|
|
18
|
+
from webull.data.request.screener.get_gainers_losers_request_v2 import GetGainersLosersRequestV2
|
|
18
19
|
from webull.data.request.screener.get_most_active_request import GetMostActiveRequest
|
|
20
|
+
from webull.data.request.screener.get_most_active_request_v2 import GetMostActiveRequestV2
|
|
19
21
|
from webull.data.request.screener.get_market_sectors_request import GetMarketSectorsRequest
|
|
22
|
+
from webull.data.request.screener.get_market_sectors_request_v2 import GetMarketSectorsRequestV2
|
|
20
23
|
from webull.data.request.screener.get_market_sectors_detail_request import GetMarketSectorsDetailRequest
|
|
24
|
+
from webull.data.request.screener.get_market_sectors_detail_request_v2 import GetMarketSectorsDetailRequestV2
|
|
21
25
|
from webull.data.request.screener.get_high_dividend_request import GetHighDividendRequest
|
|
26
|
+
from webull.data.request.screener.get_high_dividend_request_v2 import GetHighDividendRequestV2
|
|
22
27
|
from webull.data.request.screener.get_52whl_request import Get52WHLRequest
|
|
28
|
+
from webull.data.request.screener.get_52whl_request_v2 import Get52WHLRequestV2
|
|
23
29
|
|
|
24
30
|
|
|
25
31
|
class Screener:
|
|
@@ -36,6 +42,9 @@ class Screener:
|
|
|
36
42
|
|
|
37
43
|
def get_gainers_losers(self, rank_type, category, sort_by, page_index=None, page_size=None, direction=None):
|
|
38
44
|
"""
|
|
45
|
+
.. deprecated::
|
|
46
|
+
Use :meth:`list_gainers_losers` instead.
|
|
47
|
+
|
|
39
48
|
Get stock top gainers or losers ranking by price change percentage.
|
|
40
49
|
|
|
41
50
|
This API returns stocks ranked by price change over different time periods.
|
|
@@ -76,8 +85,50 @@ class Screener:
|
|
|
76
85
|
response = self.client.get_response(request)
|
|
77
86
|
return response
|
|
78
87
|
|
|
88
|
+
def list_gainers_losers(self, rank_type, category, sort_by, direction=None):
|
|
89
|
+
"""
|
|
90
|
+
Get stock top gainers or losers ranking by price change percentage.
|
|
91
|
+
|
|
92
|
+
This API returns stocks ranked by price change over different time periods.
|
|
93
|
+
Use direction='DESC' for gainers (top performers) and direction='ASC' for losers.
|
|
94
|
+
The ranking is not paginated and returns the top 200 results.
|
|
95
|
+
|
|
96
|
+
:param rank_type: Time period for ranking. Required.
|
|
97
|
+
Enum values:
|
|
98
|
+
- PRE_MARKET: Pre-market session
|
|
99
|
+
- AFTER_MARKET: After-market session
|
|
100
|
+
- MIN_3: 3 minutes
|
|
101
|
+
- MIN_5: 5 minutes
|
|
102
|
+
- DAY_1: 1 day
|
|
103
|
+
- DAY_5: 5 days
|
|
104
|
+
- MONTH_1: 1 month
|
|
105
|
+
- MONTH_3: 3 months
|
|
106
|
+
- WEEK_52: 52 weeks
|
|
107
|
+
:param category: Security market category. Required. (e.g., 'US_STOCK')
|
|
108
|
+
:param sort_by: Secondary sort field. Required.
|
|
109
|
+
Enum values: CHANGE_RATIO, RELATIVE_VOLUME_10D, MARKET_VALUE, CLOSE,
|
|
110
|
+
PRICE, PE_TTM, HIGH, LOW, AMPLITUDE, TURNOVER, VOLUME
|
|
111
|
+
:param direction: Sort direction. Optional (defaults to DESC).
|
|
112
|
+
- ASC: Ascending (for losers)
|
|
113
|
+
- DESC: Descending (for gainers)
|
|
114
|
+
:return: Response containing a list of ranked stocks with instrument_id,
|
|
115
|
+
symbol, name, exchange_code, currency_code, pre_close, open, high, low,
|
|
116
|
+
close, price, change, change_ratio, volume, turnover_rate, market_value,
|
|
117
|
+
amplitude, relative_volume_10d, pe_ttm.
|
|
118
|
+
"""
|
|
119
|
+
request = GetGainersLosersRequestV2()
|
|
120
|
+
request.set_rank_type(rank_type)
|
|
121
|
+
request.set_category(category)
|
|
122
|
+
request.set_sort_by(sort_by)
|
|
123
|
+
request.set_direction(direction)
|
|
124
|
+
response = self.client.get_response(request)
|
|
125
|
+
return response
|
|
126
|
+
|
|
79
127
|
def get_most_active(self, category, rank_type=None, sort_by=None, page_index=None, page_size=None, direction=None):
|
|
80
128
|
"""
|
|
129
|
+
.. deprecated::
|
|
130
|
+
Use :meth:`list_most_active` instead.
|
|
131
|
+
|
|
81
132
|
Get most actively traded stocks ranking.
|
|
82
133
|
|
|
83
134
|
This API returns stocks ranked by trading activity metrics such as volume,
|
|
@@ -119,8 +170,51 @@ class Screener:
|
|
|
119
170
|
response = self.client.get_response(request)
|
|
120
171
|
return response
|
|
121
172
|
|
|
173
|
+
def list_most_active(self, category, rank_type=None, sort_by=None, direction=None):
|
|
174
|
+
"""
|
|
175
|
+
Get most actively traded stocks ranking.
|
|
176
|
+
|
|
177
|
+
This API returns stocks ranked by trading activity metrics such as volume,
|
|
178
|
+
relative volume, turnover amount, turnover rate, or amplitude.
|
|
179
|
+
The ranking is not paginated and returns the top 200 results.
|
|
180
|
+
|
|
181
|
+
Default sort: rank_type=VOLUME, sort_by=VOLUME, direction=DESC
|
|
182
|
+
|
|
183
|
+
The relative_volume_10d field is unique to this endpoint compared to
|
|
184
|
+
the gainers/losers endpoint.
|
|
185
|
+
|
|
186
|
+
:param category: Security market category. Required. (e.g., 'US_STOCK')
|
|
187
|
+
:param rank_type: Activity metric for ranking. Optional (defaults to VOLUME).
|
|
188
|
+
Enum values:
|
|
189
|
+
- VOLUME: Trading volume
|
|
190
|
+
- RELATIVE_VOLUME_10D: 10-day relative volume
|
|
191
|
+
- TURNOVER: Turnover amount
|
|
192
|
+
- TURNOVER_RATE: Turnover rate
|
|
193
|
+
- AMPLITUDE: Price amplitude
|
|
194
|
+
:param sort_by: Secondary sort field. Optional.
|
|
195
|
+
Enum values: CHANGE_RATIO, RELATIVE_VOLUME_10D, MARKET_VALUE, CLOSE,
|
|
196
|
+
PRICE, PE_TTM, HIGH, LOW, AMPLITUDE, TURNOVER, VOLUME
|
|
197
|
+
:param direction: Sort direction. Optional (defaults to DESC).
|
|
198
|
+
- ASC: Ascending order
|
|
199
|
+
- DESC: Descending order
|
|
200
|
+
:return: Response containing a list of ranked stocks with instrument_id,
|
|
201
|
+
symbol, name, exchange_code, currency_code, pre_close, open, high, low,
|
|
202
|
+
close, price, change, change_ratio, volume, turnover_rate, market_value,
|
|
203
|
+
amplitude, relative_volume_10d.
|
|
204
|
+
"""
|
|
205
|
+
request = GetMostActiveRequestV2()
|
|
206
|
+
request.set_category(category)
|
|
207
|
+
request.set_rank_type(rank_type)
|
|
208
|
+
request.set_sort_by(sort_by)
|
|
209
|
+
request.set_direction(direction)
|
|
210
|
+
response = self.client.get_response(request)
|
|
211
|
+
return response
|
|
212
|
+
|
|
122
213
|
def get_market_sectors(self, category, agg_type=None, period=None, page_index=None, page_size=None, direction=None):
|
|
123
214
|
"""
|
|
215
|
+
.. deprecated::
|
|
216
|
+
Use :meth:`list_market_sectors` instead.
|
|
217
|
+
|
|
124
218
|
Get all sector overview data.
|
|
125
219
|
|
|
126
220
|
:param category: Security category. Required. (e.g., 'US_STOCK')
|
|
@@ -140,8 +234,30 @@ class Screener:
|
|
|
140
234
|
response = self.client.get_response(request)
|
|
141
235
|
return response
|
|
142
236
|
|
|
237
|
+
def list_market_sectors(self, category, agg_type=None, period=None, direction=None, pagination_key=None):
|
|
238
|
+
"""
|
|
239
|
+
Get all sector overview data.
|
|
240
|
+
|
|
241
|
+
:param category: Security category. Required. (e.g., 'US_STOCK')
|
|
242
|
+
:param agg_type: Statistics type, default is MARKET_VALUE. Enum: MARKET_VALUE, VOLUME.
|
|
243
|
+
:param period: Statistics period, default is D1. Enum: D1, D5, M01, M03.
|
|
244
|
+
:param direction: Sorting direction. Enum: ASC (ascending), DESC (descending).
|
|
245
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
246
|
+
"""
|
|
247
|
+
request = GetMarketSectorsRequestV2()
|
|
248
|
+
request.set_category(category)
|
|
249
|
+
request.set_agg_type(agg_type)
|
|
250
|
+
request.set_period(period)
|
|
251
|
+
request.set_direction(direction)
|
|
252
|
+
request.set_pagination_key(pagination_key)
|
|
253
|
+
response = self.client.get_response(request)
|
|
254
|
+
return response
|
|
255
|
+
|
|
143
256
|
def get_market_sectors_detail(self, sector_id, category, period=None, page_index=None, page_size=None, sort_by=None, direction=None):
|
|
144
257
|
"""
|
|
258
|
+
.. deprecated::
|
|
259
|
+
Use :meth:`list_market_sectors_detail` instead.
|
|
260
|
+
|
|
145
261
|
Get stock list and statistics for a specific sector.
|
|
146
262
|
|
|
147
263
|
:param sector_id: Sector ID. Required.
|
|
@@ -163,8 +279,32 @@ class Screener:
|
|
|
163
279
|
response = self.client.get_response(request)
|
|
164
280
|
return response
|
|
165
281
|
|
|
282
|
+
def list_market_sectors_detail(self, sector_id, category, period=None, sort_by=None, direction=None, pagination_key=None):
|
|
283
|
+
"""
|
|
284
|
+
Get stock list and statistics for a specific sector.
|
|
285
|
+
|
|
286
|
+
:param sector_id: Sector ID. Required.
|
|
287
|
+
:param category: Security category. Required. (e.g., 'US_STOCK')
|
|
288
|
+
:param period: Statistics period, default is D1. Enum: D1, D5, M01, M03.
|
|
289
|
+
:param sort_by: Sort field, default is CHANGE_RATIO. Enum: CHANGE_RATIO, RELATIVE_VOLUME_10D, MARKET_VALUE, CLOSE, PRICE, PE_TTM, HIGH, LOW, AMPLITUDE, TURNOVER, VOLUME, YIELD, DIVIDEND.
|
|
290
|
+
:param direction: Sorting direction. Enum: ASC (ascending), DESC (descending).
|
|
291
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
292
|
+
"""
|
|
293
|
+
request = GetMarketSectorsDetailRequestV2()
|
|
294
|
+
request.set_sector_id(sector_id)
|
|
295
|
+
request.set_category(category)
|
|
296
|
+
request.set_period(period)
|
|
297
|
+
request.set_sort_by(sort_by)
|
|
298
|
+
request.set_direction(direction)
|
|
299
|
+
request.set_pagination_key(pagination_key)
|
|
300
|
+
response = self.client.get_response(request)
|
|
301
|
+
return response
|
|
302
|
+
|
|
166
303
|
def get_high_dividend(self, category, sort_by=None, page_index=None, page_size=None, direction=None):
|
|
167
304
|
"""
|
|
305
|
+
.. deprecated::
|
|
306
|
+
Use :meth:`list_high_dividend` instead.
|
|
307
|
+
|
|
168
308
|
Get high dividend rank list.
|
|
169
309
|
|
|
170
310
|
:param category: Security category. Required. (e.g., 'US_STOCK')
|
|
@@ -182,8 +322,28 @@ class Screener:
|
|
|
182
322
|
response = self.client.get_response(request)
|
|
183
323
|
return response
|
|
184
324
|
|
|
325
|
+
def list_high_dividend(self, category, sort_by=None, direction=None):
|
|
326
|
+
"""
|
|
327
|
+
Get high dividend rank list.
|
|
328
|
+
|
|
329
|
+
The ranking is not paginated and returns the top 200 results.
|
|
330
|
+
|
|
331
|
+
:param category: Security category. Required. (e.g., 'US_STOCK')
|
|
332
|
+
:param sort_by: Sort field, default is YIELD. Enum: CHANGE_RATIO, RELATIVE_VOLUME_10D, MARKET_VALUE, CLOSE, PRICE, PE_TTM, HIGH, LOW, AMPLITUDE, TURNOVER, VOLUME, YIELD, DIVIDEND.
|
|
333
|
+
:param direction: Sorting direction, default is DESC. Enum: ASC (ascending), DESC (descending).
|
|
334
|
+
"""
|
|
335
|
+
request = GetHighDividendRequestV2()
|
|
336
|
+
request.set_category(category)
|
|
337
|
+
request.set_sort_by(sort_by)
|
|
338
|
+
request.set_direction(direction)
|
|
339
|
+
response = self.client.get_response(request)
|
|
340
|
+
return response
|
|
341
|
+
|
|
185
342
|
def get_52whl(self, category, rank_type=None, sort_by=None, page_index=None, page_size=None, direction=None):
|
|
186
343
|
"""
|
|
344
|
+
.. deprecated::
|
|
345
|
+
Use :meth:`list_52whl` instead.
|
|
346
|
+
|
|
187
347
|
Get 52 week high/low rank list.
|
|
188
348
|
|
|
189
349
|
:param category: Security category. Required. (e.g., 'US_STOCK')
|
|
@@ -202,3 +362,22 @@ class Screener:
|
|
|
202
362
|
request.set_direction(direction)
|
|
203
363
|
response = self.client.get_response(request)
|
|
204
364
|
return response
|
|
365
|
+
|
|
366
|
+
def list_52whl(self, category, rank_type=None, sort_by=None, direction=None):
|
|
367
|
+
"""
|
|
368
|
+
Get 52 week high/low rank list.
|
|
369
|
+
|
|
370
|
+
The ranking is not paginated and returns the top 200 results.
|
|
371
|
+
|
|
372
|
+
:param category: Security category. Required. (e.g., 'US_STOCK')
|
|
373
|
+
:param rank_type: Index code. Enum: NEW_HIGH, NEAR_HIGH, NEW_LOW, NEAR_LOW.
|
|
374
|
+
:param sort_by: Sort field, default is CHANGE_RATIO_52W. Enum: CHANGE_RATIO, RELATIVE_VOLUME_10D, MARKET_VALUE, CLOSE, PRICE, PE_TTM, HIGH, LOW, AMPLITUDE, TURNOVER, VOLUME, YIELD, DIVIDEND.
|
|
375
|
+
:param direction: Sorting direction. Enum: ASC (ascending), DESC (descending).
|
|
376
|
+
"""
|
|
377
|
+
request = Get52WHLRequestV2()
|
|
378
|
+
request.set_rank_type(rank_type)
|
|
379
|
+
request.set_category(category)
|
|
380
|
+
request.set_sort_by(sort_by)
|
|
381
|
+
request.set_direction(direction)
|
|
382
|
+
response = self.client.get_response(request)
|
|
383
|
+
return response
|
|
@@ -19,7 +19,8 @@ from webull.core.request import ApiRequest
|
|
|
19
19
|
|
|
20
20
|
class GetAnalystRatingRequest(ApiRequest):
|
|
21
21
|
def __init__(self):
|
|
22
|
-
ApiRequest.__init__(self, "/
|
|
22
|
+
ApiRequest.__init__(self, "/market-data/fundamentals/analysis/ratings/get", version="v3", method="GET",
|
|
23
|
+
query_params={})
|
|
23
24
|
|
|
24
25
|
def set_symbol(self, symbol):
|
|
25
26
|
"""
|
|
@@ -19,7 +19,8 @@ from webull.core.request import ApiRequest
|
|
|
19
19
|
|
|
20
20
|
class GetAnalystTargetPriceRequest(ApiRequest):
|
|
21
21
|
def __init__(self):
|
|
22
|
-
ApiRequest.__init__(self, "/
|
|
22
|
+
ApiRequest.__init__(self, "/market-data/fundamentals/analysis/target-prices/get", version="v3", method="GET",
|
|
23
|
+
query_params={})
|
|
23
24
|
|
|
24
25
|
def set_symbol(self, symbol):
|
|
25
26
|
"""
|