Bahsedilen ürünlerin hepsi, tüm yetki alanlarında kullanıma sunulmuyor olabilir.

Jupyter Notebook ile Nasıl Vadeli İşlem Yaparım?

Yayımlama Zamanı: 28 Eyl 2023Güncelleme Zamanı: 11 Eyl 2024Okuma Süresi: 10 dk68

Aynı araçlarla basit vadeli işlemleri nasıl yapabileceğinizi öğrenin. Gelin, daha yüksek bir seviyede pyhton-okx’te sunulan kapsamlı özellikleri kullanalım!

Vadeli İşlem Türleri

OKX’te al-sat yapmak için üç tür vadeli işlem bulunur:

  • Vadeli Sözleşmeler

  • Sürekli Swap

  • Opsiyonlar

OKX’te farklı vadeli işlem türlerinin özellikleri hakkında bilgi edinmek için Bitcoin Vadeli İşlemleri Hakkında Her Şey: Vadeli Sözleşmeler, Sürekli Swap ve Opsiyonlar sayfasına bakabilirsiniz. Bu makalede, Sürekli Swap işlemlerini örnek olarak kullanacağız.

SSS

1. Piyasa verilerini Get Market Data (Piyasa Verilerini Al) ile bölümünden nasıl alabilirim?

Ayrıca, bilgi için instType yerine EXPIRY veya OPTION da kullanabilirsiniz.

Python
     import okx.MarketData as MarketData

   flag = "1"  # live trading: 0, demo trading: 1

   marketDataAPI = MarketData.MarketAPI(flag = flag)

   result = marketDataAPI.get_tickers(instType = "SWAP")
   print(result)

2. Mevcut işlem çiftlerini Araçları al bölümünden nasıl alabilirim?

Aynı şekilde, bilgi almak istediğiniz instType’ı seçin.

Python
import okx.PublicData as PublicData

if __name__ == '__main__':

    flag = "1"  # live trading: 0, demo trading: 1

    publicDataAPI = PublicData.PublicAPI(flag = flag)

    result = publicDataAPI.get_instruments(instType = "SWAP")
    print(result)

2.1 Bir vadeli işlem sözleşmesinin itibari değerini araç parametresi ctVal ve ctMult ile hesaplama

Bir vadeli işlem sözleşmesinin (yani vadeli sözleşme, sürekli swap ve opsiyonlar) itibari değerini hesaplamak için araç parametrelerinden ctVal (sözleşme değeri) ve ctMult (sözleşme çarpanı) gereklidir.

Bir vadeli işlem sözleşmesinin itibari değeri ctVal * ctMult (birim: ctValCcy) olarak hesaplanabilir.

Örneğin, aşağıda gösterilen araç parametrelerinden bir LTC-USD sürekli swap sözleşmesinin itibari değerini şu şekilde hesaplayabiliriz: ctVal * ctMult (birim: ctValccy) = 10 * 1 USD = 10 USD

JSON
        "instType":"SWAP",
        "instId":"LTC-USD-SWAP",
        "instFamily":"LTC-USD",
        "uly":"LTC-USD",
        "settleCcy":"LTC",
        "ctVal":"10",
        "ctMult":"1",
        "ctValCcy":"USD"

3. Bakiyenizi Get balance (Bakiye al) ile nasıl kontrol edebilirsiniz?

Python
import okx.Account as Account
flag = "1"  # live trading:0, demo trading: 1

accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)

result = accountAPI.get_account_balance()
print(result)

4. Vadeli işlem yapmaya uygun hesap modu ve marjin/al-sat modu nedir?

Son makalede de belirtildiği gibi, birleştirilmiş hesapta, son makalede bahsettiğimiz dört hesap modu bulunmaktadır:

  • Spot Modu,

  • Spot ve Vadeli Modu,

  • Çoklu Kripto Marjini Modu,

  • Portföy Marjini Modu.

Yalnızca son üç marjin modunun, yani spot ve vadeli, çoklu kripto marjini ve portföy marjini modlarının vadeli işlemler için uygun olduğunu unutmayın. Dört mod arasındaki farkları ve Web kullanıcı arayüzümüz aracılığıyla bunların arasında nasıl geçiş yapılacağını anlamak için Hesap Modu Nasıl Oluşturulur? makalesine başvurabilirsiniz.

4.1 Get account configutation (Hesap konfigürasyonunu al) ile acctLv parametresinden mevcut hesap konfigürasyonunu alma

Vadeli işlem yapmak için doğru hesap modunda olduğunuzdan emin olun.

Python
import okx.Account as Account

flag = "1"  # live trading: 0, demo trading: 1

accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
result = accountAPI.get_account_config()
print(result)

if result['code'] == "0":
    acctLv = result["data"][0]["acctLv"]
    if acctLv == "1":
        print("Simple mode")
    elif acctLv == "2":
        print("Single-currency margin mode")
    elif acctLv == "3":
        print("Multi-currency margin mode")
    elif acctLv == "4":
        print("Portfolio margin mode")

