[TOC]

بنیادی ہدایات

آغاز

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کیا کر سکتا ہے؟

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

سبقوں کا مکمل سلسلہ

گرافک سبق:

اگر کوئی مسئلہ ہے تو ، آپ کسی بھی وقت فورم میں سوالات پوسٹ کرسکتے ہیں اور بحث کرسکتے ہیں ، یا ٹکٹ بھیج سکتے ہیں ، یا ٹیلیگرام گروپ میں منتظم سے رابطہ کرسکتے ہیں (ٹیلیگرام), عام طور پر, سوال کا جواب فوری طور پر دیا جائے گا.

ترقیاتی امداد کے لئے چیٹ جی پی ٹی کی حمایت

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

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

FMZ کوانٹ ٹریڈنگ پلیٹ فارم استعمال کرنے کی حمایت کرتا ہےJavaScript, TypeScript, Python, C++, Pine MylanguageاورBlockly Visualizationحکمت عملی لکھنے اور ڈیزائن کرنے کے لئے.

یہ حمایت کرتا ہےTypeScriptزبان، اب بھی اس پر مقررJavaScriptحکمت عملی جب ہم حکمت عملی تخلیق کرتے ہیں، تو ہم لکھتے ہیں// @ts-checkحکمت عملی کوڈ کے آغاز میں یا بٹن پر کلک کریںTypeScriptمیں تبدیل کرنے کے لئے حکمت عملی ترمیم کے علاقے کے اوپری دائیں کونے میںTypeScriptپلیٹ فارم کوڈ کو تسلیم کرے گاTypeScriptخود کار طریقے سے اور آپ کو مناسب تالیف اور قسم کی جانچ پڑتال کی حمایت کے ساتھ فراہم:

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

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

Blocklyنمائش کے سبق:

سیٹ کریںPythonترجمان کی طرف سے استعمالPythonحکمت عملی پروگرام

میں لکھے گئے حکمت عملیPython، backtesting یا لائیو ٹریڈنگ کے دوران، اگر ڈاکر سسٹم ماحول دونوں ہےپیتھون2اورپائیتھون3نصب، آپ کو مقرر کر سکتے ہیںPythonاسٹریٹیجی کی پہلی لائن پر رن ٹائم پر لانچ کیا جائے گا، جیسے#!python3اور#!python2، تاکہ نظام خود بخود مترجم تلاش کرے۔ اور آپ ایک مطلق راستہ بھی متعین کر سکتے ہیں، جیسے:#!/usr/bin/python3.

ڈوکر کیا ہے؟

ڈوکر کو آپ کی تجارتی حکمت عملی کے انجام دہندہ کے طور پر سمجھا جاسکتا ہے ، جو پیچیدہ ڈیٹا کی درخواستوں ، ڈیٹا کی وصولی ، نیٹ ورک لنکس ، لاگ پوسٹ بیک وغیرہ کے لئے ذمہ دار ہے۔ ڈوکر آپ کے سرور پر چلتا ہے ، یہاں تک کہ اگر ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کی ویب سائٹ میں نیٹ ورک کی خرابی ہو تو ، اس سے آپ کے ڈوکر کے آپریشن پر اثر نہیں پڑے گا۔ ڈوکر پر چل سکتا ہےلینکس, ونڈوز, میک او ایس, اینڈرائیڈ, رسبری پائی اے آر ایم لینکساور دیگر نظام.ڈوکر پیج, لینکس ڈوکر کی تنصیب اور اپ ڈیٹ کے اقدامات. بوٹس اور ڈاکر کی طرف سے منظم نوشتہ جات ڈائرکٹری میں محفوظ کر رہے ہیں/logs/storage. فائل ایکSqliteکے ساتھ ڈیٹا بیس فائلdb3، جس میں براہ راست ایڈیٹ کیا جا سکتا ہےSqliteانتظام سافٹ ویئر. توسیع کے ساتھ ایک فائل کے لئےdb3اصلی بوٹ ڈیٹا بیس میں، فائل کا نام بوٹ آئی ڈی ہے.

حمایت شدہ پروٹوکول

  • بلاکچین اثاثے: ہمارے پلیٹ فارم میں اب 50 سے زیادہ اہم بلاکچین اثاثوں (کرپٹوکرنسی) کے تبادلے کی حمایت کی جاتی ہے۔
  • عام پروٹوکول تک رسائی:عام پروٹوکول

حکمت عملی سیکورٹی

جب ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم پر تجارتی حکمت عملی تیار کی جاتی ہے تو ، حکمت عملی کا مواد صرف ایف ایم زیڈ اکاؤنٹ ہولڈرز کے لئے مرئی ہوتا ہے۔ اور ایف ایم زیڈ کی کوانٹ ٹریڈنگ پلیٹ فارم پر ، آپ حکمت عملی کے کوڈ کی مکمل لوکلائزیشن حاصل کرسکتے ہیں۔ مثال کے طور پر ، حکمت عملی کی منطق کو ایک میں جوڑ دیا جاسکتا ہےPythonپیکج، حکمت عملی کوڈ میں بھری ہوئی ہے، تاکہ حکمت عملی کے مواد کی لوکلائزیشن کا احساس کیا جا سکتا ہے.

سیکورٹیPythonکوڈ: کیونکہPythonایک اوپن سورس زبان ہے جو ڈیکمپائل کرنے میں انتہائی آسان ہے ، اگر حکمت عملی ذاتی استعمال کے لئے نہیں بلکہ کرایہ کے لئے ہے تو ، آپ اپنی ہی تعینات ڈوکر پر حکمت عملی چلا سکتے ہیں اور اسے ذیلی اکاؤنٹ یا مکمل ڈوکر مینجمنٹ کی شکل میں کرایہ پر دے سکتے ہیں اگر آپ کو حکمت عملی کے رساو کے بارے میں فکر ہے۔

کی خفیہ کاریPythonحکمت عملی کا کوڈ: ڈیفالٹ کے مطابق،Pythonحکمت عملی کا کوڈ مصنف کی طرف سے استعمال کیا جاتا ہے جب خفیہ نہیں ہے اور دوسروں کو کرایہ پر دیا جب خفیہ ہے. کے آغاز میں مندرجہ ذیل کوڈ میں ترمیم کی طرف سےPythonحکمت عملی، آپ کو ذاتی استعمال یا کرایہ کے لئے حکمت عملی کوڈ کو خفیہ کرنے کی وضاحت کر سکتے ہیں.Pythonاسٹریٹجی کوڈز کی خفیہ کاری کی حمایت کرنے والے ورژن مندرجہ ذیل ہیں:Python 2.7, Python 3.5اورPython 3.6.

  • حکمت عملی کے مصنفین اسے خود چلاتے ہیں اور رجسٹریشن کوڈ کے ذریعے استعمال کرنے کے لئے دوسروں کے لئے حکمت عملی کا کوڈ خفیہ کرتے ہیں: وضاحت کریں#!pythonکے طور پر پائیٹون مترجم کا ورژن، اور پھر استعمال,الگ رکھنے کے لئے؛ خفیہ کاری کمانڈ درج کریںencrypt. اگر آپ کے ورژن کی وضاحت نہیں کرتےPython، شامل کریں#!,encrypt directly.
 #!python,encrypt

