وسائل لوڈ ہو رہے ہیں... لوڈنگ...

بیک ٹیسٹ سسٹم

ایک بار جب آپ نے ایک مقداری تجارتی حکمت عملی کا ڈیزائن مکمل کرلیا ہے تو ، آپ اپنی حکمت عملی کی بنیادی صورتحال کو کیسے جان سکتے ہیں ، جیسے حکمت عملی کی منطق اور حکمت عملی کی واپسی کی سمت؟ یقینا ، ہم حقیقی رقم کو براہ راست حقیقی تجارتی مارکیٹ میں حکمت عملی چلانے کے لئے استعمال نہیں کرسکتے ہیں ، لیکن ہم آپ کی حکمت عملی کی جانچ کرنے اور تاریخی اعداد و شمار میں اپنی حکمت عملی کے منافع کو جاننے کے لئے تاریخی اعداد و شمار کا استعمال کرسکتے ہیں۔

بیک ٹیسٹ سسٹم ماڈل

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم بیک ٹیسٹ سسٹم کو تقسیم کرتا ہےبوٹ کی سطحاورنمونے کی سطح. بوٹ کی سطح مکمل طور پر مکمل تاریخی اعداد و شمار کے مطابق backtest کرنے کے لئے ہے؛ جبکہ تخروپن کی سطح backtest پیداtickبیک ٹیسٹ کے لئے باقاعدگی سے وقفوں میں حقیقی K- لائن کے اعداد و شمار کے مطابق۔ وہ دونوں حقیقی تاریخی اعداد و شمار پر مبنی ہیں ، لیکن بوٹ کی سطح کے اعداد و شمار زیادہ درست ہیں اور نتائج زیادہ قابل اعتماد ہیں۔ تاہم ، بیک ٹیسٹنگ صرف تاریخی اعداد و شمار کے مطابق حکمت عملی کی کارکردگی ہے۔ تاریخی اعداد و شمار مستقبل کی مارکیٹ کی مکمل نمائندگی نہیں کرسکتے ہیں۔ تاریخی مارکیٹ دوبارہ ہوسکتی ہے ، یا اس سے بلیک سوان کا بھی سبب بن سکتا ہے۔ لہذا ، بیک ٹیسٹ کے نتائج کو عقلی اور معروضی طور پر سلوک کیا جانا چاہئے۔

کےسمیلیشن کی سطح ٹکتخروپن پیداٹِک ڈیٹابنیادی K لائن مدت کی بنیاد پر، ہر بنیادی K لائن مدت زیادہ سے زیادہ 12 backtest وقت پوائنٹس پیدا کرے گا؛ جبکہحقیقی مارکیٹ کی سطح ٹکبیک ٹیسٹنگ میں سیکنڈ فی سیکنڈ جمع کردہ حقیقی ٹِک ڈیٹا کا استعمال کیا جاتا ہے ، اعداد و شمار کا حجم بہت بڑا ہے اور بیک ٹیسٹنگ کی رفتار سست ہے ، لہذا اسے بہت طویل عرصے تک بیک ٹیسٹ نہیں کیا جاسکتا ہے۔ ایف ایم زیڈ کوانٹ کا بیک ٹیسٹ میکانزم حکمت عملی کو ایک ہی کے لائن پر متعدد بار تجارت کرنے کی اجازت دیتا ہے ، اس صورتحال سے بچنے کے لئے جہاں تجارت صرف اختتامی قیمت پر ہی انجام دی جاسکتی ہے۔ بیک ٹیسٹ کی رفتار کو مدنظر رکھتے ہوئے یہ زیادہ درست ہے۔

