OkxTR 1.0.0
dotnet add package OkxTR --version 1.0.0
NuGet\Install-Package OkxTR -Version 1.0.0
<PackageReference Include="OkxTR" Version="1.0.0" />
<PackageVersion Include="OkxTR" Version="1.0.0" />
<PackageReference Include="OkxTR" />
paket add OkxTR --version 1.0.0
#r "nuget: OkxTR, 1.0.0"
#:package OkxTR@1.0.0
#addin nuget:?package=OkxTR&version=1.0.0
#tool nuget:?package=OkxTR&version=1.0.0
🚀 OkxTR (.NET) Kütüphanesi
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):
- OKX veya OKX TR hesabınıza giriş yapın.
- Web arayüzünden API Anahtarları bölümüne gidin.
- 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.
- Permissions / İzinler bölümünde en az:
- Oluşturulan:
API KeySecret KeyPassphrasedeğ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:
- Hesap hız limitini oku
- Açık emirleri listele
- BTC-TRY için limit alış emri ver
- Emrin detayını sorgula
- Emri güncelle
- 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,
OkxTRHttpExceptionfırlatır
(status code ve ham body içeriğini exception üzerinden görebilirsiniz). - API tarafında
code != "0"döndüğünde,OkxTRResponse<T>.IsSuccessfalse olur;
CodeveMsgalanları 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
- Geliştirici: Mehmet Emin KARADAĞ
- GitHub: https://github.com/emin-karadag
- OkxTR Repository: https://github.com/emin-karadag/OkxTR
- OKX TR API Dokümantasyonu: https://tr.okx.com/docs-v5/en/
💰 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 | Versions 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. |
-
net10.0
- Microsoft.Extensions.Http (>= 10.0.5)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.5)
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 |