공유 Open API 애플리케이션 및 속도 제한
기본적으로 모든 사용자는 설정 → Open API에서 자신의 cTrader Open API 애플리케이션을 등록합니다. 화이트라벨 운영자(일반적으로 cTrader 브로커 또는 리셀러)는 대신 모든 사용자에게 하나의 공유 Open API 애플리케이션을 제공할 수 있습니다 — 아무도 자신의 것을 등록하지 않습니다; 모든 사용자가 운영자의 단일 앱을 통해 계정을授权합니다.
공유 애플리케이션을 제공하는 두 가지 방법
공유 애플리케이션은 배포 구성 또는 소유자 설정 UI에서 프로비저닝됩니다 (둘 다 가능 — 소유자가 설정한 값이 우선). 한 번 제공하고 공유 모드를 켜면 모든 사용자에게 적용됩니다.
1. 배포 구성 (시작 시 시드)
"App": {
"OpenApi": {
"PublicBaseUrl": "https://cmind.yourbroker.com", // 이 배포의 정식 공개 URL
"SharedApp": {
"Enabled": true,
"Name": "YourBroker Open API",
"ClientId": "1234_abcd...",
"ClientSecret": "…" // 암호화되어 저장; 절대 로그 안 함
}
}
}
시작 시 앱은 소유자 계정이 소유한 하나의 공유 애플리케이션을 시드합니다 (멱등 — 소유자가 편집한 런타임 값을 덮어쓰지 않으며, 재시딩은 무작위 작업임).
2. 소유자 설정 (런타임, 재배치 불필요)
설정 → Open API (소유자만)에는 두 가지가 표시됩니다: 귀하의 Open API 애플리케이션 섹션 — 소유자는 공유 앱이 구성되지 않은 동안 다른 사용자와 정확히 같은 방식으로 자신의 사용자별 앱을 등록, 편집 및授권합니다 — 그리고 배포 공유 애플리케이션 카드는 공유 앱을 추가 / 편집 / 삭제하며, 리다이렉트 URL이 복사-붙여넣기용으로 표시됩니다. 변경 사항은 새授권에 즉시 적용됩니다. 공유 앱이 구성되면 소유자의 자신의 앱을 대체하고, 귀하의 Open API 애플리케이션 섹션은 계정이 이제 공유 앱을 통해授权한다는 공지로 전환됩니다.
리다이렉트 URL (cTrader에 등록)
모든 cTrader Open API 애플리케이션은 하나의 리다이렉트 URL을 등록합니다 — 공유 앱과 사용자별 앱 모두에 대해 동일한 단일 값:
{your deployment URL}/openapi/callback
예: https://cmind.yourbroker.com/openapi/callback.
- 앱은 정확한 값을 표시합니다 (복사 버튼 포함) — cTrader 파트너 포털에 Open API 애플리케이션을 생성할 때 붙여넣습니다.
App:OpenApi:PublicBaseUrl에서 구성되므로 역방향 프록시 / CDN 뒤에서 안정적으로 유지됩니다; 설정되지 않으면 인바운드 요청 호스트로 폴백됩니다.- 초대 vs 일반 사용자 경험은 사용자가 콜백 후 도착하는 위치에서만 다릅니다 (계정 목록 vs "계정 추가됨" 확인) — 등록된 리다이렉트 URL은 변경되지 않습니다.
공유 모드에서 사용자가 보는 것
공유 애플리케이션이 존재할 때:
- 사용자는 자신의 Open API 애플리케이션을 등록할 옵션이 없습니다 — 설정 페이지에 **"Open API는 공급자가 관리합니다"**가 표시되고 공유 앱을 사용하는 계정授权 버튼이 있습니다.
- 기존 개인 애플리케이션은 제거됩니다; 해당授权된 계정은 공유 앱을 가리키도록 다시 지정되며 재授权되어야 합니다 (이전 토큰은 다른 클라이언트 ID 아래에서 발급됨). 개인 앱 생성 시도 시 "공급자가 관리합니다" 오류가 반환됩니다.
클라이언트 속도 제한 (메시지 유형별)
클라이언트는 발신 cTrader Open API 메시지의 속도를 조절하여 급증이 서버 측 속도 제한 차단을トリガー하지 않도록 합니다. 제한은 cTrader Open API 문서와 일치하는 메시지 유형별:
| 카테고리 | 적용 범위 | 기본값 |
|---|---|---|
General | 거래 + 읽기 메시지 (주문, 심볼, 계정 쿼리) | 45 msg/s |
HistoricalData | 트렌드바 / 틱 데이터 요청 (cTrader가 더 엄격하게 제한) | 5 msg/s |
과거 데이터 요청은 자신의 버킷과 일반 버킷 모두에 대해 카운트됩니다. 하트비트 및认证 메시지는 절대 속도 조절되지 않습니다. 메시지는 큐에 들어가고 사용 가능한 속도로 drain됩니다 — 아무것도 삭제되지 않고 주문이 유지됩니다.
브로커가 더 높은 cTrader 제한을 협상한 경우 조정하거나, 카테고리를 **0**으로 설정하여 속도 조절을完全に 비활성화합니다 (무제한):
- 구성:
App:OpenApi:RateLimits:General/App:OpenApi:RateLimits:HistoricalData(msg/sec). - 소유자 설정: 설정 → Open API의 클라이언트 속도 제한 카드 (소유자 재정의, 새 연결 / 재연결에 적용).