یا

  #!encrypt
  • یہ حکمت عملی کوڈ کو خفیہ نہیں کرے گا جب حکمت عملی کے مصنفین اپنے استعمال کے لئے چلتے ہیں اور رجسٹریشن کوڈ کے ذریعے دوسروں کے ساتھ اشتراک کرتے ہیں:
  #!python, not encrypted

یا

  #!not encrypted

کوڈ استعمال کریںos.getenv('__FMZ_ENV__')کوڈ درست ہے یا نہیں کا تعین کرنے کے لئے؛ تار کی واپسی"encrypt"اشارہ کرتا ہے کہ اس نے اثر ڈالا ہے. یہ صرف حقیقی بوٹ میں درست ہے، اور بیک ٹیسٹ کو خفیہ نہیں کرے گاPythonحکمت عملی کے کوڈ.

#!encrypt
def main():
    ret = os.getenv('__FMZ_ENV__')
    # If the print variable ret is the string "encrypt" or ret == "encrypt" is true, that means the encryption is valid. 
    Log(ret, ret == "encrypt")

کلیدی تحفظ

حساس اعداد و شمار ، جیسے ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم پر تشکیل شدہ حکمت عملی پیرامیٹرز میں اکاؤنٹ کی معلومات اور خفیہ کردہ تار ، ویب براؤزر پر خفیہ کردہ ہیں۔ ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم پر محفوظ کردہ تمام معلومات خفیہ کردہ ہیں (سادہ متن کے اعداد و شمار نہیں) ، اور صرف صارفین نجی آلات ہی معلومات کو ڈیکرپٹ اور استعمال کرسکتے ہیں ، جو حساس ڈیٹا کی حفاظت کو بہت بہتر بناتا ہے۔ براہ کرم حکمت عملی کے کوڈ ، پیرامیٹر کی ترتیبات اور حکمت عملی کی وضاحت وغیرہ میں شامل دیگر حساس معلومات کو ظاہر یا فروخت نہ کریں۔

  • ہمارے پلیٹ فارم حساس معلومات کی مقامی ترتیب کی حمایت کرتا ہے، جیسے تبادلہ اکاؤنٹ کی معلومات اور خفیہ کلید اس صفحے پر جہاں پلیٹ فارم تبادلہ کی معلومات کی تشکیل کرتا ہے ، ماسک والے تمام خفیہ کردہ ٹیکسٹ باکس کنٹرولز ڈوکر کی مقامی فائل کو لوڈ کرنے کے لئے فائل کے راستے کی تشکیل کے طریقہ کار کی حمایت کرتے ہیں۔ مندرجہ ذیلRSA KEYتبادلہ کی توثیق کا طریقہ مثال کے طور پر تفصیل سے وضاحت کرنے کے لئے کہ ڈوکر پروگرام واقع ہونے والے آلہ پر حساس معلومات کو مقامی طور پر کس طرح ترتیب دیا جائے۔
  1. RSA پبلک کلید اور نجی کلید بنائیں۔ مثال کے طور پر، عوامی اور نجی چابیاں تشکیل دیںPKCS#8، تخلیق کے لئے بہت سے اوزار دستیاب ہیں، جیسے:openssl.
  2. تخلیق کریںRSA KEYتبادلے پر، اور میں پیدا عوامی کلید اپ لوڈپہلا مرحلہتخلیق کے دوران۔
  3. میں تخلیق کردہ نجی کلید کو محفوظ کریںپہلا مرحلہکی شکل میں ڈوکر کی ایک ہی ڈائرکٹری میںtxtفائل، یا ڈوکر پروگرام کی ڈائرکٹری میں دیگر راستوں میں.
  4. ایف ایم زیڈ پلیٹ فارم پر تبادلے کی تشکیل کرتے وقت،RSA KEYتشکیل کے ترمیم باکس میں تبادلہ کی طرف سے پیداAccess Key.
  5. FMZ پلیٹ فارم پر تبادلے کی تشکیل کرتے وقت،txtفائل ڈوکر میں ایک ہی سطح کی ڈائرکٹری میں رکھامرحلہ 3ترتیب کے ترمیم باکس میںSecret Keyمثال کے طور پر، اگر فائل کا نام رکھا جاتا ہے:rsaKey.txt، اور فائل اور ڈوکر ایک ہی سطح کی ڈائرکٹری میں بھرا ہوا ہے:file:///rsaKey.txtاگر فائل ڈوکر پروگرام کی ڈائرکٹری کے ساتھ ڈائرکٹری میں ہےrsa_key، پُر کریں:file:///rsa_key//rsaKey.txt. اگر آپ جگہrsaKey. txtآپ کے کمپیوٹر یا سرور پر کہیں اور اس کے مطابق ان ہدایات پر عمل کریں، یہ نوٹ کیا جانا چاہئے کہ اس فائل کو صرف اسی سطح کی ڈائرکٹریز یا ڈوکر کے حوالے سے ذیلی ڈائرکٹریز میں رکھا جا سکتا ہے.

اس سے یہ محفوظ بنانے کے لئے مقامی اور نجی کلید کو بچانے کے لئے، آپ کا حوالہ دے سکتے ہیںویڈیو وضاحتتفصیلی عمل کے لئے.

بیک ٹیسٹ سسٹم

بیک ٹسٹ سسٹم کیا ہے، اور اس کا استعمال کیا جاتا ہے؟

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

کیا بیک ٹیسٹ سسٹم کے ڈیٹا درست ہیں اور بیک ٹیسٹ کے نتائج کی درستگی کے بارے میں کیا خیال ہے؟

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

مختلف پروگرامنگ زبانوں کی حکمت عملیوں کو بیک ٹسٹ کرتے وقت آگاہ کرنے کے لئے مسائل:

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

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

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

بیک ٹسٹنگ سسٹم میں حکمت عملی DEBUG طریقہ

