OkxTR 1.0.0

dotnet add package OkxTR --version 1.0.0
                    
NuGet\Install-Package OkxTR -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OkxTR" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OkxTR" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="OkxTR" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OkxTR --version 1.0.0
                    
#r "nuget: OkxTR, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OkxTR@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OkxTR&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=OkxTR&version=1.0.0
                    
Install as a Cake Tool

🚀 OkxTR (.NET) Kütüphanesi

.NET C# License NuGet

OkxTR, OKX TR (Türkiye) borsasının REST V5 API’leri için geliştirilmiş, resmi olmayan bir .NET istemci kütüphanesidir.
Public ve private endpoint’ler için tip güvenli modeller, async/await tabanlı servisler ve hazır bir HTTP imzalama altyapısı sunar.

Uyarı: Bu kütüphane OKX veya OKX TR tarafından resmi olarak yayınlanmamıştır.
Gerçek para ile işlem yapmadan önce mutlaka kendi testlerinizi yapın ve OKX TR’nin
resmi V5 API dokümantasyonunu inceleyin.


✨ Desteklenen Özellikler (Özet Tablo)

Alan Açıklama
Public Data /api/v5/public/* altında enstrüman listesi, sistem zamanı vb. genel veriler
Market Data /api/v5/market/* altında ticker, order book, mum verisi (candles), trade geçmişi, 24h hacim
Trading Account /api/v5/account/* altında hesap bakiyesi, hesap konfigürasyonu, enstrüman bilgisi
Trade /api/v5/trade/* altında emir oluşturma, toplu emir, iptal/değişiklik, emir listesi & geçmişi
Funding Account /api/v5/asset/* altında funding bakiyesi, kullanılmayan varlıklar, varlık değerlemesi
Sub-Account /api/v5/users/*, /api/v5/account/subaccount/*, /api/v5/asset/subaccount/* altında alt hesap işlemleri
Affiliate /api/v5/affiliate/* ile davet edilen kullanıcı detayları
Announcement /api/v5/support/* ile duyurular ve duyuru tipleri
HTTP İmzalama OK-ACCESS-* header’ları ile V5 REST Authentication kurallarına uygun HMAC-SHA256 imzalama
Async & Cancel Tüm servis metotlarında Task<T> ve CancellationToken kullanımı
DI Entegrasyonu AddOkxTRClient(...) ile IServiceCollection üzerinden kolay kayıt

📦 Kurulum

🧰 .NET CLI

dotnet add package OkxTR --version 1.0.0

📄 PackageReference

<PackageReference Include="OkxTR" Version="1.0.0" />

🔑 API Key Alma (OKX TR)

Private (kimlik doğrulama gerektiren API uç noktalarını) kullanmak için OKX TR hesabınızdan API anahtarı oluşturmanız gerekir.

Adımlar (özet, resmi dokümantasyonla birlikte değerlendirin):

  1. OKX veya OKX TR hesabınıza giriş yapın.
  2. Web arayüzünden API Anahtarları bölümüne gidin.
  3. Yeni bir API Key oluşturun:
    • Permissions / İzinler bölümünde en az:
      • Okuma (piyasa verileri, hesap bilgileri için),
      • Al/Sat (emir verme/iptal için) yetkilerini verin.
    • IP kısıtlaması gerekiyorsa (önerilir), sadece sunucunuzun IP adreslerini ekleyin.
  4. Oluşturulan:
    • API Key
    • Secret Key
    • Passphrase değerlerini güvenli bir yerde saklayın.

Güvenlik için önerilen kullanım:

var apiKey     = Environment.GetEnvironmentVariable("OKXTR_API_KEY");
var secretKey  = Environment.GetEnvironmentVariable("OKXTR_SECRET_KEY");
var passphrase = Environment.GetEnvironmentVariable("OKXTR_PASSPHRASE");

Bu değerleri asla kaynak koda gömmeyin; üretimde environment değişkenleri, secret manager veya benzeri mekanizmalar kullanın.


📊 Hızlı Başlangıç: Public API (Kimlik Doğrulama Gerektirmez)

using OkxTR.Services;

// 🌐 Sadece public API uç noktaları için
using var client = new OkxTRClient();

// Tüm SPOT enstrümanlarını getir
var instrumentsRes = await client.PublicDataService.GetInstrumentsAsync("SPOT");
if (instrumentsRes?.IsSuccess == true)
{
    foreach (var inst in instrumentsRes.Data ?? [])
    {
        Console.WriteLine($"{inst.InstId} - {inst.BaseCcy}/{inst.QuoteCcy} - Durum:{inst.State}");
    }
}

// BTC-TRY ticker bilgisini getir
var tickerRes = await client.MarketDataService.GetTickerAsync("BTC-TRY");
if (tickerRes?.IsSuccess == true && tickerRes.Data?.Count > 0)
{
    var t = tickerRes.Data[0];
    Console.WriteLine($"BTC-TRY Son Fiyat: {t.Last} | 24h Hacim: {t.VolCcyQuote}");
}

🔐 Hızlı Başlangıç: Private API (Temel Akış)

Bu örnek, OkxTR_Test/Program.cs dosyasındaki senaryodan kısaltılmış bir akıştır:

  1. Hesap hız limitini oku
  2. Açık emirleri listele
  3. BTC-TRY için limit alış emri ver
  4. Emrin detayını sorgula
  5. Emri güncelle
  6. Emri iptal et
using OkxTR.Models.Trade;
using OkxTR.Services;

// 1) Kimlik bilgilerini ortam değişkenlerinden al
var apiKey     = Environment.GetEnvironmentVariable("OKXTR_API_KEY");
var secretKey  = Environment.GetEnvironmentVariable("OKXTR_SECRET_KEY");
var passphrase = Environment.GetEnvironmentVariable("OKXTR_PASSPHRASE");

if (string.IsNullOrWhiteSpace(apiKey) ||
    string.IsNullOrWhiteSpace(secretKey) ||
    string.IsNullOrWhiteSpace(passphrase))
{
    Console.WriteLine("Lütfen OKXTR_API_KEY / OKXTR_SECRET_KEY / OKXTR_PASSPHRASE değişkenlerini ayarlayın.");
    return;
}

// 2) Trade servisine eriş
using var client = new OkxTRClient(apiKey, secretKey, passphrase);
var trade = client.TradeService;

// 3) Hesap hız limitini sorgula
var rateLimitRes = await trade.GetAccountRateLimitAsync();
if (rateLimitRes?.Code == "0" && rateLimitRes.Data?.Count > 0)
{
    var r = rateLimitRes.Data[0];
    Console.WriteLine($"Mevcut limit : {r.AccRateLimit} emir/2sn");
    Console.WriteLine($"Sonraki limit: {r.NextAccRateLimit} emir/2sn");
}

// 4) Açık emirleri listele (SPOT)
var pendingRes = await trade.GetOrderListAsync(instType: "SPOT", limit: "5");
if (pendingRes?.Code == "0")
{
    Console.WriteLine($"Açık emir sayısı: {pendingRes.Data?.Count ?? 0}");
}

// 5) BTC-TRY için örnek limit alış emri ver
var placeOrderRes = await trade.PlaceOrderAsync(new PlaceOrderRequest
{
    InstId = "BTC-TRY",
    TdMode = "cash",
    Side   = "buy",
    OrdType = "limit",
    Sz     = "0.0001",   // Örnek miktar
    Px     = "2500000",  // Örnek fiyat (piyasa şartlarını mutlaka kontrol edin)
});

if (placeOrderRes?.Code == "0" && placeOrderRes.Data?.Count > 0)
{
    var o = placeOrderRes.Data[0];
    if (o.IsItemSuccess)
    {
        var orderId = o.OrdId;
        Console.WriteLine($"BTC emri oluştu. Emir ID: {orderId}");

        // 6) Emrin detayını sorgula
        var detailRes = await trade.GetOrderDetailsAsync(instId: "BTC-TRY", ordId: orderId);
        var detail = detailRes?.Data?.FirstOrDefault();
        if (detail is not null)
        {
            Console.WriteLine($"Durum: {detail.State} | Fiyat: {detail.Px} | Miktar: {detail.Sz}");
        }

        // 7) Emri iptal et (örnek)
        var cancelRes = await trade.CancelOrderAsync(new CancelOrderRequest
        {
            InstId = "BTC-TRY",
            OrdId  = orderId,
        });

        Console.WriteLine(cancelRes?.Code == "0"
            ? "BTC emri için iptal isteği gönderildi."
            : $"İptal isteği başarısız: [{cancelRes?.Code}] {cancelRes?.Msg}");
    }
    else
    {
        Console.WriteLine($"Emir başarısız: [{o.SCode}] {o.SMsg}");
    }
}
else
{
    Console.WriteLine($"API hatası: [{placeOrderRes?.Code}] {placeOrderRes?.Msg}");
}

Gerçek işlemler için, örnek değerleri kendi stratejinize ve piyasa koşullarına göre güncelleyin.
OKX TR’nin kaldıraç, risk limiti ve ürün spesifik kurallarını mutlaka inceleyin.


🧩 DI Entegrasyonu: AddOkxTRClient Kullanımı

OkxTRServiceCollectionExtensions ile IOkxTRClient’ı ASP.NET Core veya worker servislerinde kolayca kullanabilirsiniz.

using OkxTR;
using OkxTR.Interfaces;
using OkxTR.Models.Common;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOkxTRClient(options =>
{
    options.BaseUrl   = builder.Configuration["OkxTR:BaseUrl"] ?? "https://tr.okx.com";
    options.ApiKey    = builder.Configuration["OkxTR:ApiKey"];
    options.SecretKey = builder.Configuration["OkxTR:SecretKey"];
    options.Passphrase = builder.Configuration["OkxTR:Passphrase"];
});

var app = builder.Build();

// Örnek: BTC-TRY ticker endpoint'i
app.MapGet("/btc-ticker", async (IOkxTRClient okxClient, CancellationToken ct) =>
{
    var response = await okxClient.MarketDataService
        .GetTickerAsync("BTC-TRY", ct);

    if (response?.IsSuccess != true || response.Data is null || response.Data.Count == 0)
    {
        return Results.Problem(detail: response?.Msg ?? "Ticker alınamadı.", statusCode: 502);
    }

    var ticker = response.Data[0];
    return Results.Ok(ticker);
});

app.Run();

⚠️ Hata Yönetimi

  • HTTP 2xx dışındaki yanıtlar için kütüphane, OkxTRHttpException fırlatır
    (status code ve ham body içeriğini exception üzerinden görebilirsiniz).
  • API tarafında code != "0" döndüğünde, OkxTRResponse<T>.IsSuccess false olur;
    Code ve Msg alanları OKX TR’nin döndürdüğü hata bilgisini içerir.
try
{
    var res = await client.TradeService.GetOrderListAsync(instType: "SPOT");
}
catch (OkxTRHttpException ex)
{
    Console.WriteLine($"HTTP Hatası: {(int)ex.StatusCode} - {ex.StatusCode}");
    Console.WriteLine($"Body: {ex.ResponseContent}");
}

📄 Uyum ve Sorumluluk Reddi

  • Bu kütüphane, .NET 10 ve C# 14 (preview) hedefleyerek modern BCL API’lerini kullanır.
  • API davranışları, OKX TR’nin resmi V5 API dokümantasyonuna dayanır;
    OKX tarafındaki olası değişiklikleri izlemek kullanıcı sorumluluğundadır.
  • Kripto para işlemleri yüksek risk içerir; her zaman:
    • Demo / küçük tutarla test edin,
    • Yerel mevzuat, vergi ve uyum gerekliliklerini göz önünde bulundurun,
    • Kendi risk profilinize uygun stratejiler kullanın.

📄 Lisans

Bu proje MIT Lisansı ile lisanslanmıştır.


📞 İletişim


💰 Bağış

Bu kütüphaneyi faydalı bulduysanız ve geliştirilmesine katkıda bulunmak istiyorsanız, kripto para bağışı yapabilirsiniz:

Tüm Ağlar İçin Cüzdan Adresi:

0x21bc1e50042708a30275c151e43f7b1c1be99f2f

Desteklenen tokenlar: Tüm ERC-20/BEP-20 tokenları

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 121 3/14/2026