بیک ٹسٹنگ سسٹم میکانزم کی تفصیل

  • سمیلیشن کی سطح ٹِک کےسمیلیشن کی سطح ٹکبیک ٹیسٹنگ سسٹم کے بنیادی K- لائن ڈیٹا پر مبنی ہے ، جو کسی خاص الگورتھم کے مطابق کسی دیئے گئے بنیادی K- لائن بار کی اعلی ترین قیمت ، کم سے کم قیمت ، افتتاحی قیمت ، اور اختتامی قیمت کی اقدار کے فریم ورک میں بیک ٹیسٹ کے لئے ٹک ڈیٹا کی نقالی کرتا ہے۔ بیک ٹیسٹنگ ٹائم سیریز پر ریئل ٹائم ٹک ڈیٹا کے طور پر ، جب یہ حکمت عملی پروگرام انٹرفیس کو کال کرتا ہے تو یہ واپس آجاتا ہے۔ تفصیلات کے لئے ، براہ کرم ملاحظہ کریں:بیک ٹسٹنگ سسٹم سیمولیشن لیول میکانزم کی تفصیل.

  • بوٹ لیول ٹِک بوٹ لیول بیک ٹیسٹ بار ٹائم سیریز میں اصل ٹِک لیول ڈیٹا ہے۔ ٹِک لیول ڈیٹا پر مبنی حکمت عملیوں کے لئے ، بیک ٹیسٹ کے لئے حقیقی مارکیٹ لیول کا استعمال حقیقت سے قریب ہے۔ بوٹ لیول بیک ٹیسٹ میں ، ٹِک ڈیٹا اصلی ریکارڈ شدہ ڈیٹا ہے ، نہ کہ نقلی۔ یہ گہرائی کے اعداد و شمار ، مارکیٹ ٹریڈنگ کے ریکارڈ ڈیٹا پلے بیک ، کسٹم گہرائی اور ہر انفرادی تجارتی ڈیٹا کی حمایت کرتا ہے۔ اصلی مارکیٹ لیول ڈیٹا بیک ٹیسٹ کا زیادہ سے زیادہ سائز زیادہ سے زیادہ 50MB تک ہے ، جس میں ڈیٹا سیٹ کی اوپری حد کے اندر بیک ٹیسٹ ٹائم رینج کی کوئی حد نہیں ہے۔ اگر آپ کو بیک ٹیسٹ ٹائم رینج کو زیادہ سے زیادہ بڑھانے کی ضرورت ہے تو ، آپ گیئر گہرائی کی ترتیب کی قدر کو کم کرسکتے ہیں اور بیک ٹیسٹ ٹائم رینج کو بڑھانے کے لئے ہر انفرادی ٹریڈنگ ڈیٹا کا استعمال نہیں کرسکتے ہیں۔GetDepth, GetTradesری پلے بیک مارکیٹ کے اعداد و شمار حاصل کرنے کے لئے افعال.GetTicker, GetTrades, GetDepthاورGetRecordsجب وقت بیک ٹسٹ ٹائم لائن پر چلتا ہے تو وقت کو متعدد بار آگے نہیں بڑھایا جائے گا (جس سے اگلے مارکیٹ ڈیٹا لمحے میں چھلانگ نہیں ہوگی) ۔ مذکورہ بالا افعال میں سے کسی ایک کو بار بار کال کرنے سے بیک ٹسٹ ٹائم لائن پر آگے بڑھنے کے لئے بیک ٹسٹ ٹائم کو آگے بڑھایا جائے گا (اگلے مارکیٹ ڈیٹا لمحے میں چھلانگ لگائیں) ۔ جب بیک ٹسٹ کے لئے حقیقی مارکیٹ کی سطح کا استعمال کیا جاتا ہے تو ، پہلے وقت کا انتخاب کرنے کی سفارش نہیں کی جاتی ہے۔ ابتدائی وقت کی مدت میں حقیقی مارکیٹ کی سطح کے اعداد و شمار نہیں ہوسکتے ہیں۔

روبوٹ سطح کی ٹِکاورتخروپن کی سطح کی ٹِکموڈ ، بیک ٹسٹ سسٹم کا ٹرانزیکشن میچنگ میکانزم: آرڈر ٹرانزیکشن میچنگ دیکھنے والی قیمت کے مطابق کی جاتی ہے اور پوری مقدار میں تجارت کی جاتی ہے۔ لہذا ، جزوی ٹرانزیکشن کے منظر نامے کو بیک ٹسٹ سسٹم میں ٹیسٹ نہیں کیا جاسکتا ہے۔

بیک ٹیسٹنگ سسٹم متعدد پروگرامنگ زبانوں کی حمایت کرتا ہے

بیک ٹسٹنگ سسٹم بیک ٹسٹنگ کی حکمت عملیوں کی حمایت کرتا ہے جو لکھے گئے اور ڈیزائن کیے گئے ہیں:JavaScript, TypeScript, Python, C++, PINE, MyLanguage, Blocklyنمائش. کے بیک ٹسٹجاوا اسکرپٹاورC++تجارتی حکمت عملی براؤزر میں کیا جاتا ہے، اور حقیقی مارکیٹ بوٹ یاویکس ایپemulated تبادلہ حقیقی مارکیٹ (یعنیویکس ایپFMZ Quant ٹریڈنگ پلیٹ فارم کے emulated تبادلہ) کسی بھی دوسرے سافٹ ویئر، لائبریریوں یا ماڈیولز نصب کرنے کے بغیر چلتا ہے. کے بیک ٹیسٹپائیتھونڈوکر پر کیا جاتا ہے۔ یہ ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کے ذریعہ شامل عوامی سرور پر کیا جاسکتا ہے ، اور یہ صارف کے اپنے ڈوکر پر بھی کیا جاسکتا ہے۔ حقیقی مارکیٹ آپریشن اور بیک ٹسٹ دونوں پر انحصار کرتا ہےپائیتھوناس نظام پر نصب کیا گیا ہے جہاں ڈوکر واقع ہے۔ اگر کچھ لائبریریوں کی ضرورت ہو تو ، انہیں دستی طور پر انسٹال کرنے کی ضرورت ہے (صرف عام)پائیتھونلائبریریوں FMZ Quant عوامی سرورز پر حمایت کر رہے ہیں).

یہ حمایت کرتا ہےجاوا اسکرپٹکروم ڈیو ٹولز میں حکمت عملی بیک ٹسٹنگ ڈیبگنگبراہ مہربانی ملاحظہ کریں.

بیک ٹسٹنگ سسٹم میں معاون تبادلہ

  • کریپٹوکرنسی کریپٹو کرنسیوں کے لئے اہم اسپاٹ اور فیوچر ایکسچینج۔ تمام قسم کے تبادلے پر ڈیٹا کی حمایت کرتا ہے۔
  • فٹو سیکیورٹیز ہانگ کانگ کے اسٹاک، امریکی اسٹاک اور دیگر مارکیٹوں.

