Ana içeriğe geç

Bir bağlantı kurun

cTrader Open API proxy'sine TCP protokolünü veya WebSocket protokolünü kullanarak bağlanabilirsiniz. Bu kılavuz, bu seçeneklerin her ikisini de kapsar.

TCP kullanma

SSL kullanımı

TCP istemci bağlantısı SSL kullanmalıdır, aksi takdirde API'ye bağlanamaz veya API ile etkileşim kuramazsınız.

Resmi cTrader Open API SDK'larını kullanarak aşağıdaki gibi bir bağlantı kurabilirsiniz.

1
2
_client = new OpenClient("live1.p.ctrader.com", 5035, TimeSpan.FromSeconds(10), useWebSocket: false);
await _client.Connect()

OpenClient.Connect() yöntemi, OpenClient.ConnectTcp() yöntemini çağırır.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
private async Task ConnectTcp()
{
    _tcpClient = new TcpClient
    {
        LingerState = new LingerOption(enable: true, 10)
    };
    await _tcpClient.ConnectAsync(Host, Port).ConfigureAwait(continueOnCapturedContext: false);
    _sslStream = new SslStream(_tcpClient.GetStream(), leaveInnerStreamOpen: false);
    await _sslStream.AuthenticateAsClientAsync(Host).ConfigureAwait(continueOnCapturedContext: false);
    Task.Run(delegate
    {
        ReadTcp(_cancellationTokenSource.Token);
    });
}

Python Open API istemcisi, başlatıldığında otomatik olarak bir bağlantı kurmaya çalışır.

1
client = Client("live1.p.ctrader.com", 5035, TcpProtocol)

WebSocket Üzerinden

WebSocket protokolü üzerinden bağlanırken, ana bilgisayar ve bağlantı noktası TCP protokolü üzerinden bağlanırken olduğuyla aynıdır.

İşte resmi cTrader Open API SDK'larının WebSocket üzerinden bir bağlantı kurma şekli.

1
2
_client = new OpenClient("live1.p.ctrader.com", 5035, TimeSpan.FromSeconds(10), useWebSocket: true);
await _client.Connect()

OpenClient.Connect() yöntemi, OpenClient.ConnectWebSocket() yöntemini çağırır.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
private async Task ConnectWebScoket()
{
    DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(7, 2);
    defaultInterpolatedStringHandler.AppendLiteral("wss://");
    defaultInterpolatedStringHandler.AppendFormatted(Host);
    defaultInterpolatedStringHandler.AppendLiteral(":");
    defaultInterpolatedStringHandler.AppendFormatted(Port);
    Uri url = new Uri(defaultInterpolatedStringHandler.ToStringAndClear());
    _websocketClient = new WebsocketClient(url, () => new ClientWebSocket())
    {
        IsTextMessageConversionEnabled = false,
        ReconnectTimeout = null,
        IsReconnectionEnabled = false,
        ErrorReconnectTimeout = null
    };
    _webSocketMessageReceivedDisposable = _websocketClient.MessageReceived.Select((ResponseMessage msg) => ProtoMessage.Parser.ParseFrom(msg.Binary)).Subscribe(new Action<ProtoMessage>(OnNext));
    _webSocketDisconnectionHappenedDisposable = _websocketClient.DisconnectionHappened.Subscribe(new Action<DisconnectionInfo>(OnWebSocketDisconnectionHappened));
    await _websocketClient.StartOrFail();
}

Python SDK'sı WebSocket standardını desteklemez.

.NET Blazor web uygulamasının WebSocket standardını kullanarak bir bağlantı kurup sürdürmesine dair bir örnek için buraya tıklayın.

En iyi uygulamalar

cTrader Open API'ye bağlanırken akılda tutmanız gereken bazı yönergeler şunlardır:

  • En fazla iki bağlantı oluşturmalısınız: biri demo hesaplar için ve biri canlı hesaplar için. Her bağlantı, belirli bir türde sınırsız sayıda hesabı destekleyebilir.
  • Bir bağlantı kurulduktan sonra, uygulama yetkilendirme akışını geçmelisiniz. Uygulamanız yetkilendirilmeden önce herhangi bir mesaj gönderirseniz, bir hata alırsınız.
  • Bir bağlantıyı canlı tutmak için, her 10 saniyede bir bir kalp atışı olayı (ProtoHeartbeatEvent) göndermeye devam edin.
  • Eşzamanlı gönderme ve alma olaylarını önlemek için veri göndermek ve almak için bir mesaj kuyruğu kullanın.