5. Set account leverage (Hesap kaldıracını ayarla) ile kaldıracı nasıl ayarlayabilirim?

Vadeli işlem yaparken belirlememiz gereken önemli parametrelerden biri de kaldıraç parametresidir.

Kaldıraç, traderların yalnızca küçük bir miktar para yatırarak çok daha değerli bir pozisyona girmelerini sağlar. Bu nedenle kazançlar veya kayıplar büyük ölçüde artar.

Traderlar OKX’te vadeli işlem yaparken 125x’e kadar kaldıraç kullanabilirler. Farklı pozisyon kademelerinde izin verilen farklı kaldıraç seviyeleri için kaldıraç belirleme referanslarını okuyabilirsiniz.

CT-web-spottrading-howtoapi-6

Yukarıda gösterilen ifadelerin açıklamaları şu şekildedir:

  • En Yüksek Kaldıraç: Bir yatırımın potansiyel getirisini artırmak için borç alınan sermayenin en fazla kaç kat artırılabileceği.

  • Başlangıç Marjini Oranı (IMR): Mevcut pozisyonları tutmak için gereken marjin.

  • Sürdürme Marjini Oranı (MMR): Mevcut pozisyonları sürdürmek için gereken en düşük marjini ifade eder. Hesabın varlık değeri sürdürme marjinin altına düşerse likidasyon gerçekleşir.

Örneğin, 3000 ETHUSDT değerinde sürekli swap sözleşmesi alıp satmak istediğinizde, sahip olduğunuz sermayenin maksimum 75 katı kadar kaldıraç kullanabilirsiniz. IMR = 1 / 75 = %1,3; bu durumda, likidasyonu önlemek için %0,8 veya üzeri bir MMR değerini sürdürmeniz gerekir.

OKX açık API’leri aracılığıyla kaldıraç ayarları için 9 farklı senaryo bulunur. Farklı durumlar için Set leverage scenarios (Kaldıraç senaryolarını ayarla) bölümüne bakabilirsiniz.

Sürekli swap işlemlerinde, kaldıraç ayarı için 3 farklı senaryo vardır:

  • Sözleşme seviyesinde çapraz marjin işlemi altında SWAP araçları için kaldıraç ayarlama.

  • Sözleşme seviyesinde izole marjin işlem modu ve alış/satış pozisyon modu altında SWAP araçları için kaldıraç ayarlama.

  • Sözleşme ve pozisyon yönü seviyesinde izole marjin işlem modu ve uzun/kısa pozisyon modu altında SWAP araçları için kaldıraç ayarlama.

Aşağıdaki örnek, belirli bir dayanak için tüm SWAP sözleşmelerine kıyasla tek bir SWAP sözleşmesi ve pozisyon yönü için kaldıracı nasıl ayarlayacağınızı göstermektedir.

Bash
# Set leverage to be 5x for all cross-margin BTC-USDT SWAP positions,
# by providing the SWAP instId
result = accountAPI.set_leverage(
    instId = "BTC-USDT-SWAP",
    lever = "5",
    mgnMode = "cross"
)
print(result)

# In buy/sell position mode, set leverage to be 5x 
# for all isolated-margin BTC-USDT SWAP positions
# by providing the SWAP instId
result = accountAPI.set_leverage(
    instId = "BTC-USDT-SWAP",
    lever = "5",
    mgnMode = "isolated"
)
print(result)

# In long/short position mode, set leverage to be 5x
# for an isolated-margin BTC-USDT-SWAP long position;
# This does NOT affect the leverage of the BTC-USDT-SWAP
# short positions
result = accountAPI.set_leverage(
    instId = "BTC-USDT-SWAP",
    lever = "5",
    posSide = "long",
    mgnMode = "isolated"
)
print(result)

posSide talep parametresinin sadece, marjin modunun VADELİ SÖZLEŞME/SÜREKLİ SWAP araçları için uzun/kısa pozisyonda izole edilmesi durumunda gerekli olduğunu unutmayın(bkz: Set leverage scenarios (Kaldıraç senaryolarını ayarla) bölümündeki senaryo 6 ve 9).

6. Farklı pozisyon (emir verme) modları altında emir verme: uzun/kısa ve alış/satış.

VADELİ SÖZLEŞME ve SÜREKLİ SWAP işlemleri yaparken iki pozisyon (emir verme) modu bulunur: uzun/kısa ve alış/satış (net).

Set position mode (Pozisyon modunu ayarla) ile pozisyon (emir verme) modunu uzun/kısa

SQL
result = accountAPI.set_position_mode(
    posMode = "long_short_mode"
)
print(result)

Alternatif olarak, web sitesinde Ayarlar bölümünden aşağıda gösterilen şekilde yapabilirsiniz:

CT-web-derivativestrading-howtoapi-9

Alış/Satış (net) modunda, belirli bir sözleşmenin pozisyonu, alış ve satış işlemlerinizin net miktarıdır. Place order (Emir ver) ile emir verdiğinizde, talep parametresi posSide is zorunlu değildir. Bu değeri geçerseniz, tek geçerli değer net olur.