بیک ٹیسٹنگ سسٹم پیرامیٹر کی اصلاح

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کے بیک ٹیسٹ سسٹم کی پیرامیٹر کی اصلاح کی تقریب بیک ٹیسٹنگ کے دوران ہر پیرامیٹر کی اصلاح کے اختیار کے مطابق پیرامیٹر کے مجموعے کو ترتیب دینا ہے۔ Simulation Backtesting صفحے کے حکمت عملی پیرامیٹر سیکشن میں ، چیک کریںاصلاحآپشن حکمت عملی پیرامیٹر کے دائیں جانب اصلاح کی ترتیبات کو ظاہر کرنے کے لئے.

  • کم سے کم قدر: پیرامیٹرز کی ابتدائی قیمت کو محدود کرنے کے لئے.
  • زیادہ سے زیادہ قدر: جزوی تبدیلیوں کے بعد پیرامیٹرز کی زیادہ سے زیادہ قیمت کو محدود کرنے کے لئے.
  • قدم کا سائز: پیرامیٹرز کی اضافی متغیر مقدار۔
  • بیک وقت گھاس: پیرامیٹر کی اصلاح کے دوران، ہر بیک ٹیسٹ پیرامیٹر مجموعہ کے بیک وقت عملدرآمد کے لئے موضوعات کی تعداد مقرر کریں. یہ آپشن صرف میں حکمت عملی پیرامیٹر کی اصلاح کی حمایت کرتا ہےJavaScript, PINE، اورMy Language، اور ٹیمپلیٹس پر پیرامیٹر کی اصلاح کی حمایت نہیں کرتا.

پیرامیٹر مجموعے کی بنیاد پر پیدا کر رہے ہیںminimum, maximum، اورstep sizeترتیبات۔ بیک ٹسٹنگ سسٹم بیک ٹسٹنگ کے لئے ان پیرامیٹر کے مجموعوں کے ذریعے تکرار کرتا ہے (یعنی ، ہر پیرامیٹر کے مجموعے کو ایک بار بیک ٹسٹ کرنا) ۔نمبرbacktesting کے نظام میں بہتر بنایا جا سکتا ہے.

بیک ٹسٹ کی ترتیبات محفوظ کریں

میںحکمت عملی ترمیم کا صفحہ، بیک ٹیسٹ (یعنی بیک ٹیسٹ سسٹم) کے صفحہ بندی میں ، آپ حکمت عملی کو بیک ٹیسٹ کرنے کے لئے بیک ٹیسٹ کی ترتیب اور حکمت عملی کے پیرامیٹرز جیسے اختیارات مرتب کرسکتے ہیں۔ بیک ٹیسٹ کی ترتیبات کا حوالہ بیک ٹیسٹ ٹائم رینج ، ایکسچینج پلیٹ فارم ، سلیپ پوائنٹ اور سروس فیس وغیرہ سے ہوتا ہے۔ جبکہ حکمت عملی کے پیرامیٹرز کا استعمال حکمت عملی کے لئے پیرامیٹر کے اختیارات مرتب کرنے کے لئے کیا جاتا ہے۔ جب یہ پیرامیٹرز مقرر کر رہے ہیں، آپ کو سیٹ backtesting کی حکمت عملی پر عمل کر سکتے ہیں، پھر سیٹ ترتیب کی معلومات کو محفوظ کرنے کے لئے کس طرح؟

    1. آپ Backtest ترتیبات محفوظ کریں بٹن پر استعمال کر سکتے ہیںحکمت عملی ترمیم صفحہکوڈ کی شکل میں حکمت عملی کے ماخذ کوڈ میں بیک ٹسٹ ترتیب کی تمام معلومات (بشمول بیک ٹسٹ کی ترتیبات اور حکمت عملی پیرامیٹر کی ترتیبات) کو ریکارڈ کرنے کے لئے.
    1. جب آپ حکمت عملی میں ترمیم کے صفحے پر Save Strategy بٹن پر کلک کرکے حکمت عملی کو محفوظ کرتے ہیں تو ، پلیٹ فارم خود بخود موجودہ بیک ٹیسٹ کی ترتیبات ، حکمت عملی پیرامیٹر کی تشکیل ، اور دیگر معلومات کو ریکارڈ کرے گا۔ کس طرح بیک ٹیسٹ کے نظام میں بیک ٹیسٹ کی ترتیب لوڈ کرنے کے لئے؟
    1. حکمت عملی میں ترمیم کرنے والے صفحے کو تازہ کرنے یا اس حکمت عملی میں ترمیم کرنے والے صفحے کو دوبارہ کھولنے پر، Save Backtest Settings بٹن کے ذریعہ ریکارڈ کردہ بیک ٹسٹ ترتیب کی معلومات پہلے خود بخود لوڈ کی جائیں گی۔
    1. اگر کوئی بیک ٹسٹ ترتیب کی معلومات موجودہ حکمت عملی کوڈ میں ایک تبصرہ کے طور پر ریکارڈ نہیں ہےbacktestSave Backtest Settings بٹن کے ذریعے حکمت عملی کے کوڈ میں محفوظ کیا جاتا ہے) ، بیک ٹیسٹ سسٹم خود بخود بیک ٹیسٹ کی ترتیبات کو بیک ٹیسٹ کی تشکیل کی معلومات پر تشکیل دیتا ہے جب Save Strategy بٹن پر آخری بار کلک کیا گیا تھا موجودہ حکمت عملی کے لئے.
    1. اگر حکمت عملی کے کوڈ کے آغاز میں تبصرے کی شکل میں ریکارڈ کردہ بیک ٹیسٹ کی ترتیب کی معلومات کو حکمت عملی کے ترمیم کے صفحے پر تبدیل کیا جاتا ہے، تو آپ کو فی الحال اپ ڈیٹ بیک ٹیسٹ کی ترتیب کی معلومات کو حکمت عملی بیک ٹیسٹ انٹرفیس آپشن میں ہم آہنگ کرنے کی ضرورت ہے.backtestحکمت عملی کے ترمیم کے علاقے میں.
