كيف يمكنني إجراء صفقات التداول الفوري باستخدام المُفكّرة التفاعلية Jupyter Notebook؟

تم النشر في ‏29 سبتمبر 2023تم التحديث في ‏18 أغسطس 20244 دقيقة قراءة‏‎276‏

تعرّف على كيفية إجراء صفقات التداول الفوري بكل سهولة عن طريق استدعاء الدوال الموجودة في مكتبة python-okx ضمن المفكّرة التفاعلية Jupyter Notebook.

1. كيف يمكنني تشغيل أكواد Python الجاهزة ضمن المفكّرة التفاعلية Jupyter Notebook؟

CT-web-spottrading-howtoapi-1

تُعدّ المفكّرة التفاعلية Jupyter Notebook أداةً قوية وسهلة الاستخدام لتطوير المشاريع بلغة Python وتحليل البيانات. إذ يمكنك تشغيل مُخدّم Jupyter Notebook على أي من أنظمة تشغيل Windows أو Mac OS أو Linux ويعدّ هذا الدليل التعليمي بمثابة دليل إرشادي شامل حول كيفية إعداد Jupyter Notebook وتشغيله.

2. كيف يمكنني تثبيت حزمة python-okx؟

بمجرد البدء في تشغيل Jupyter Notebook، يمكنك تثبيت حزمة python-okx ببساطة عن طريق تشغيل الأمر pip install python-okx في المفكّرة أو في نافذة سطر الأوامر Terminal في Linux (أو عبر نافذة موجّه الأوامر command prompt في نظام التشغيل Windows):

CT-web-spottrading-howtoapi-2

3. كيف يمكنني إنشاء مفاتيح واجهة برمجة التطبيقات API؟

  1. بعد تسجيل الدخول إلى OKX، انتقل إلى التداول> التداول التجريبي لإنشاء مفاتيح واجهة برمجة التطبيقات API بغرض التجربة

    CT-web-trade-demo trading

    فتح صفحة التداول التجريبي

  2. انتقل إلى الحساب > واجهة برمجة التطبيقات API لإنشاء مفاتيح واجهة برمجة التطبيقات API.

    CT-web-profile-API

    افتح صفحة واجهة برمجة التطبيقات API لإنشاء مفاتيح API

  3. أنشئ مفاتيح واجهة برمجة التطبيقات API للحسابات الرئيسية/الفرعية المختلفة لديك.

    CT-web-API-create

    اختر إنشاء مفتاح واجهة برمجة التطبيقات API

  4. حدد التداول ضمن الأذونات لتتمكّن من التداول باستخدام مفتاح API.

    CT-web-API-trade

    حدّد خيار التداول ضمن الأذونات

  5. يمكنك الآن الوصول إلى مفتاح واجهة برمجة التطبيقات API والمفتاح السرّي وعبارة المرور الخاصّة بك. احتفظ بها في مكان آمن!

  6. قم بإنشاء نسخة عن متغيرات python لحفظ تفاصيل واجهة برمجة التطبيقات API الخاصّة بك في المفكّرة لاستخدامها لاحقًا.

    Python
    1 api_key = "xxxxx"
    2 secret_key = "xxxxx"
    3 passphrase = "xxxxxx"

4. كيف يمكنني استيراد الوحدات البرمجية الخاصّة بمنصة OKX؟

يوجد في مكتبة python-okx عدّة وحدات برمجية، وهي قائمة على وحدات واجهة برمجة التطبيقات API المبنية وفق معمارية REST الخاصّة بنا. اقرأ دليلنا الإرشادي لمعرفة كيفية استيراد وحدات OKX البرمجية.

  • Trade

  • BlockTrading

  • Funding

  • Account

  • Convert

  • Earning

  • SubAccount

  • MarketData

  • PublicData

  • TradingData

  • Status

  • NDBroker

  • FDBroker

فعلى سبيل المثال، لاستيراد وحدة التداول Trade، يمكنك تشغيل الأمر:

Python
1 import okx.Trade as Trade

وبذلك تغدو جاهزًا لاستخدام الميزات الشاملة المتوفرة في مكتبة python-okx!

5. كيفية الوصول إلى بيانات السوق لدينا؟

اطّلع على المزيد حول كيفية الوصول إلى بيانات السوق الخاصّة بنا وتحقّق من الكود البرمجي أدناه.

Python
1  import okx.MarketData as MarketData
2  flag = "1"  # live trading: 0, demo trading: 1
3  marketDataAPI = MarketData.MarketAPI(flag=flag)
4  result = marketDataAPI.get_tickers(instType="SPOT")print(result)

6. كيف يمكنني قراءة أزواج التداول المتاحة؟

اطّلع على المزيد حول كيفية قراءة أزواج التداول المتاحة لدينا وتحقّق من الكود البرمجي أدناه.

Python
1   import okx.PublicData as PublicData
2
3   flag = "1"  # live trading: 0, demo trading: 1
4
5   PublicDataAPI = PublicData.PublicAPI(flag=flag)
6
7    result = PublicDataAPI.get_instruments(
8        instType="SPOT"
9    )
10  print(result)