کروم ڈیو ٹولز میں جاوا اسٹریٹیجی بیک ٹیسٹنگ ڈیبگنگ

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

  • خفیہ کرنسی (کریپٹو کرنسی)

    نام قسم ہدایات
    بٹ فائنکس اسپاٹ ایکسچینج آبجیکٹ محدود تجارتی جوڑوں کی حمایت کرنا، جیسے:BTC_USD, ETH_USDاورLTC_USD، وغیرہ (نوٹ کریں کہ ٹریڈنگ جوڑوں کی کوٹیشن کرنسیUSDڈالر)
    بائننس اسپاٹ ایکسچینج آبجیکٹ محدود تجارتی جوڑوں کی حمایت کرنا، جیسے:BTC_USDT, ETH_USDT, ETH_BTCاورLTC_BTC، وغیرہ
    OKX اسپاٹ ایکسچینج آبجیکٹ محدود تجارتی جوڑوں کی حمایت کرنا، جیسے:BTC_USDT, ETH_USDT, ETH_BTCاورLTC_BTC، وغیرہ
    ہوبی اسپاٹ ایکسچینج آبجیکٹ محدود تجارتی جوڑوں کی حمایت کرنا، جیسے:BTC_USDT, ETH_USDT, ETH_BTCاورLTC_BTC، وغیرہ
    او کے ایکس فیوچر فیوچر ایکسچینج کا مقصد محدود تجارتی جوڑوں کی حمایت کرنا، جیسے:BTC_USDاورETH_USD، وغیرہ۔ تجارتی جوڑوں کی کوٹیشن کرنسیUSD؛ مخصوص معاہدے کا کوڈ مقرر کرنے کے بعد (براہ کرم فنکشن کا حوالہ دیںexchange.SetContractType), معاہدہ کریپٹو مارجن معاہدہ ہے۔ معاون معاہدے کے کوڈز میں شامل ہیں:this_week, next_week, quarterاورswap
    HuobiDM فیوچر ایکسچینج کا مقصد HuobiDM Huobi Futures (Huobi Contract) ہے، جو محدود ٹریڈنگ جوڑوں کی حمایت کرتا ہے، جیسے:BTC_USDاورETH_USD، وغیرہ۔ تجارتی جوڑوں کی کوٹیشن کرنسی ہےUSD؛ مخصوص معاہدے کا کوڈ مقرر کرنے کے بعد (براہ کرم فنکشن کا حوالہ دیںexchange.SetContractType), معاہدہ کریپٹو مارجن معاہدہ ہے۔ معاون معاہدے کے کوڈز میں شامل ہیں:this_week, next_week, quarterاورswap.
    BitMEX فیوچر ایکسچینج کا مقصد ٹریڈنگ جوڑی ہےXBT_USD؛ مخصوص معاہدے کا کوڈ مقرر کرنے کے بعد (براہ کرم فنکشن کا حوالہ دیںexchange.SetContractType), معاہدہ ایک کریپٹو مارجن معاہدہ ہے; معاون معاہدہ کوڈ ہے:XBTUSD
    بائننس فیوچر فیوچر ایکسچینج کا مقصد محدود تجارتی جوڑوں کی حمایت کرنا، جیسے:BTC_USDTاورETH_USDT، وغیرہ۔ تجارتی جوڑوں کی کوٹیشن کرنسیUSD؛ مخصوص معاہدے کا کوڈ مقرر کرنے کے بعد (براہ کرم فنکشن کا حوالہ دیںexchange.SetContractType), معاہدہ ایکUSDT- مارجن معاہدہ؛ معاون معاہدے کا کوڈ ہےswap
    ڈیریبیٹ آپشنز فیوچر ایکسچینج کا مقصد تجارتی جوڑے یہ ہیں:BTC_USDاورETH_USD؛ مخصوص معاہدے کا کوڈ مقرر کرنے کے بعد (براہ کرم فنکشن کا حوالہ دیںexchange.SetContractType), معاہدہ ایک کریپٹو مارجن معاہدہ ہے; مخصوص اختیارات معاہدے کے کوڈز مقرر کرنے کی ضرورت ہے

    بیک ٹسٹ سسٹم میں فیوچر ایکسچینج اشیاء کے لئے ، تجارتی جوڑوں کو تبدیل کرنا عارضی طور پر حکمت عملی کوڈز میں تعاون یافتہ نہیں ہے۔

نقلی سطح

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

ریئل مارکیٹ لیول

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

اصل مارکیٹ کی سطح کے بیک ٹسٹ فی الحال حمایت کرتا ہے:

  • بائننس
  • OKX (OKX اسپاٹ)
  • HuobiDM (ہوبی فیوچر)

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

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کے بیک ٹیسٹ سسٹم کی پیرامیٹرز کی اصلاح کی تقریب بیک ٹیسٹ کے دوران ہر پیرامیٹر کی اصلاح کے اختیار کے مطابق اصلاحات مرتب کرنا ہے ، اور اختیارات مندرجہ ذیل دکھائے گئے ہیں:

  • کم سے کم قدر: پیرامیٹرز کی ابتدائی قیمت کو محدود کرنے کے لئے.
  • زیادہ سے زیادہ قدر: جزوی تبدیلیوں کے بعد پیرامیٹرز کی زیادہ سے زیادہ قیمت کو محدود کرنے کے لئے.
  • قدم کا سائز: پیرامیٹرز کی اضافی متغیر مقدار۔

پیرامیٹرز کے مجموعے پیدا، اور ان تمام مجموعے کو backtest کرنے کے لئے پار (یعنی ہر پیرامیٹرز کے مجموعے کو ایک بار backtesting).نمبرbacktesting کے نظام میں بہتر بنایا جا سکتا ہے.

مثال کے طور پر، backtest صفحے پر پیرامیٹرز کی اصلاح کے اختیارات مقرر کریں:

img

پیرامیٹرز کی اصلاح کے موڈ کا بیک ٹیسٹ:

img

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

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

img

لے لوJavaScriptمثال کے طور پر، اور کلک کریں Save Backtest Settings to Source File:

img

ذریعہ فائل میں بیک ٹسٹ کی ترتیبات کو محفوظ کریں کے درمیان معمولی اختلافات ہیںJavaScript, Python, cppاورMylanguage:

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

MyLanguage:

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

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

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