/*backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
'''backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''
/*backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

Save backtest settings پر کلک کریں، کچھ فارمیٹ اختلافات ہیںJavaScript/Python/C++/MyLanguage/PINEزبانوں جب حکمت عملی کوڈ میں بیک ٹسٹ کی ترتیبات کو محفوظ کریں: MyLanguage:

(*backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*)

پائن زبان:

/*backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

اپنی مرضی کے مطابق ڈیٹا ماخذ

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کا بیک ٹسٹنگ سسٹم کسٹم ڈیٹا ذرائع کی حمایت کرتا ہے ، بیک ٹسٹنگ سسٹمGETبیک ٹیسٹ کے لئے بیرونی ڈیٹا ماخذ حاصل کرنے کے لئے کسٹم یو آر ایل (عوامی طور پر قابل رسائی یو آر ایل) کی درخواست کرنے کا طریقہ۔ اضافی درخواست پیرامیٹرز مندرجہ ذیل ہیں:

پیرامیٹر معنی وضاحت
علامت علامت کا نام اسپاٹ مارکیٹ کے اعداد و شمار، جیسے:BTC_USDT، فیوچر مارکیٹ کے اعداد و شمار جیسے:BTC_USDT.swap، فیوچر پرپک معاہدے کی فنڈنگ کی شرح کے اعداد و شمار، جیسے:BTC_USDT.funding، فیوچر پرپکوٹ معاہدوں کی قیمت انڈیکس کے اعداد و شمار جیسے:BTC_USDT.index
ایڈ تبادلہ جیسے OKX، Futures_OKX
گول اعداد و شمار کی درستگی سچ کا مطلب یہ ہے کہ کسٹم ڈیٹا ماخذ کے ذریعہ واپس آنے والے اعداد و شمار میں مخصوص صحت سے متعلق وضاحت کی گئی ہے۔ کسٹم ڈیٹا ماخذ کو ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم بیک ٹیسٹنگ سسٹم کے ذریعہ بھیجے گئے درخواست کو اس طرح طے کیا گیا ہے:round=true
مدت K لائن ڈیٹا پیریڈ (ملسی سیکنڈ) جیسے:60000ایک منٹ کی مدت ہے
گہرائی گہرائی کی سطحیں 1-20
تجارت ڈیٹا کو تقسیم کرنے کی ضرورت ہے true ((1) / false ((0)
سے آغاز کا وقت یونکس ٹائم اسٹیمپ
کرنے کے لئے اختتام کا وقت یونکس ٹائم اسٹیمپ
تفصیل علامت کی تفصیلات کے لئے درخواست کے اعداد و شمار سچ کا مطلب ہے کہ اسے کسٹم ڈیٹا ماخذ کے ذریعہ فراہم کرنے کی ضرورت ہے۔ کسٹم ڈیٹا ماخذ کو ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم بیک ٹیسٹنگ سسٹم کے ذریعہ بھیجے گئے درخواست کو اس طرح طے کیا گیا ہے:detail=true
رسم اس پیرامیٹر کو نظر انداز کیا جا سکتا ہے

جب اسپاٹ ایکسچینج اور فیوچر ایکسچینج آبجیکٹ کا ڈیٹا ماخذ اپنی مرضی کے مطابق ڈیٹا ماخذ (فیڈر) پر مقرر کیا جاتا ہے تو ، بیک ٹسٹنگ سسٹم اپنی مرضی کے مطابق ڈیٹا ماخذ سروس کو ایک درخواست بھیجتا ہے:

http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Bitget&from=1351641600&period=86400000&round=true&symbol=BTC_USDT&to=1611244800&trades=1
http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Futures_OKX&from=1351641600&period=86400000&round=true&symbol=BTC_USDT.swap&to=1611244800&trades=1

ڈیٹا فارمیٹ

واپسی کی شکل مندرجہ ذیل دو فارمیٹس میں سے ایک ہونا ضروری ہے (جو نظام کی طرف سے خود کار طریقے سے تسلیم کیا جائے گا):

  • تخروپن کی سطح Tick، مندرجہ ذیل JSON ڈیٹا کا ایک مثال ہے:

    {
        "detail": {
            "eid": "Binance",
            "symbol": "BTC_USDT",
            "alias": "BTCUSDT",
            "baseCurrency": "BTC",
            "quoteCurrency": "USDT",
            "marginCurrency": "USDT",
            "basePrecision": 5,
            "quotePrecision": 2,
            "minQty": 0.00001,
            "maxQty": 9000,
            "minNotional": 5,
            "maxNotional": 9000000,
            "priceTick": 0.01,
            "volumeTick": 0.00001,
            "marginLevel": 10
        },
        "schema":["time", "open", "high", "low", "close", "vol"],
        "data":[
            [1564315200000, 9531300, 9531300, 9497060, 9497060, 787],
            [1564316100000, 9495160, 9495160, 9474260, 9489460, 338]
        ]
    }
    
  • روبوٹ کی سطح کی جانچ پڑتال کریں، مندرجہ ذیل JSON ڈیٹا کا ایک مثال ہے: ٹِک لیول بیک ٹسٹ ڈیٹا (مارکیٹ کی گہرائی کے بارے میں معلومات پر مشتمل ہے، اور گہرائی کا فارمیٹ[price, volume]اس میں گہرائی کی متعدد سطحیں ہوسکتی ہیں،asksقیمتوں میں اضافے کے حکم کے لئےbidsقیمت میں کمی کے لئے) ۔

    {
        "detail": {
            "eid": "Binance",
            "symbol": "BTC_USDT",
            "alias": "BTCUSDT",
            "baseCurrency": "BTC",
            "quoteCurrency": "USDT",
            "marginCurrency": "USDT",
            "basePrecision": 5,
            "quotePrecision": 2,
            "minQty": 0.00001,
            "maxQty": 9000,
            "minNotional": 5,
            "maxNotional": 9000000,
            "priceTick": 0.01,
            "volumeTick": 0.00001,
            "marginLevel": 10
        },
        "schema":["time", "asks", "bids", "trades", "close", "vol"],
        "data":[
            [1564315200000, [[9531300, 10]], [[9531300, 10]], [[1564315200000, 0, 9531300, 10]], 9497060, 787],
            [1564316100000, [[9531300, 10]], [[9531300, 10]], [[1564316100000, 0, 9531300, 10]], 9497060, 787]
        ]
    }
    
میدان تفصیل
تفصیل درخواست کردہ ڈیٹا کی قسم کے بارے میں تفصیلی معلومات،

بشمول denominated کرنسی کا نام، ٹریڈنگ کرنسی، درستگی، کم از کم آرڈر کی مقدار، وغیرہ. ∙ اسکیما ∙ یہ اعداد و شمار میں کالموں کی خصوصیات کی وضاحت کرتا ہے صف، جو بڑے اور چھوٹے حسی ہے اور صرف وقت تک محدود ہے، کھلا، اعلی، کم، بند، حجم، پوچھتا ہے، بولی دیتا ہے، تجارت کرتا ہے ڈیٹا۔ کالم کا ڈھانچہ، اسکیما کے مطابق ریکارڈ کردہ ڈیٹا ترتیبات.

تفصیلات کا میدان

میدان تفصیل
ایڈ ایکسچینج ID، براہ مہربانی نوٹ کریں کہ ایک کی جگہ اور مستقبل
بعض تبادلے کی مختلف ایڈز ہوتی ہیں۔
علامت تجارتی مصنوعات کا کوڈ
عرفی نام تبادلہ میں علامت موجودہ کے مطابق
تجارتی مصنوعات کا کوڈ
بیس کرنسی تجارت کی کرنسی
حوالہ کرنسی کرنسی
مارجن کرنسی مارجن کرنسی
بیسپیسیشن لین دین کی کرنسی کی درستگی
حوالہ درستگی قیمتوں کا تعین کرنسی کی درستگی
منٹ کم از کم آرڈر کی مقدار
زیادہ سے زیادہ زیادہ سے زیادہ آرڈر کی مقدار
کم از کم کم از کم آرڈر کی مقدار
زیادہ سے زیادہ زیادہ سے زیادہ آرڈر کی رقم
قیمتٹیک قیمتوں میں اضافہ
حجم نشان زد کریں آرڈر کی مقدار کی کم سے کم تبدیلی کی قیمت (ایک چھلانگ میں)
آرڈر کی مقدار)
مارجن سطح فیوچر لیورج ویلیو
معاہدہٹائپ مستقل معاہدوں کے لئے:swap،

backtest نظام فنڈنگ کی شرح اور قیمت انڈیکس بھیجنے کے لئے جاری رہے گی درخواستیں.

کالم کے خصوصی صفاتasks, bids, trades:

میدان تفصیل تبصرے
پوچھتا / بولی دیتا ہے [قیمت، حجم،...] مثال کے طور پر،

کےLive Trading Level Tickاعداد و شمار کی مثال:[[9531300, 10]]∙∙ ♪ تجارت ♪ ♪ وقت، سمت، قیمت، حجم،... ♪ مثال کے طور پر، ڈیٹا میںLive Trading Level Tickاعداد و شمار کی مثال:[[1564315200000, 0, 9531300, 10]] |

مستقبل کے تبادلے پر ہمیشہ کے لئے معاہدوں backtesting جب، اپنی مرضی کے مطابق اعداد و شمار کے ذرائع کو بھی اضافی فنڈنگ کی شرح کے اعداد و شمار اور قیمت کی ضرورت ہوتی ہے انڈیکس ڈیٹا۔ بیک ٹیسٹنگ سسٹم درخواستیں بھیجتا رہے گا فنڈنگ کی شرحوں کے لئے صرف جب مطلوبہ مارکیٹ کے اعداد و شمار واپس کیے جائیں اور واپسی کی ساخت میں تفصیلات کے میدان میں مشتمل ہے"contractType": "swap"کلیدی قدر کی جوڑی.

جب بیک ٹسٹنگ سسٹم کو فنڈنگ کی شرح کے اعداد و شمار موصول ہوتے ہیں، تو یہ قیمت انڈیکس کے اعداد و شمار کے لئے درخواستیں بھیجنا جاری رکھیں.

فنڈنگ کی شرح کے اعداد و شمار کی ساخت مندرجہ ذیل ہے:

{
    "detail": {
        "eid": "Futures_Binance",
        "symbol": "BTC_USDT.funding",
        "alias": "BTC_USDT.funding",
        "baseCurrency": "BTC",
        "quoteCurrency": "USDT",
        "marginCurrency": "",
        "basePrecision": 8,
        "quotePrecision": 8,
        "minQty": 1,
        "maxQty": 10000,
        "minNotional": 1,
        "maxNotional": 100000000,
        "priceTick": 1e-8,
        "volumeTick": 1e-8,
        "marginLevel": 10
    },
    "schema": [
        "time",
        "open",
        "high",
        "low",
        "close",
        "vol"
    ],
    "data": [
        [
            1584921600000,
            -16795,
            -16795,
            -16795,
            -16795,
            0
        ],
        [
            1584950400000,
            -16294,
            -16294,
            -16294,
            -16294,
            0
        ]
        // ...
    ]
}
  • ملحقہ ادوار کے درمیان وقفہ 8 گھنٹے ہے
  • مثال کے طور پر، بائننس کی فنڈنگ کی شرح ہر 8 گھنٹے میں اپ ڈیٹ کی جاتی ہے۔ کیوں؟ کیا فنڈنگ کی شرح کے اعداد و شمار -16795 ہیں؟ کیونکہ K لائن کے اعداد و شمار کی طرح ، نیٹ ورک ٹرانسمیشن کے دوران فلوٹنگ پوائنٹ کی درستگی کے نقصان سے بچنے کے لئے ، اعداد و شمار عددی قسم کا استعمال کرتے ہیں۔ فنڈنگ کی شرح کے اعداد و شمار بھی منفی ہوسکتے ہیں۔

بیک ٹسٹنگ سے فنڈنگ کی شرح کے اعداد و شمار کی درخواست کا ایک مثال نظام یہ ہے:

http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Futures_Binance&from=1351641600&period=86400000&round=true&symbol=BTC_USDT.funding&to=1611244800&trades=0

قیمت انڈیکس کے اعداد و شمار کی ساخت مندرجہ ذیل ہے:


{
    "detail": {
        "eid": "Futures_Binance",
        "symbol": "BTC_USDT.index",
        "alias": "BTCUSDT",
        "baseCurrency": "BTC",
        "quoteCurrency": "USDT",
        "contractType": "index",
        "marginCurrency": "USDT",
        "basePrecision": 3,
        "quotePrecision": 1,
        "minQty": 0.001,
        "maxQty": 1000,
        "minNotional": 0,
        "maxNotional": 1.7976931348623157e+308,
        "priceTick": 0.1,
        "volumeTick": 0.001,
        "marginLevel": 10,
        "volumeMultiple": 1
    },
    "schema": [
        "time",
        "open",
        "high",
        "low",
        "close",
        "vol"
    ],
    "data": [
        [1584921600000, 58172, 59167, 56902, 58962, 0],
        [1584922500000, 58975, 59428, 58581, 59154, 0],
        // ...
    ]
}

بیک ٹسٹنگ کے ذریعہ بھیجے گئے قیمت انڈیکس ڈیٹا کی درخواست کا ایک مثال نظام یہ ہے:

http://customserver:9090/data?custom=0&depth=20&detail=true&eid=Futures_Binance&from=1351641600&period=86400000&round=true&symbol=BTC_USDT.index&to=1611244800&trades=0

اپنی مرضی کے مطابق ڈیٹا ماخذ کا مثال

ڈیٹا ماخذ کا پتہ بتائیں، مثلاً،http://120.24.2.20:9090/dataاپنی مرضی کے مطابق ڈیٹا ماخذ سروس پروگرام کا استعمال کرتے ہوئے لکھا جاتا ہےGolang:

package main

import (
    "fmt"
    "net/http"
    "encoding/json"
)

func Handle (w http.ResponseWriter, r *http.Request) {
    // e.g. set on backtest DataSourse: http://xxx.xx.x.xx:9090/data

    // request: GET http://xxx.xx.x.xx:9090/data?custom=0&depth=20&detail=true&eid=OKX&from=1584921600&period=86400000&round=true&symbol=BTC_USDT&to=1611244800&trades=1
    //              http://xxx.xx.x.xx:9090/data?custom=0&depth=20&detail=true&eid=Futures_Binance&from=1599958800&period=3600000&round=true&symbol=BTC_USDT.swap&to=1611244800&trades=0
    fmt.Println("request:", r)

    // response
    defer func() {
        // response data
        /* e.g. data
        {
            "detail": {
                "eid": "Binance",
                "symbol": "BTC_USDT",
                "alias": "BTCUSDT",
                "baseCurrency": "BTC",
                "quoteCurrency": "USDT",
                "marginCurrency": "USDT",
                "basePrecision": 5,
                "quotePrecision": 2,
                "minQty": 0.00001,
                "maxQty": 9000,
                "minNotional": 5,
                "maxNotional": 9000000,
                "priceTick": 0.01,
                "volumeTick": 0.00001,
                "marginLevel": 10
            },
            "schema": [
                "time",
                "open",
                "high",
                "low",
                "close",
                "vol"
            ],
            "data": [
                [1610755200000, 3673743, 3795000, 3535780, 3599498, 8634843151],
                [1610841600000, 3599498, 3685250, 3385000, 3582861, 8015772738],
                [1610928000000, 3582499, 3746983, 3480000, 3663127, 7069811875],
                [1611014400000, 3662246, 3785000, 3584406, 3589149, 7961130777],
                [1611100800000, 3590194, 3641531, 3340000, 3546823, 8936842292],
                [1611187200000, 3546823, 3560000, 3007100, 3085013, 13500407666],
                [1611273600000, 3085199, 3382653, 2885000, 3294517, 14297168405],
                [1611360000000, 3295000, 3345600, 3139016, 3207800, 6459528768],
                [1611446400000, 3207800, 3307100, 3090000, 3225990, 5797803797],
                [1611532800000, 3225945, 3487500, 3191000, 3225420, 8849922692]
            ]
        }
        */
        
        // /* Simulation level Tick
        ret := map[string]interface{}{
            "detail": map[string]interface{}{
                "eid": "Binance",
                "symbol": "BTC_USDT",
                "alias": "BTCUSDT",
                "baseCurrency": "BTC",
                "quoteCurrency": "USDT",
                "marginCurrency": "USDT",
                "basePrecision": 5,
                "quotePrecision": 2,
                "minQty": 0.00001,
                "maxQty": 9000,
                "minNotional": 5,
                "maxNotional": 9000000,
                "priceTick": 0.01,
                "volumeTick": 0.00001,
                "marginLevel": 10,
            },
            "schema": []string{"time","open","high","low","close","vol"},
            "data": []interface{}{
                []int64{1610755200000, 3673743, 3795000, 3535780, 3599498, 8634843151},  // 1610755200000 : 2021-01-16 08:00:00
                []int64{1610841600000, 3599498, 3685250, 3385000, 3582861, 8015772738},  // 1610841600000 : 2021-01-17 08:00:00
                []int64{1610928000000, 3582499, 3746983, 3480000, 3663127, 7069811875},
                []int64{1611014400000, 3662246, 3785000, 3584406, 3589149, 7961130777},
                []int64{1611100800000, 3590194, 3641531, 3340000, 3546823, 8936842292},
                []int64{1611187200000, 3546823, 3560000, 3007100, 3085013, 13500407666},
                []int64{1611273600000, 3085199, 3382653, 2885000, 3294517, 14297168405},
                []int64{1611360000000, 3295000, 3345600, 3139016, 3207800, 6459528768},
                []int64{1611446400000, 3207800, 3307100, 3090000, 3225990, 5797803797},
                []int64{1611532800000, 3225945, 3487500, 3191000, 3225420, 8849922692},
            },
        }
        // */

        /* Bot level Tick
        ret := map[string]interface{}{
            "detail": map[string]interface{}{
                "eid": "Binance",
                "symbol": "BTC_USDT",
                "alias": "BTCUSDT",
                "baseCurrency": "BTC",
                "quoteCurrency": "USDT",
                "marginCurrency": "USDT",
                "basePrecision": 5,
                "quotePrecision": 2,
                "minQty": 0.00001,
                "maxQty": 9000,
                "minNotional": 5,
                "maxNotional": 9000000,
                "priceTick": 0.01,
                "volumeTick": 0.00001,
                "marginLevel": 10,
            },
            "schema": []string{"time", "asks", "bids", "trades", "close", "vol"},
            "data": []interface{}{
                []interface{}{1610755200000, []interface{}{[]int64{9531300, 10}}, []interface{}{[]int64{9531300, 10}}, []interface{}{[]int64{1610755200000, 0, 9531300, 10}}, 9497060, 787},
                []interface{}{1610841600000, []interface{}{[]int64{9531300, 15}}, []interface{}{[]int64{9531300, 15}}, []interface{}{[]int64{1610841600000, 0, 9531300, 11}}, 9497061, 789},                
            },
        }
        */

        b, _ := json.Marshal(ret)
        w.Write(b)
    }()
}
func main () {
    fmt.Println("listen http://localhost:9090")
    http.HandleFunc("/data", Handle)
    http.ListenAndServe(":9090", nil)
}