7. كيف يمكنني قراءة رصيد حسابي؟

لمزيد من المعلومات حول كيفية قراءة رصيد حسابك، يُرجى قراءة دليلنا الإرشادي المُخصّص.

ملاحظة: بالنسبة للتداول الفوري مع اختيار القيمة “cash” لمُعامِل وضع صفقة التداول tdMode، فلا بدّ من التحقق من مُعامِليّ الرصيد النقدي cashBal والرصيد المُجمّد frozenBal من أجل كل عملة ccy ضمن مُعامل التفاصيل details بالإضافة إلى مُعامِل الرصيد الإجمالي totalEq

Python
1   import okx.Account as Account
2   flag = "1"  # live trading: 0, demo trading: 1
3
4   accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
5
6   result = accountAPI.get_account_balance()
7   print(result)

8. كيف يمكنني الوصول إلى أوضاع حساب التداول الأربعة المختلفة؟

يوجد أربعة أوضاع لحساب التداول في نظام حساب التداول الموحَّد لدينا، وهي:

  • وضع التداول الفوري

  • وضع التداول الفوري وتداول العقود الآجلة

  • وضع التداول بالهامش مُتعدّد العملات

  • وضع هامش المحفظة

لفهم الفروق بين أوضاع الحساب المختلفة وكيفية ضبط وضع الحساب من خلال واجهة المستخدم في إصدار الويب، يُرجى قراءة دليلنا الإرشادي المُخصّص.

يُحدّد مُعامِل وضع صفقة التداول tdMode ضمن وضع الهامش أو وضع التداول كيفية تغطية مركزك بالهامش، والذي يجب تعيينه في كل مرة تقوم فيها بتعيين طلب جديد.

بالنسبة للتداول الفوري ضمن وضع التداول الفوري أو وضع التداول الفوري وتداول العقود الآجلة، يُرجى تعيين tdMode='cash'.

أمّا للتداول الفوري ضمن وضع التداول بالهامش مُتعدّد العملات أو وضع هامش المحفظة، يُرجى تعيين tdMode='cross'.

ستجد أدناه شرحًا سريعًا لكيفية معرفة الوضع الذي تم تكوين حسابك الحالي عليه.

9. كيف يمكنني معرفة الوضع الذي تم ضبط حسابي الحالي وفقًا له؟

لمزيدٍ من المعلومات حول كيفية معرفة الوضع الذي تم ضبط حسابك الحالي وفقًا له، يُرجى قراءة دليلنا المُخصّص وإدخال قيمة لمُعامل مستوى الحساب acctLv (بين 1 و4 حسب وضع الحساب).

Python
1 import okx.Account as Account
2
3 flag = "1"  # live trading: 0, demo trading: 1
4 
5 accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
6 result = accountAPI.get_account_config()
7 print(result)
8 
9 if result['code'] == "0":
10     acctLv = result["data"][0]["acctLv"]
11     if acctLv == "1":
12         print("Simple mode")
13     elif acctLv == "2":
14        print("Single-currency margin mode")
15     elif acctLv == "3":
16        print("Multi-currency margin mode")
17     elif acctLv == "4":
18        print("Portfolio margin mode")

10. كيف يمكنني تعيين طلبات تداول فوري ضمن وضع التداول الفوري / وضع التداول الفوري وتداول العقود الآجلة؟

10.1 كيف يمكنني تعيين طلب حدّي؟

لمزيدٍ من المعلومات حول كيفية تعيين طلب حدّي ضمن وضع التداول الفوري أو وضع التداول الفوري وتداول العقود الآجلة، يُرجى قراءة دليلنا الإرشاديّ المُخصّص.

إليك مثال على شراء 0.01 BTCبسعر 19000 USDT.

Python
1 # limit order
2 result = tradeAPI.place_order(
3     instId="BTC-USDT",
4     tdMode="cash",
5     side="buy",
6     ordType="limit",
7     px="19000",
8     sz="0.01"
9 )
10 print(result)
11 
12 if result["code"] == "0":
13     print("Successful order request,order_id = ",result["data"][0]["ordId"])
14 else:
15     print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])

10.2 كيف يمكنني تعيين طلب بسعر السوق؟

لمزيدٍ من المعلومات حول كيفية تعيين طلب سوق ضمن وضع التداول الفوري أو وضع التداول الفوري وتداول العقود الآجلة، يُرجى قراءة دليلنا الإرشادي المُخصّص.

وفيما يلي مثال على شراء ما قيمته 100 USD من عملات BTC بسعر السوق الحالي.

Python
1 #  market order
2 result = tradeAPI.place_order(
3     instId="BTC-USDT",
4     tdMode="cash",
5     side="buy",
6     ordType="market",
7     sz="100",
8 )
9 print(result)

10.3 كيف يمكنني استخدام مُعامِل العملة المستهدفة tgtCcy أثناء التداول الفوري؟

في التداول الفوري، يُحدّد مُعامِل العملة المُستهدفة tgtCcy وحدة مُعامِل الحجم sz، والتي يمكن أن تكون إمّا عملة الأساس أو عملة التسعير لزوج التداول. فعلى سبيل المثال، في الزوج BTC-USDT، تكون عملة الأساس هي BTC وعملة التسعير هي USDT.