پیرامیٹر معنی وضاحت
علامت علامت کا نام جیسے BTC_USD_OKCoin_EN
عید تبادلہ جیسے OKCoin_EN
گول قیمت کی درستگی مثال کے طور پر 3، واپسی کے اعداد و شمار میں قیمت 1000 سے ضرب اور گول ہونا ضروری ہے
ارد گرد مقدار کی درستگی مثال کے طور پر 2، واپسی کے اعداد و شمار میں رقم 100 کی طرف سے ضرب اور راؤنڈ کیا جانا چاہئے
مدت بار دورانیہ (ملسیکنڈ) جیسے 60،000 بار ایک منٹ کی درخواست کی نشاندہی
گہرائی گہرائی کی سطحیں 1-20
تجارت ڈیٹا کو تقسیم کرنے کی ضرورت ہے سچ/جھوٹا
سے آغاز کا وقت یونکس ٹائم اسٹیمپ
کرنے کے لئے اختتام کا وقت یونکس ٹائم اسٹیمپ

نوٹ:

Round and V-Round are two parameters designed to avoid losing the precision of floating-point numbers during network transmission. The price data, trading volume and order amount, are all transmitted using integers.

سلائی گئی ڈیٹا کا ایک مثال:

http://customserver:80/data?symbol=BTC_USD_OKCoin_EN&eid=OKCoin_EN&round=3&vround=3&period=900000&from=1564315200&to=1567267200

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

عام بار سطح کا بیک ٹیسٹ

{
    "schema":["time","open","high","low","close","vol"],
    "data":[[1564315200000,9531300,9531300,9497060,9497060,787],[1564316100000,9495160,9495160,9474260,9489460,338]]
}

ٹِک لیول بیک ٹسٹ ڈیٹا (مارکیٹ کی گہرائی کی معلومات سمیت، ایک صف جس کی گہرائی کی شکل [قیمت، حجم] ہے۔ گہرائی کی متعدد سطحیں ہوسکتی ہیں۔ اسک قیمت کے بڑھتے ہوئے آرڈر سے مراد ہے ، اور بڈز قیمت کے الٹ آرڈر سے مراد ہے۔)

{
    "schema":["time","asks", "bids","trades","close","vol"],
    "data":[[1564315200000,[[9531300,10]], [[9531300,10]],[[1564315200000,0,9531300,10]],9497060,787]]
}

تفصیل

میدان تفصیل
اسکیما یہ اعداد و شمار صف میں کالموں کی خصوصیات کی وضاحت کرتا ہے، جو بڑے اور چھوٹے اعداد و شمار پر حساس ہے اور صرف time، open، high، low، close، vol، asks اور bids تک محدود ہے
اعداد و شمار ایک صف جو اعداد و شمار کو اسکیما کے ذریعہ اسٹور کرتی ہے

ڈیٹا فارمیٹ