ٹیسٹ کی حکمت عملیJavaScriptمثال:

/*backtest
start: 2021-01-16 08:00:00
end: 2021-01-22 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"OKX","currency":"BTC_USDT","feeder":"http://120.24.2.20:9090/data"}]
args: [["number",2]]
*/

function main() {
    var ticker = exchange.GetTicker()
    var records = exchange.GetRecords()
    Log(exchange.GetName(), exchange.GetCurrency())
    Log(ticker)
    Log(records)
}

مقامی بیک ٹسٹ انجن

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم نےJavaScriptزبان اورPythonمقامی بیک ٹسٹ انجن کی زبان، بیک ٹسٹنگ کے دوران بنیادی K لائن مدت کی ترتیب کی حمایت.

بیک ٹیسٹ پیج شارٹ کٹ کیز

  • حکمت عملی ترمیم صفحہ اور Backtesting صفحہ کے درمیان سوئچ کرنے کے لئے شارٹ کٹ کی چابی چابی کا استعمال کریںCtrl +,Backtest صفحہ اور Edit Strategy صفحہ پر واپس سوئچ کرنے کے لئے.Ctrl، کلید دبائیں,.

  • بچت کی حکمت عملی کے لئے شارٹ کٹ کلید چابی کا استعمال کریںCtrl + sحکمت عملیوں کو بچانے کے لئے.

  • حکمت عملی backtest شروع کرنے کے لئے شارٹ کٹ چابی کا استعمال کریںCtrl + bStart Backtest کو فعال کرنے کے لیے۔