Uzun/kısa modunda, belirli bir sözleşmenin Uzun ve Kısa pozisyonları birbirinden bağımsız olacak ve ayrı olarak kapatılmaları gerekecektir. Place order (Emir ver) ile emir verdiğinizde, talep parametresi posSide is zorunludur. Geçerli değerler uzun veya kısadır. Farklı senaryolar altında emir verdiğinizde yön (işlemin yönü) parametresinin ve posSide (pozisyonun yönü) parametresinin nasıl ayarlanacağı aşağıda gösterilmektedir:

  • Bir alış emri verin ve bir uzun pozisyonu açın/artırın: yön = alış, posSide = uzun

  • Bir satış emri verin ve bir kısa pozisyonu açın/artırın: yön = satış, posSide = kısa

  • Bir satış emri verin ve bir uzun pozisyonu kapatın/azaltın: yön = satış, posSide = uzun

  • Bir alış emri verin ve bir kısa pozisyonu kapatın/azaltın: yön = alış, posSide = kısa O hâlde, vadeli işlem emirleri vermeye hazırsınız!

6.1 Place order (Emir ver) ile limit emri verme

19.000 USDT fiyatttan 100 BTC-USDT Swap sözleşmesi satın alma.

SQL
# limit order
result = tradeAPI.place_order(
    instId = "BTC-USDT-SWAP",
    tdMode = "isolated",
    side = "buy",
    posSide = "net",
    ordType = "limit",
    px = "19000",
    sz = "100"
)
print(result)

if result["code"] == "0":
    print("Successful order request,order_id = ",result["data"][0]["ordId"])
else:
    print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])

6.2 Place order (Emir ver) ile bir piyasa emri verme

Piyasa fiyatından 100 BTC-USDT Swap sözleşmesi satın alma.

SQL
# market order
result = tradeAPI.place_order(
    instId = "BTC-USDT-SWAP",
    tdMode = "isolated",
    side = "buy",
    posSide = "net",
    ordType = "market",
    sz = "100"
)
print(result)

if result["code"] == "0":
    print("Successful order request,order_id = ",result["data"][0]["ordId"])
else:
    print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])

7. Belirli bir emrin ayrıntılarını/durumunu nasıl alabilirim (bkz: Get order details) (Emir ayrıntılarını al)?

Emir ayrıntılarını almak için ordId dışında, clOrdId de belirtebilirsiniz.

SQL
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)

8.Bir emri Cancel order (Emri iptal et) ile nasıl iptal edebilirim?

Perl
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)

9. Bir emri Amend order (Emri düzenle) ile nasıl düzenleyebilirim?

Ayrıca, ordId yerine clOrdId de kullabilirsiniz. Bu örnek, yeni boyut revizyonunu göstermektedir.

SQL
result = tradeAPI.amend_order(
    instId = "BTC-USDT-SWAP", 
    ordId = "505073046126960640",
    newSz = "80"
)
print(result)

10. Get order List (Emir listesini al) ile nasıl açık emirlerin listesini alabilirim?

SQL
result = tradeAPI.get_order_list()
print(result)

11. Get order history (last 7 days) (Emir geçmişini al (son 7 gün)) ve Get order history (last 3 months) (Emir geçmişini al (son 3 ay)) ile emir geçmişini nasıl alabilirim?

SQL
# Get order history (last 7 days)
result = tradeAPI.get_orders_history(
    instType = "SWAP"
)
print(result)

# Get order history (last 3 months)
result = tradeAPI.get_orders_history_archive(
    instType = "SWAP"
)
print(result)

12. Get transaction details (last 3 days) (İşlem ayrıntılarını al (son 3 gün)) ve Get transaction details (last 3 months) (İşlem ayrıntılarını al (son 3 ay)) ile işlem ayrıntılarını nasıl alabilirim?

SQL
# Get transaction details (last 3 days)
result = tradeAPI.get_fills()
print(result)

# Get transaction details (last 3 months)
result = tradeAPI.get_fills_history(
    instType = "SWAP"
)
print(result)

13. Get positions (Pozisyonları al) ile pozisyonları nasıl alabilirim?

Hesabınız net modunda olduğunda, her bir sözleşmenin net pozisyonu görüntülenecektir; hesabınız uzun/kısa modunda olduğunda, her bir sözleşmenin uzun veya kısa pozisyonu ayrı ayrı görüntülenecektir.

SQL
result = accountAPI.get_positions()
print(result)

Örneğin, gerçekleşmemiş kâr ve zararınızı yanıt parametresi upl ile takip edebilirsiniz.

Daha fazla örnek

Daha fazla örnek için buradan Jupyter Notebook’un tamamını indirebilirsiniz.

API’lerimizle ilgili herhangi bir sorunuz varsa API topluluğumuza katılabilir ve toplulukta sorularınızı sorabilirsiniz.