میدان تفصیل
درخواستیں/پیشکشیں [قیمت، حجم،...]
تجارت [[وقت، سمت ((0:خرید،1:فروخت،قیمت،مقدار،...]

فنڈنگ کی شرح کے اعداد و شمار فراہم کرنا:

مثال کے طور پر ، بائننس فیوچر کے بیک ٹیسٹنگ کے دوران ، فنڈنگ کی شرح کے اضافی اعداد و شمار کی ضرورت ہوتی ہے ، جو کسٹم ڈیٹا ماخذ کے ذریعہ فراہم کرنے کی ضرورت ہے۔ مثال کے طور پر ، بائننس فیوچر کے بیک ٹیسٹ کے دوران درخواست کردہ فنڈنگ کی شرح کا ڈیٹا ڈھانچہ مندرجہ ذیل دکھایا گیا ہے:

{
  "detail": {},
  "symbol": "futures_binance.eth_usdt.funding",
  "schema": ["time", "open", "high", "low", "close", "vol"],
  "data": [
    [1582876800000, 25289, 25289, 25289, 25289, 0],
    [1582905600000, 30522, 30522, 30522, 30522, 0],
    [1582934400000, 40998, 40998, 40998, 40998, 0],
        ...
    [1626652800000, 198, 198, 198, 198, 0],
    [1626681600000, 691, 691, 691, 691, 0],                  // The adjacent periodic interval is 8 hours
    [1626710400000, 310, 310, 310, 310, 0],                  // The funding rate of Binance updates every 8 hours, and why the data of the funding rate turns out to be 310?
    [1626739200000, 310, 310, 310, 310, 0],                  // Like the bars data, to avoid losing the precision of floating-point numbers during network transmission, the data uses integer, so the data needs to be processed according to round parameter; the data, returned to the backtest system after processing, is 310 
    [1626768000000, -41610, -41610, -41610, -41610, 0],      // The funding rate might be a negative value
    [1626796800000, -5125, -5125, -5125, -5125, 0],
        ...   
    [1627977600000, 10000, 10000, 10000, 10000, 0]
  ]
}

بیک ٹسٹ سسٹم سے ڈیٹا کی درخواست کا ایک مثال:

http://customserver:80/data?symbol=futures_binance.eth_usdt.funding&eid=Futures_Binance&round=8&vround=5&depth=20&trades=1&custom=0&period=3600000&from=1360771200&to=1628006400

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

ڈیٹا کا ماخذ، یو آر ایل:http://xxx.xx.x.xx:9090/dataڈیٹا سرور کو اپنی مرضی کے مطابق بنائیں، گولانگ میں لکھا:

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
    // r.URL: /data?depth=20&detail=true&eid=Binance&from=1566820800&period=900000&round=3&symbol=BTC_USDT_Binance&to=1569686400&trades=1&vround=5
    // response
    defer func() {
        // response data
        /* e.g. data
        {
            "schema":["time","open","high","low","close","vol"],
            "data":[
                [1564315200000,9531300,9531300,9497060,9497060,787],
                [1564316100000,9495160,9495160,9474260,9489460,338]
            ]
        }
        */
        ret := map[string]interface{}{
            "schema" : []string{"time","open","high","low","close","vol"},
            "data" : []interface{}{
                []int64{1564315200000,9531300,9531300,9497060,9497060,787},
                []int64{1564316100000,9495160,9495160,9474260,9489460,338},
            },
        }
        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: 2019-07-28 00:00:00
end: 2019-07-29 00:00:00
period: 1m
platforms: [{"eid":"OKX","currency":"BTC_USDT","feeder":"http://120.24.2.20:9090/data"}]
*/

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

بیک ٹسٹ سسٹم میں اپنی مرضی کے مطابق اعداد و شمار کے ذریعہ تیار کردہ چارٹ:

حکمت عملی پرنٹ کی معلومات:

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

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

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

  • حکمت عملی ترمیم صفحہ اور Backtesting صفحہ کے درمیان سوئچ کرنے کے لئے شارٹ کٹ کی چابی

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

  • بچت کی حکمت عملی کے لئے شارٹ کٹ کلید

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

  • حکمت عملی backtest شروع کرنے کے لئے شارٹ کٹ

    چابی کا استعمال کریںCtrl + bStart Backtest کو فعال کرنے کے لیے۔

کوڈ کی تفصیل

اندراج کے افعال

فنکشن کا نام تفصیل
main() یہ ایک انٹری فنکشن ہے.
onexit() یہ ایک صفائی کا کام ہے جب عام طور پر باہر نکلتا ہے، اس کا زیادہ سے زیادہ عملدرآمد کا وقت 5 منٹ ہے، جو غیر اعلانیہ طور پر چھوڑ دیا جا سکتا ہے؛ اگر ٹائم آؤٹ ہوتا ہے تو،روکناغلطی کی اطلاع دی جائے گی۔
onerror() یہ ایک غیر معمولی باہر نکلنے کے فنکشن ہے، اس کی زیادہ سے زیادہ عملدرآمد کا وقت 5 منٹ ہے، جو غیر اعلانیہ چھوڑ دیا جا سکتا ہے.Pythonاورcppاس فنکشن کی حمایت نہیں کرتے.
init() یہ ایک initialization تقریب ہے، اس کی حکمت عملی کے پروگرام کو خود کار طریقے سے بلایا جائے گا جب یہ چلانے شروع ہوتا ہے، جو undeclared چھوڑ دیا جا سکتا ہے.
  • تفصیل:
    1. بیک ٹسٹ سسٹم اس فنکشن کی حمایت نہیں کرتاonerror().
    1. اگر فنکشنonerror()بوٹ میں ٹرگر کیا جاتا ہے، تقریبonexit()چالو نہیں کیا جائے گا.

ایک ایکٹ (((

onexit()، پروسیسنگ صفائی کے کام، 5 منٹ کی ایک زیادہ سے زیادہ کارکردگی کا مظاہرہ وقت کے ساتھ، جو صارف کی طرف سے احساس کیا جاتا ہے.

function main(){
    Log("Start running, stop after 5 seconds, and execute onexit function!")
    Sleep(1000 * 5)
}

// onexit function implementation
function onexit(){
    var beginTime = new Date().getTime()
    while(true){
        var nowTime = new Date().getTime()
        Log("The program stops counting down..The cleaning starts and has passed:", (nowTime - beginTime) / 1000, "Seconds!")
        Sleep(1000)
    }
}
import time 
def main():
    Log("Start running, stop after 5 seconds, and execute onexit function!")
    Sleep(1000 * 5)

def onexit():
    beginTime = time.time() * 1000
    while True:
        ts = time.time() * 1000
        Log("The program stops counting down..The cleaning starts and has passed:", (ts - beginTime) / 1000, "Seconds!")
        Sleep(1000)
void main() {
    Log("Start running, stop after 5 seconds, and execute onexit function!");
    Sleep(1000 * 5);
}

void onexit() {
    auto beginTime = Unix() * 1000;
    while(true) {
        auto ts = Unix() * 1000;
        Log("The program stops counting down..The cleaning starts and has passed:", (ts - beginTime) / 1000, "Seconds!");
        Sleep(1000);
    }
}

شروع کریں

صارف initialization تقریب کو لاگو کرتا ہےinit()، جو خود کار طریقے سے تقریب کو انجام دے گاinit()شروع کرنے کے کام کو مکمل کرنے کے لئے حکمت عملی کے آغاز میں.

function main(){
    Log("The first line of the code executed in the program!", "#FF0000")
    Log("Exit!")
}

// Initialization Function
function init(){     
    Log("Initialization!")
}
def main():
    Log("The first line of the code is executed!", "#FF0000")
    Log("Exit!")

def init():
    Log("Initialization!")
void main() {
    Log("The first line of the code is executed!", "#FF0000");
    Log("Exit!");
}

void init() {
    Log("Initialization!");
}

onerror()

فنکشن کی انجام دہیonerror()جب کوئی استثنا واقع ہوتا ہے تو اس فنکشن کو متحرک کیا جائے گا۔Pythonاورcpp.

function main() {
    var arr = []
    Log(arr[6].Close)
}

function onerror() {
    Log("error")
}
# not supported by python 
// not supported by C++ 

کلاسیکی حکمت عملی کا فریم ورک

میں لکھے گئے حکمت عملیوں میںJavaScript, Pythonاورcpp،Sleep()فنکشن کو ان حکمت عملیوں کے مرکزی لوپ میں بلایا جانا چاہئے۔ اس کا استعمال بیک ٹریک کی رفتار کو کنٹرول کرنے کے لئے کیا جائے گا۔ بوٹ میں ، اس کا استعمال حکمت عملی کے پولنگ وقفوں کو کنٹرول کرنے کے لئے کیا جاتا ہے ، اور تبادلے کے API انٹرفیس تک رسائی کی درخواست کی تعدد کو بھی کنٹرول کرتا ہے۔

  • کریپٹوکرنسی حکمت عملیوں کے بنیادی فریم ورک کی مثالیں:

    function onTick(){
        //Write strategy logic here, and it will be called constantly, such as printing market information
        Log(exchange.GetTicker())
    }
    
    function main(){
        while(true){
            onTick()
            //The function "Sleep" is mainly used to control the polling frequency of cryptocurrency strategies to prevent accessing the exchange API interafce too frequently 
            Sleep(60000)
        }
    }
    
    def onTick():
        Log(exchange.GetTicker())
    
    def main():
        while True:
            onTick()
            Sleep(60000)
    
    void onTick() {
        Log(exchange.GetTicker());
    }
    
    void main() {
        while(true) {
            onTick();
            Sleep(60000);
        }
    }
    

    سب سے آسان مثال لے لو، اگر میں 100 کی قیمت اور 1 کی مقدار کے ساتھ ہر سیکنڈ میں ایکسچینج پر ایک خرید آرڈر رکھنا چاہتا ہوں، میں اسے اس طرح لکھ سکتا ہوں:

    function onTick(){
        // It is just an example; for all the assets will be used to place orders fast during backtest or in the bot, do not implement the example in the bot
        exchange. Buy(100, 1)
    }
    
    function main(){
        while(true){
            onTick()
            // The pause period can be customized in millisecond (1 second = 1000 milliseconds)
            Sleep(1000)
        }
    }
    
    def onTick():
        exchange.Buy(100, 1)
    
    def main():
        while True:
            onTick()
            Sleep(1000)
    
    void onTick() {
        exchange.Buy(100, 1);
    }
    
    void main() {
        while(true) {
            onTick();
            Sleep(1000);
        }
    }
    

ٹیمپلیٹ لائبریری

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

ٹیمپلیٹ لائبریری میںJavaScript:

img

ٹیمپلیٹ لائبریری میںPython:

img

ٹیمپلیٹ لائبریری میںcpp:

img

  • ٹیمپلیٹ لائبریری کی برآمد کی تقریب ایکسپورٹ فنکشن ٹیمپلیٹ لائبریری کا ایک انٹرفیس فنکشن ہے ، اور اسے اس حکمت عملی کے ذریعہ بلایا جاسکتا ہے جو ٹیمپلیٹ لائبریری کا حوالہ دیتا ہے۔ ٹیمپلیٹ لائبریری میں برآمد شدہ فنکشن کے اعلان اور نفاذ کے لئے مثال کا کوڈ مندرجہ ذیل ہے:

    /*
    -- This method is called directly with $.Test() after the strategy refers to the template
    -- The "main" function will not be triggered in the strategy, and it is only used as the entry point for template debugging
    */
    $.Test = function() {
        Log('Test')
    }
    
    function main() {
        $.Test()
    }
    
    def Test():
        Log("template call")
    
    # Export "Test" function; the main strategy can be called by ext.Test()
    ext.Test = Test 
    
    // The strategy refers to the template and calls this method directly with ext::Test()
    void Test() {
        Log("template call");
    }
    
  • ٹیمپلیٹ لائبریری پیرامیٹرز ٹیمپلیٹ لائبریری اپنے انٹرفیس پیرامیٹرز بھی مقرر کر سکتی ہے، جو ٹیمپلیٹ لائبریری کے کوڈ میں عالمی متغیرات کی شکل میں استعمال ہوتی ہیں۔

    ٹیمپلیٹ لائبریری پیرامیٹر کی ترتیبات:

    img

    ٹیمپلیٹ لائبریری کے کوڈز:

    $.SetParam1 = function(p1) {
        param1 = p1
    }
    
    $.GetParam1 = function() {
        Log("param1:", param1)
        return param1
    }
    
    def SetParam1(p1):
        global param1
        param1 = p1
    
    def GetParam1():
        Log("param1:", param1)
        return param1
    
    ext.SetParam1 = SetParam1
    ext.GetParam1 = GetParam1
    
    void SetParam1(float p1) {
        param1 = p1;
    }
    
    float GetParam1() {
        Log("param1:", param1);
        return param1;
    }
    

    میں حکمت عملی کوڈ کا حوالہ دیتے ہیںٹیمپلیٹ لائبریریمندرجہ بالا مثال:

    function main () {
        Log("call $.GetParam1:", $.GetParam1())
        Log("call $.SetParam1:", "#FF0000")
        $.SetParam1(20)
        Log("call $.GetParam1:", $.GetParam1())
    }
    
    def main():
        Log("call ext.GetParam1:", ext.GetParam1())
        Log("call ext.SetParam1:", "#FF0000")
        ext.SetParam1(20)
        Log("call ext.GetParam1:", ext.GetParam1())
    
    void main() {
        Log("call ext::GetParam1:", ext::GetParam1());
        Log("call ext::SetParam1:", "#FF0000");
        ext::SetParam1(20);
        Log("call ext::GetParam1:", ext::GetParam1());
    }
    

    img

  • اقتباس ٹیمپلیٹ لائبریری

    حکمت عملی میں ترمیم کے صفحے کے ٹیمپلیٹ کالم میں حوالہ چیک کرنے کے بعد، حکمت عملی کو محفوظ کریں.

    img

اندرونی ساخت

عالمی متغیرات

تبادلہ

Exchangeایک تبادلہ اعتراض کے طور پر سمجھا جاسکتا ہے۔ پہلے سے طے شدہ طور پر ، اسے حکمت عملی کے پیرامیٹرز میں شامل ہونے والا پہلا تبادلہ اعتراض سمجھا جاتا ہے۔ تبادلہ کے ساتھ تمام ڈیٹا تعامل اس اعتراض میں افعال کے ذریعہ حاصل ہوتا ہے۔

  • Backtest میں تبادلہ اشیاء کا اضافہ

  • صفحہ Bot پر تبادلہ اشیاء کا اضافہ

اضافی تبادلہ اشیاء کے مطابقexchangeکوڈ میں اشیاء:

function main() {
    Log("The name of the first exchange object added on the bot page or backtest page:", exchange.GetName(), ", Label:", exchange.GetLabel())
}
def main():
    Log("The name of the first exchange object added on the bot page or backtest page:", exchange.GetName(), ", Label:", exchange.GetLabel())
void main() {
    Log("The name of the first exchange object added on the bot page or backtest page:", exchange.GetName(), ", Label:", exchange.GetLabel());
}
تبادلہ

یہ ایک صف کے طور پر سمجھا جا سکتا ہے جو تمام تبادلہ اشیاء جیسے ذخیرہ کرتا ہےexchangeتبادلہ اشیاء، جن میں متعدد تبادلہ اشیاء شامل ہوسکتی ہیں۔exchanges[0]ہےexchange.

اضافی تبادلہ اشیاء کے مطابقexchanges[0], exchanges[1], exchanges[2]...اور اسی طرح کی حکمت عملی کے کوڈ میں.

function main() {
    for(var i = 0; i < exchanges.length; i++) {
        Log("Index of the exchange object added (the first one is 0 and so on):", i, "Name:", exchanges[i].GetName(), "Label:", exchanges[i].GetLabel())
    }
}
def main():
    for i in range(len(exchanges)):
        Log("Index of the exchange object added (the first one is 0 and so on):", i, "Name:", exchanges[i].GetName(), "Label:", exchanges[i].GetLabel())
void main() {
    for(int i = 0; i < exchanges.size(); i++) {
        Log("Index of the exchange object added (the first one is 0 and so on):", i, "Name:", exchanges[i].GetName(), "Label:", exchanges[i].GetLabel());
    }
}
آرڈر کی حیثیت

صفتStatusمیںOrder structure.

مستقل نام تعریف قدر
ORDER_STATE_PENDING مکمل نہیں 0
ORDER_STATE_CLOSED ختم 1
ORDER_STATE_CANCELED منسوخ 2
ORDER_STATE_UNKNOWN نامعلوم حالت (دوسری حالتیں) 3

ORDER_STATE_UNKNOWNحالت کال کر سکتے ہیںexchange.GetRawJSON()اصل آرڈر کی حیثیت کی معلومات حاصل کرنے کے لئے، تبادلہ فائل سے استفسار کریں، اور مخصوص وضاحت دیکھیں. فارم میں مستقل ناموں کو براہ راست حکمت عملی کوڈ میں استعمال کیا جا سکتا ہےStatusمیںOrderڈھانچہ، حکم کی حیثیت کو یقینی بنانے کے لئے یہ فیصلہ کرتے ہوئے کہ آیا وہ برابر ہیں۔ ان مستقل ناموں کو پرنٹ کرنے سے آرڈر کی حیثیت ظاہر ہوگیمستقل ناماور ان کے متعلقہاقدار، اور ذیل میں دیگر مستقل نام اسی طرح کام کرتے ہیں، لہذا ان کے بارے میں مزید تفصیلی وضاحت نہیں ہوگی.

آرڈر ٹرانزیکشن کی قسم

صفتTypeمیںOrder structure.

مستقل نام تعریف قدر
ORDER_TYPE_BUY خرید آرڈر 0
ORDER_TYPE_SELL فروخت کا حکم 1
پوزیشن کی قسم

صفتTypeمیںPosition structure.

مستقل نام تعریف تفصیل قابل اطلاق قدر
PD_LONG لمبی پوزیشن کریپٹوکرنسی فیوچر کا استعمالexchange.SetDirection("closebuy")بند پوزیشن سمت مقرر کرنے کے لئے، اور پوزیشنوں کی اس قسم کو بند کریپٹوکرنسی فیوچر 0
PD_SHORT مختصر پوزیشن کریپٹوکرنسی فیوچر کا استعمالexchange.SetDirection("closesell")بند پوزیشن سمت مقرر کرنے کے لئے، اور پوزیشنوں کی اس قسم کو بند کریپٹوکرنسی فیوچر 1
مستقبل کی پوزیشن کھولنے اور بند کرنے کی ہدایات

صفتOffsetمیںOrder structure.

مستقل نام تعریف قدر
ORDER_OFFSET_OPEN کھلی پوزیشن کے احکامات 0
ORDER_OFFSET_CLOSE بند پوزیشن آرڈر 1
حکمت عملی کے پیرامیٹرز

تجارتی حکمت عملی کے کوڈز میں حکمت عملی کے انٹرفیس پر مقرر کردہ حکمت عملی کے پیرامیٹرز کو عالمی متغیرات کی شکل میں ظاہر کیا گیا ہے۔JavaScriptزبان براہ راست حکمت عملی انٹرفیس پر مقرر یا ترمیم پیرامیٹر اقدار تک رسائی حاصل کر سکتے ہیں؛ جبکہ افعال میںPythonحکمت عملی، کلیدی لفظglobalاسٹریٹجی میں مجموعی متغیرات کو تبدیل کرنے کی ضرورت ہے۔

پیرامیٹر کی اقسام:

img

متغیر تفصیل تبصرے قسم ڈیفالٹ ویلیو تفصیل
نمبر عددی قسم تبصرے نمبر (نمبر) 1 C ++ حکمت عملی ایک فلوٹنگ نقطہ کی قسم ہے
تار سٹرنگ تبصرے تار (سٹرنگ) ہیلو FMZ پہلے سے طے شدہ قدر کو حوالہ دینے کی ضرورت نہیں ہے. ان پٹ ایک تار کے طور پر علاج کیا جاتا ہے
کمباکس کمبو باکس تبصرے کمبو باکس (منتخب) 1|2|3 کمبو باکس متغیر خود ایک عددی قدر ہے ، جو کمبو باکس کنٹرول کے ذریعہ منتخب کردہ کالم کا انڈیکس پیش کرتا ہے۔ پہلا کمبو باکس کی قدر 1 ہے ، اور دیگر 0 ہے ، اور اسی طرح
بُول چیک اختیارات تبصرے بولین (سچ/غلط) سچ اگر چیک کیا جاتا ہے تو متغیر bool درست ہے؛ اگر چیک نہیں کیا جاتا ہے تو متغیر bool غلط ہے
خفیہString خفیہ کردہ تار تبصرے خفیہ کردہ تار (سٹرنگ) پاس ورڈ ایک تار کے طور پر ایک ہی استعمال کے ساتھ، خفیہ کردہ تار خفیہ کاری کی طرف سے بھیجا جائے گا اور سادہ متن میں منتقل نہیں کیا جائے گا
  • انٹرفیس پیرامیٹرز کو حکمت عملی کی ترمیم کے صفحے کے کوڈ ایڈیٹنگ سیکشن کے نیچے حکمت عملی پیرامیٹر سیکشن میں مقرر کیا گیا ہے۔
  • انٹرفیس پیرامیٹرز حکمت عملی کوڈ میں عالمی متغیر کے طور پر موجود ہیں ، یعنی انٹرفیس پیرامیٹرز کو کوڈ میں تبدیل کیا جاسکتا ہے۔
  • حکمت عملی کوڈ میں انٹرفیس پیرامیٹرز کے متغیر نام (اوپر فارم میں دیکھا):number, string, combox, bool, secretString.
  • تفصیل کا اختیار: حکمت عملی کے انٹرفیس پر انٹرفیس پیرامیٹرز کے نام.
  • تبصرہ اختیار: انٹرفیس پیرامیٹرز کی تفصیلی وضاحت؛ جب ماؤس انٹرفیس پیرامیٹرز پر ہوور کرتا ہے تو اس کی تفصیل ظاہر کی جائے گی۔
  • قسم کا اختیار: انٹرفیس پیرامیٹرز کی قسم۔
  • ڈیفالٹ ویلیو آپشن: انٹرفیس پیرامیٹرز کی ڈیفالٹ اقدار۔

پیرامیٹر انحصار کی ترتیبات: ایک پیرامیٹر مقرر کیا جا سکتا پیرامیٹر کے انتخاب کی بنیاد پر ایک اور پیرامیٹر دکھایا اور چھپایا جا کرنے کی اجازت دینے کے لئے. مثال کے طور پر، ہم پیرامیٹر مقررnumberA، جو ایک عددی قسم ہے.numberAدکھایا جائے یا چھپایا جائے گا کہ آیا پیرامیٹر کی بنیاد پرisShowA(بولین قسم) سچ یا غلط ہے. ہم متغیر مقرر کرنے کی ضرورت ہےnumberAانٹرفیس پیرامیٹرز پر:numberA@isShowA.

img

اس طرح، اگر پیرامیٹرisShowAچیک نہیں کیا جاتا، پیرامیٹرnumberAچھپا ہوا ہے. ComboBox کنٹرول کی قسم کے پیرامیٹرز کے لئے کے طور پر، پیرامیٹرز کے منحصر حصہ پیرامیٹر کی قیمت کے برابر ہے یا نہیں کا فیصلہ کرنا ہےانڈیکس ویلیوComboBox میں کچھ آپشن کی. اسی طرح، پیرامیٹر لےisShowAمثال کے طور پر. پیرامیٹرز میں متغیرات مقرر کرتے وقت، لکھیں:numberA@combox==2. پیرامیٹرnumberAدکھائے گا یا چھپائیں گے، پیرامیٹر کی بنیاد پرcomboxتیسرے آپشن کے طور پر چیک کیا جائے گا (جہاں انڈیکس 0 پہلے آپشن سے مطابقت رکھتا ہے، انڈیکس 1 دوسرے سے مطابقت رکھتا ہے، اور انڈیکس 2 تیسرے سے مطابقت رکھتا ہے.)

حکمت عملی انٹرفیس پیرامیٹرز ، انٹرایکٹو کنٹرولز ، اور پیرامیٹر گروپنگ فنکشن ٹیمپلیٹ پر: صرف شامل کریں(?First group)اس پیرامیٹر کی تفصیل کے آغاز میں جو گروپ بندی شروع کرتا ہے ، جیسا کہ مندرجہ ذیل شبیہہ میں دکھایا گیا ہے:

img

جب آپ حکمت عملی استعمال کر رہے ہیں تو، پیرامیٹرز گروپوں میں دکھائے جاتے ہیں:

img

پیرامیٹر ڈیفالٹ قدر محفوظ کریں: حکمت عملی کے پیرامیٹرز شبیہہ میں دکھائے گئے ہیں۔ بیک ٹیسٹ کے دوران ، اگر آپ حکمت عملی کے پیرامیٹرز کی ڈیفالٹ اقدار کو محفوظ کرنا چاہتے ہیں تو ، آپ کلک کرسکتے ہیںSave settingsحکمت عملی کے پیرامیٹرز کو تبدیل کرنے کے بعد بٹن.

img

img

آپ کوڈ کی شکل میں حکمت عملی پیرامیٹر کی ترتیبات کو محفوظ کر سکتے ہیں:

/*backtest
start: 2020-02-29 00:00:00
end: 2020-03-29 00:00:00
period: 1d
args: [["number",2],["string","Hello FMZ.COM"],["combox",2],["bool",false],["numberA@isShowA",666],["isShowA",true]]
*/
'''backtest
start: 2020-02-29 00:00:00
end: 2020-03-29 00:00:00
period: 1d
args: [["number",2],["string","Hello FMZ.COM"],["combox",2],["bool",false],["numberA@isShowA",666],["isShowA",true]]
'''
/*backtest
start: 2020-02-29 00:00:00
end: 2020-03-29 00:00:00
period: 1d
args: [["number",2],["string","Hello FMZ.COM"],["combox",2],["bool",false],["numberA@isShowA",666],["isShowA",true]]
*/

ڈیٹا کی ساخت

کچھ افعال اصل کے ساتھ ساتھ ہوں گےJSONکال کے دوران درخواست کردہ اعداد و شمار.JSONاعداد و شمار وصف میں محفوظ کیا جاتا ہےInfoواپس آنے والے آبجیکٹ کا۔ چونکہ بیک ٹیسٹ کسی پلیٹ فارم انٹرفیس تک رسائی حاصل کرنے کے لئے نہیں ہے ، لہذا بیک ٹیسٹ کے دوران واپس آنے والے ڈیٹا میں کوئی خاصیت نہیں ہےInfoذیل میں ہر ڈیٹا ڈھانچے کی اہم خصوصیات کی وضاحت ہے۔

تجارت

تمام ٹریڈنگ کی تاریخ (خود نہیں) حاصل کریں، تقریب کی طرف سے واپسexchange.GetTrades().

{
    Id      : 9585306,          // Trading record ID; if the exchange interface does not provide order ID, use the timestamp to fill in 
    Time    : 1567736576000,    // Time (Unix timestamp milliseconds)
    Price   : 1000,             // Price
    Amount  : 1,                // Volume
    Type    : 0                 // Order Type; refer to the order type in the constants; 0 is ORDER_TYPE_BUY, meaning the value of ORDER_TYPE_BUY is 0
}
ٹکر

مارکیٹ کی قیمتوں کا تعین تقریب کی طرف سے واپس کر رہے ہیںexchange.GetTicker().

{
    Info    : {...},             // After requesting the platform interface, this attribute is not available in the raw data that the exchange interface responds to, during the backtest
    High    : 1000,              // Highest price; if the platform interface does not provide the 24-hour highest price, use sell price 1 to fill in 
    Low     : 500,               // Lowest price; if the platform interface does not provide the 24-hour lowest price, use buy price 1 to fill in 
    Sell    : 900,               // Sell price 1
    Buy     : 899,               // Buy price 1 
    Last    : 900,               // Last executed price
    Volume  : 10000000,          // Recent trading volume; in principle, the unit of spot trading volume is base currency, and the unit of futures trading volume is contract quantity. If the platform interface does not provide this kind of data, use the existing data of the platform interface to fill in; for instance, it might be a trading volume in the unit of quote currency  
    Time    : 1567736576000      // Millisecond-level timestamp
}
ریکارڈ

معیارOHLCڈھانچہ K لائنز اور عمل اشارے حساب اور تجزیہ کرنے کے لئے استعمال کیا جاتا ہے.exchange.GetRecords()ساخت صف لوٹاتا ہے. ہرRecordساخت ایک K لائن بار کی نمائندگی کرتا ہے، یعنی ایک K لائنBAR.TimeمیںRecordہے K لائن بار مدت کا آغاز وقت.

{
    Time    : 1567736576000,     // A timestamp, accurate to millisecond, in the same format as the result obtained by Javascript's newDate().GetTime()
    Open    : 1000,              // Open price
    High    : 1500,              // Highest price
    Low     : 900,               // Lowest price
    Close   : 1200,              // Close price 
    Volume  : 1000000            // Trading volume; in principle, the unit of spot trading volume is base currency, and the unit of futures trading volume is contract quantity. If the platform interface does not provide this kind of data, use the existing data of the platform interface to fill in; for instance, it might be a trading volume in the unit of quote currency
}
آرڈر

آرڈر کی ساخت کے افعال کی طرف سے واپس کیا جا سکتا ہے، بشمولexchange.GetOrder()اورexchange.GetOrders()فنکشنexchange.GetOrders()صف یا ساخت کی ایک خالی صف لوٹاتا ہے (اگر کوئی نہیں ہےموجودہ نامکمل آرڈرواپس[]، یعنی، ایک خالی صف).

{
    Info        : {...},         // After requesting the platform interface, this attribute is not available in the raw data that the exchange interface responds to, during the backtest
    Id          : 123456,        // Unique ide