بیک ٹیسٹ ڈیٹا ڈاؤن لوڈ کریں

  • بیک ٹیسٹنگ سسٹم لاگ ڈیٹا ڈاؤن لوڈ کریں مخصوص حکمت عملی کو کھولیں اور اس حکمت عملی کو بیک ٹیسٹ کرنے کے لئے بیک ٹیسٹ پیج پر جائیں۔ بیک ٹیسٹ کے بعد دکھائے جانے والے حکمت عملی کے اسٹیٹس انفارمیشن کالم میں ، اوپری دائیں کونے میں ڈاؤن لوڈ ٹیبل بٹن موجود ہے۔ بیک ٹیسٹ کے آخر میں اسٹیٹس کالم کے اعداد و شمار کی سی ایس وی فائل ڈاؤن لوڈ کرنے کے لئے اس پر کلک کریں۔
  • بیک ٹیسٹنگ سسٹم کی حیثیت بار ڈیٹا ڈاؤن لوڈ کریں مخصوص حکمت عملی کو کھولیں اور حکمت عملی کو بیک ٹیسٹ کرنے کے لئے بیک ٹیسٹ پیج پر جائیں۔ بیک ٹیسٹ کے بعد دکھائے جانے والے حکمت عملی کے لاگ انفارمیشن کالم میں ، اوپری دائیں کونے میں ڈاؤن لوڈ ٹیبل بٹن موجود ہے۔ بیک ٹیسٹنگ لاگ ڈیٹا کی CSV فارمیٹ فائل ڈاؤن لوڈ کرنے کے لئے اس پر کلک کریں۔

