域名
Endpoint指的是請求服務的網絡域名,比如api.webull.hk
對應HTTP API的服務。
不同的服務會使用不同的域名,比如quotes-api.webull.hk
對應行情數據服務。
region_id
也和Endpoint有關,比如上面兩個域名所對應的region_id
都是hk(代表香港)。
在使用SDK的過程中,默認已經對Endpoint實現了管理,開發者一般只需要正確設置region_id即可,無需單獨設置Endpoint。
HTTP API
用戶自定義Endpoint的不同方式
- Python
- Java
- 通過ApiClient進行設置,全局生效,示例代碼如下
from webullsdkcore.client import ApiClient
client = ApiClient(app_key="<your_app_key>", app_secret="<your_app_secret>", region_id="<region_id>")
client.add_endpoint("<region_id>", "<endpoint>")
- 通過Request進行設置,只對當前Request生效,示例代碼如下
from webullsdkmdata.request.get_instruments_request import GetInstrumentsRequest
request = GetInstrumentsRequest()
request.set_endpoint("<endpoint>")
- 通過EndpointResolver進行設置,全局生效,示例代碼如下
EndpointResolver.getDefault().addEndpoint("<region_id>", ApiModule.API, "<endpoint>");
- 通過ApiConfig進行設置,只對當前Client/Service實例生效,示例代碼如下
HttpApiConfig apiConfig = HttpApiConfig.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.regionId("<region_id>")
.endpoint("<endpoint>")
.build();
// HttpApiClient client = new HttpApiClient(apiConfig);
TradeApiService apiService = new TradeHttpApiService(apiConfig);
- 通過HttpRequest進行設置,只對當前Request生效,示例代碼如下
HttpApiConfig apiConfig = HttpApiConfig.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.regionId("<region_id>")
.build();
HttpApiClient client = new HttpApiClient(apiConfig);
HttpRequest request = new HttpRequest("<endpoint>", "/trade/instrument", Versions.V1, HttpMethod.GET);
Map<String, Object> params = new HashMap<>();
params.put("instrument_id", instrumentId);
request.setQuery(params);
InstrumentInfo instrumentInfo = client.request(request).responseType(InstrumentInfo.class).doAction();
行情訂閱
- Python
- Java
- 用戶通過設定api_endpoint參數,可以實現自定義gRPC API的Endpoint,示例代碼如下
from webullsdkmdata.quotes.subscribe.default_client import DefaultQuotesClient
quotes_client = DefaultQuotesClient(
"<your_app_key>", "<your_app_secret>", "<region_id>", api_endpoint="<api_endpoint>")
- 用戶通過設定host和port參數,可以實現自定義MQTT協議的Endpoint,示例代碼如下
from webullsdkmdata.quotes.subscribe.default_client import DefaultQuotesClient
quotes_client = DefaultQuotesClient(
"<your_app_key>", "<your_app_secret>", "<region_id>")
quotes_client.connect_and_loop_start(host="<host>", port="<port>")
用戶通過設定host, port和apiClient參數,可以實現自定義gRPC API或MQTT協議的Endpoint,示例代碼如下
QuotesApiClient quotesApiClient = QuotesApiClient.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.host("<api_endpoint>")
.port(443)
.build();
QuotesSubsClient quotesSubsClient = QuotesSubsClient.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.host("<host>")
.port(8883)
.apiClient(quotesApiClient)
.build();
交易事件檢閱
用戶通過設定host和port參數,可以實現自定義gRPC協議的Endpoint,示例代碼如下
- Python
- Java
from webullsdktradeeventscore.events_client import EventsClient
events_client = EventsClient("<your_app_key>", "<your_app_secret>", region_id="<region_id>", host="<host>", port="<port>")
EventClient client = EventClient.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.host("<host>")
.port(443)
.build();