Дељена Open API апликација и rate limits
По подразумевању сваки корисник региструје сопствену cTrader Open API апликацију под Settings → Open API. White-label оператор (типично cTrader брокер или reseller) може уместо тога да испоручи једну дељену Open API апликацију за све кориснике — нико не региструје сопствену; сви овлашћују своје налоге кроз операторову једну апликацију.
Два начина да се обезбеди дељена апликација
Дељена апликација се обезбеђује или из deployment конфигурације или из owner settings UI (owner-set вредност побеђује). Обезбедите једном и режим дељења се укључује за све.
1. Deployment конфигурација (семљивана при покретању)
"App": {
"OpenApi": {
"PublicBaseUrl": "https://cmind.yourbroker.com", // канонски јавни URL OVOG deployment-а
"SharedApp": {
"Enabled": true,
"Name": "YourBroker Open API",
"ClientId": "1234_abcd...",
"ClientSecret": "…" // шифровано at rest; никада не логује се
}
}
}
При покретању, апликација семљије једну дељену апликацију у власничком власничком налогу (идемпотентно — никада не преписује власнички-уређивану runtime вредност, и поновно семљивање је no-op).
2. Owner settings (runtime, без redeploy-а)
Settings → Open API (само власник) приказује две ствари: одељак Ваша Open API апликација — власник региструје, уређује и овлашћује своју сопствену per-user апликацију баш као свако други корисник (доступно док није конфигурисана дељена апликација) — и картицу Deployment shared application да додаш / уредиш / обришеш дељену апликацију, са приказаним redirect URL-ом за copy-paste. Промене ступају на снагу за нове овлашћења одмах. Када се дељена апликација конфигурише, она замењује власникову сопствену апликацију, и одељак Ваша Open API апликација се преноси на обавештење да налози сада овлашћују кроз дељену апликацију.
Redirect URL (региструјте ово у cTrader-у)
Свака cTrader Open API апликација региструје један redirect URL — исту једну вредност за дељену апликацију и за било коју per-user апликацију:
{your deployment URL}/openapi/callback
на пример https://cmind.yourbroker.com/openapi/callback.
- Апликација приказује тачну вредност на Open API settings страници (са дугметом за копирање) — залепите га у cTrader partner портал када креирате Open API апликацију.
- Састављен је од
App:OpenApi:PublicBaseUrlтако да остаје стабилан иза reverse proxy / CDN-а; када је ово неподешено, враћа се на inbound request host. - Invite vs normal-user искуство се разликује само у томе где корисник слеће након callback-а (листа њихових налога vs потврда "accounts added") — регистровани redirect URL остаје непромењен.
Шта корисници виде у режиму дељења
Када дељена апликација постоји:
- Корисници немaju опцију да региструју сопствену Open API апликацију — settings страница приказује "Open API управља ваш провајдер" и дугме Овлашћуј налоге које користи дељену апликацију.
- Било које претходно личне апликације се уклањају; њихови овлашћени налози се поново усмеравају на дељену апликацију и морају се поново овластити (њихови стари токени су издати под другим client id-јем). Покушај креирања личне апликације враћа грешку "managed by your provider".
Client rate limits (по типу поруке)
Клијент темпира одлазак cTrader Open API порука тако да burst никада не активира server-side rate-limit блок. Лимити су по типу поруке, одговарајући cTrader Open API документима:
| Категорија | Шта покрива | Подразумевано |
|---|---|---|
General | трговање + читање порука (налози, симболи, упити налога) | 45 msg/s |
HistoricalData | trendbar / tick-data захтеви (строже throttle-овани од стране cTrader-а) | 5 msg/s |
Historical-data захтев се рачуна и у своју и у генералну корпу. Heartbeat и аутентикационе поруке се никада не темпирају. Поруке се ређају у ред и празне по доступној стопи — ништа се не одбацује и редослед се чува.
Подесите их ако је ваш брокер договорио више cTrader лимите, или поставите категорију на 0 да онемогућите
темпирање потпуно (неограничено):
- Конфигурација:
App:OpenApi:RateLimits:General/App:OpenApi:RateLimits:HistoricalData(msgs/sec). - Owner settings: картица Client rate limits на Settings → Open API (owner override побеђује, примењује се на нове конекције / при поновном повезивању).