بیک ٹیسٹنگ سسٹم میں شارپ الگورتھم

بیک ٹیسٹنگ سسٹم میں شارپ الگورتھم کا ماخذ کوڈ:

function returnAnalyze(totalAssets, profits, ts, te, period, yearDays) {
    // force by days
    period = 86400000
    if (profits.length == 0) {
        return null
    }
    var freeProfit = 0.03 // 0.04
    var yearRange = yearDays * 86400000
    var totalReturns = profits[profits.length - 1][1] / totalAssets
    var annualizedReturns = (totalReturns * yearRange) / (te - ts)

    // MaxDrawDown
    var maxDrawdown = 0
    var maxAssets = totalAssets
    var maxAssetsTime = 0
    var maxDrawdownTime = 0
    var maxDrawdownStartTime = 0
    var winningRate = 0
    var winningResult = 0
    for (var i = 0; i < profits.length; i++) {
        if (i == 0) {
            if (profits[i][1] > 0) {
                winningResult++
            }
        } else {
            if (profits[i][1] > profits[i - 1][1]) {
                winningResult++
            }
        }
        if ((profits[i][1] + totalAssets) > maxAssets) {
            maxAssets = profits[i][1] + totalAssets
            maxAssetsTime = profits[i][0]
        }
        if (maxAssets > 0) {
            var drawDown = 1 - (profits[i][1] + totalAssets) / maxAssets
            if (drawDown > maxDrawdown) {
                maxDrawdown = drawDown
                maxDrawdownTime = profits[i][0]
                maxDrawdownStartTime = maxAssetsTime
            }
        }
    }
    if (profits.length > 0) {
        winningRate = winningResult / profits.length
    }
    // trim profits
    var i = 0
    var datas = []
    var sum = 0
    var preProfit = 0
    var perRatio = 0
    var rangeEnd = te
    if ((te - ts) % period > 0) {
        rangeEnd = (parseInt(te / period) + 1) * period
    }
    for (var n = ts; n < rangeEnd; n += period) {
        var dayProfit = 0.0
        var cut = n + period
        while (i < profits.length && profits[i][0] < cut) {
            dayProfit += (profits[i][1] - preProfit)
            preProfit = profits[i][1]
            i++
        }
        perRatio = ((dayProfit / totalAssets) * yearRange) / period
        sum += perRatio
        datas.push(perRatio)
    }

    var sharpeRatio = 0
    var volatility = 0
    if (datas.length > 0) {
        var avg = sum / datas.length;
        var std = 0;
        for (i = 0; i < datas.length; i++) {
            std += Math.pow(datas[i] - avg, 2);
        }
        volatility = Math.sqrt(std / datas.length);
        if (volatility !== 0) {
            sharpeRatio = (annualizedReturns - freeProfit) / volatility
        }
    }

    return {
        totalAssets: totalAssets,
        yearDays: yearDays,
        totalReturns: totalReturns,
        annualizedReturns: annualizedReturns,
        sharpeRatio: sharpeRatio,
        volatility: volatility,
        maxDrawdown: maxDrawdown,
        maxDrawdownTime: maxDrawdownTime,
        maxAssetsTime: maxAssetsTime,
        maxDrawdownStartTime: maxDrawdownStartTime,
        winningRate: winningRate
    }
}
حکمت عملی ایڈیٹر حکمت عملی اندراج افعال