وافتراضيًا تكون العملة المُستهدفة هي عملة التسعير، أي tgtCcy = quote_ccy لطلبات الشراء، مما يعني أن مُعامِل الحجم sz مُحدّد بوحدة عملة التسعير. في حين أنّ القيمة الافتراضية لمُعامل العملة المُستهدفة tgtCcy لطلبات البيع هي عملة الأساس base_ccy، مما يعني أن مُعامِل الحجم sz مُحدّد بوحدة عملة الأساس.

ففي المثال أدناه، أنت بصدد تعيين طلب لشراء ما قيمته 100 USD من عملات BTC بسعر السوق.

Python
1 #  market order
2 result = tradeAPI.place_order(
3     instId="BTC-USDT",
4     tdMode="cash",
5     side="buy",
6     ordType="market",
7     sz="100",
8     tgtCcy="quote_ccy" # this determines the unit of the sz parameter.
9 )
10 print(result)

10.4 كيف يمكنني استخدام مُعامِل مُعرّف طلب العميل clOrdId؟

يمكنك تحديد مُعرِّف طلب العميل الخاص بك لدى تعيين طلب عن طريق تحديد قيمة المُعامِل clOrdId، والذي يمكنك استخدامه لاحقًا كمُعرّف للطلب بدلاً من المُعامِل ordId لدى استدعاء دالة واجهة برمجة التطبيقات المسؤولة عن إلغاء الطلب أو تعديله أو جلب معلوماته.

Python
1 #  market order
2 result = tradeAPI.place_order(
3     instId="BTC-USDT",
4     tdMode="cash",
5     side="buy",
6     ordType="market",
7     sz="100",
8     clOrdId="003" # you can define your own client defined order ID
9 )
10 print(result)

11. كيف يمكنني الحصول على تفاصيل طلب معين؟

لمزيد من المعلومات حول كيفية الحصول على التفاصيل حول طلب معين، يُرجى قراءة دليلنا الإرشادي المُخصّص.

11.1 باستخدام مُعامِل مُعرّف الطلب ordId

Python
1 result = tradeAPI.get_order(instId="BTC-USDT", ordId="497819823594909696")
2 print(result)

11.2 باستخدام مُعامِل مُعرّف طلب العميل clOrdId

Python
1 result = tradeAPI.get_order(instId="BTC-USDT", clOrdId="002")
2 print(result)

12. كيف يمكنني إلغاء طلب؟

لمزيد من المعلومات حول كيفية إلغاء طلب، يُرجى قراءة دليلنا الإرشادي المُخصّص.

كما يمكنك استخدام مُعامِل مُعرّف طلب العميل clOrdId بدلًا من مُعامِل مُعرّف الطلب ordId.

Python
1 result = tradeAPI.cancel_order(instId="BTC-USDT", ordId = "489093931993509888")
2 print(result)

13. كيف يمكنني تعديل طلب؟

لمزيد من المعلومات حول كيفية تعديل طلب، يُرجى قراءة دليلنا الإرشادي المُخصّص.

كما يمكنك استخدام مُعامِل مُعرّف طلب العميل clOrdId بدلًا من مُعامِل مُعرّف الطلب ordId.

Python
1 result = tradeAPI.amend_order(
2     instId="BTC-USDT",
3     ordId="489103565508685824",
4     newSz="0.012"
5 )
6 print(result)

14. كيف يمكنني الوصول إلى قائمة الطلبات المفتوحة؟

لمزيد من المعلومات حول كيفية الوصول إلى الطلبات المفتوحة، يُرجى قراءة دليلنا الإرشاديّ المُخصّص.

Python
1 result = tradeAPI.get_order_list()
2 print(result)

15. كيف يمكنني الوصول إلى سجل الطلبات؟

15.1 بالنسبة للطلبات خلال آخر 7 أيام

لمزيد من المعلومات حول كيفية الوصول إلى سجل الطلبات لآخر 7 أيام، يُرجى قراءة دليلنا الإرشاديّ المُخصّص.

Python
1 result = tradeAPI.get_orders_history(
2     instType="SPOT"
3 )
4 print(result)

15.2 بالنسبة للطلبات خلال آخر 3 أشهر

لمزيدٍ من المعلومات حول كيفية الوصول إلى سجل الطلبات لآخر 3 أشهر، يُرجى قراءة دليلنا الإرشاديّ المُخصّص.

Python
1 result = tradeAPI.get_orders_history_archive(
2     instType="SPOT"
3 )
4 print(result)

16. كيف يمكنني استخدام واجهة برمجة التطبيقات API من OKX بمستوى أعلى باستخدام المُفكّرة التفاعلية Jupyter Notebook؟

لمزيدٍ من الأمثلة، قم بتنزيل المُفكّرة التفاعلية Jupyter Notebook بالكامل من هنا.

إذا كانت لديك أي أسئلة حول واجهات برمجة التطبيقات APIs الخاصّة بنا، يمكنك الانضمام إلى مجتمعنا الخاص بواجهات برمجة التطبيقات API وطرحها فيه.