[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
اصلی بوٹ ڈیٹا بیس میں، فائل کا نام بوٹ آئی ڈی ہے.
حمایت شدہ پروٹوکول
جب ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم پر تجارتی حکمت عملی تیار کی جاتی ہے تو ، حکمت عملی کا مواد صرف ایف ایم زیڈ اکاؤنٹ ہولڈرز کے لئے مرئی ہوتا ہے۔ اور ایف ایم زیڈ کی کوانٹ ٹریڈنگ پلیٹ فارم پر ، آپ حکمت عملی کے کوڈ کی مکمل لوکلائزیشن حاصل کرسکتے ہیں۔ مثال کے طور پر ، حکمت عملی کی منطق کو ایک میں جوڑ دیا جاسکتا ہے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
تبادلہ کی توثیق کا طریقہ مثال کے طور پر تفصیل سے وضاحت کرنے کے لئے کہ ڈوکر پروگرام واقع ہونے والے آلہ پر حساس معلومات کو مقامی طور پر کس طرح ترتیب دیا جائے۔PKCS#8
، تخلیق کے لئے بہت سے اوزار دستیاب ہیں، جیسے:openssl
.RSA KEY
تبادلے پر، اور میں پیدا عوامی کلید اپ لوڈپہلا مرحلہتخلیق کے دوران۔txt
فائل، یا ڈوکر پروگرام کی ڈائرکٹری میں دیگر راستوں میں.RSA KEY
تشکیل کے ترمیم باکس میں تبادلہ کی طرف سے پیداAccess Key
.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
جب وقت بیک ٹسٹ ٹائم لائن پر چلتا ہے تو وقت کو متعدد بار آگے نہیں بڑھایا جائے گا (جس سے اگلے مارکیٹ ڈیٹا لمحے میں چھلانگ نہیں ہوگی) ۔ مذکورہ بالا افعال میں سے کسی ایک کو بار بار کال کرنے سے بیک ٹسٹ ٹائم لائن پر آگے بڑھنے کے لئے بیک ٹسٹ ٹائم کو آگے بڑھایا جائے گا (اگلے مارکیٹ ڈیٹا لمحے میں چھلانگ لگائیں) ۔ جب بیک ٹسٹ کے لئے حقیقی مارکیٹ کی سطح کا استعمال کیا جاتا ہے تو ، پہلے وقت کا انتخاب کرنے کی سفارش نہیں کی جاتی ہے۔ ابتدائی وقت کی مدت میں حقیقی مارکیٹ کی سطح کے اعداد و شمار نہیں ہوسکتے ہیں۔
اصل مارکیٹ کی سطح کے بیک ٹسٹ فی الحال حمایت کرتا ہے:
ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کے بیک ٹیسٹ سسٹم کی پیرامیٹرز کی اصلاح کی تقریب بیک ٹیسٹ کے دوران ہر پیرامیٹر کی اصلاح کے اختیار کے مطابق اصلاحات مرتب کرنا ہے ، اور اختیارات مندرجہ ذیل دکھائے گئے ہیں:
پیرامیٹرز کے مجموعے پیدا، اور ان تمام مجموعے کو backtest کرنے کے لئے پار (یعنی ہر پیرامیٹرز کے مجموعے کو ایک بار backtesting).نمبرbacktesting کے نظام میں بہتر بنایا جا سکتا ہے.
مثال کے طور پر، backtest صفحے پر پیرامیٹرز کی اصلاح کے اختیارات مقرر کریں:
پیرامیٹرز کی اصلاح کے موڈ کا بیک ٹیسٹ:
حکمت عملی کی ترمیم کے صفحے میں ،
لے لوJavaScript
مثال کے طور پر، اور کلک کریں
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]]
}
تفصیل
میدان | تفصیل |
---|---|
اسکیما | یہ اعداد و شمار صف میں کالموں کی خصوصیات کی وضاحت کرتا ہے، جو بڑے اور چھوٹے اعداد و شمار پر حساس ہے اور صرف |
اعداد و شمار | ایک صف جو اعداد و شمار کو اسکیما کے ذریعہ اسٹور کرتی ہے |
ڈیٹا فارمیٹ
میدان | تفصیل |
---|---|
درخواستیں/پیشکشیں | [قیمت، حجم،...] |
تجارت | [[وقت، سمت ((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 لائن کی مدتبیک ٹسٹنگ کے دوران.
حکمت عملی
چابی کا استعمال کریںCtrl +,
Ctrl
، کلید دبائیں,
.
بچت کی حکمت عملی کے لئے شارٹ کٹ کلید
چابی کا استعمال کریںCtrl + s
حکمت عملیوں کو بچانے کے لئے.
حکمت عملی backtest شروع کرنے کے لئے شارٹ کٹ
چابی کا استعمال کریںCtrl + b
فنکشن کا نام | تفصیل |
---|---|
main() |
یہ ایک انٹری فنکشن ہے. |
onexit() |
یہ ایک صفائی کا کام ہے جب عام طور پر باہر نکلتا ہے، اس کا زیادہ سے زیادہ عملدرآمد کا وقت 5 منٹ ہے، جو غیر اعلانیہ طور پر چھوڑ دیا جا سکتا ہے؛ اگر ٹائم آؤٹ ہوتا ہے تو،روکناغلطی کی اطلاع دی جائے گی۔ |
onerror() |
یہ ایک غیر معمولی باہر نکلنے کے فنکشن ہے، اس کی زیادہ سے زیادہ عملدرآمد کا وقت 5 منٹ ہے، جو غیر اعلانیہ چھوڑ دیا جا سکتا ہے.Python اورcpp اس فنکشن کی حمایت نہیں کرتے. |
init() |
یہ ایک initialization تقریب ہے، اس کی حکمت عملی کے پروگرام کو خود کار طریقے سے بلایا جائے گا جب یہ چلانے شروع ہوتا ہے، جو undeclared چھوڑ دیا جا سکتا ہے. |
onerror()
.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()
جب کوئی استثنا واقع ہوتا ہے تو اس فنکشن کو متحرک کیا جائے گا۔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
:
Python
:
cpp
:
/*
-- 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");
}
ٹیمپلیٹ لائبریری کے کوڈز:
$.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());
}
اقتباس
حکمت عملی میں ترمیم کے صفحے کے ٹیمپلیٹ کالم میں حوالہ چیک کرنے کے بعد، حکمت عملی کو محفوظ کریں.
Exchange
ایک تبادلہ اعتراض کے طور پر سمجھا جاسکتا ہے۔ پہلے سے طے شدہ طور پر ، اسے حکمت عملی کے پیرامیٹرز میں شامل ہونے والا پہلا تبادلہ اعتراض سمجھا جاتا ہے۔ تبادلہ کے ساتھ تمام ڈیٹا تعامل اس اعتراض میں افعال کے ذریعہ حاصل ہوتا ہے۔
صفحہ
اضافی تبادلہ اشیاء کے مطابق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
اسٹریٹجی میں مجموعی متغیرات کو تبدیل کرنے کی ضرورت ہے۔
پیرامیٹر کی اقسام:
متغیر | تفصیل | تبصرے | قسم | ڈیفالٹ ویلیو | تفصیل |
---|---|---|---|---|---|
نمبر | عددی قسم | تبصرے | نمبر (نمبر) | 1 | C ++ حکمت عملی ایک فلوٹنگ نقطہ کی قسم ہے |
تار | سٹرنگ | تبصرے | تار (سٹرنگ) | ہیلو FMZ | پہلے سے طے شدہ قدر کو حوالہ دینے کی ضرورت نہیں ہے. ان پٹ ایک تار کے طور پر علاج کیا جاتا ہے |
کمباکس | کمبو باکس | تبصرے | کمبو باکس (منتخب) | 1|2|3 | کمبو باکس متغیر خود ایک عددی قدر ہے ، جو کمبو باکس کنٹرول کے ذریعہ منتخب کردہ کالم کا انڈیکس پیش کرتا ہے۔ پہلا کمبو باکس کی قدر 1 ہے ، اور دیگر 0 ہے ، اور اسی طرح |
بُول | چیک اختیارات | تبصرے | بولین (سچ/غلط) | سچ | اگر چیک کیا جاتا ہے تو متغیر bool درست ہے؛ اگر چیک نہیں کیا جاتا ہے تو متغیر bool غلط ہے |
خفیہString | خفیہ کردہ تار | تبصرے | خفیہ کردہ تار (سٹرنگ) | پاس ورڈ | ایک تار کے طور پر ایک ہی استعمال کے ساتھ، خفیہ کردہ تار خفیہ کاری کی طرف سے بھیجا جائے گا اور سادہ متن میں منتقل نہیں کیا جائے گا |
number
, string
, combox
, bool
, secretString
.پیرامیٹر انحصار کی ترتیبات:
ایک پیرامیٹر مقرر کیا جا سکتا پیرامیٹر کے انتخاب کی بنیاد پر ایک اور پیرامیٹر دکھایا اور چھپایا جا کرنے کی اجازت دینے کے لئے. مثال کے طور پر، ہم پیرامیٹر مقررnumberA
، جو ایک عددی قسم ہے.numberA
دکھایا جائے یا چھپایا جائے گا کہ آیا پیرامیٹر کی بنیاد پرisShowA
(بولین قسم) سچ یا غلط ہے. ہم متغیر مقرر کرنے کی ضرورت ہےnumberA
انٹرفیس پیرامیٹرز پر:numberA@isShowA
.
اس طرح، اگر پیرامیٹرisShowA
چیک نہیں کیا جاتا، پیرامیٹرnumberA
چھپا ہوا ہے. ComboBox کنٹرول کی قسم کے پیرامیٹرز کے لئے کے طور پر، پیرامیٹرز کے منحصر حصہ پیرامیٹر کی قیمت کے برابر ہے یا نہیں کا فیصلہ کرنا ہےانڈیکس ویلیوComboBox میں کچھ آپشن کی. اسی طرح، پیرامیٹر لےisShowA
مثال کے طور پر. پیرامیٹرز میں متغیرات مقرر کرتے وقت، لکھیں:numberA@combox==2
. پیرامیٹرnumberA
دکھائے گا یا چھپائیں گے، پیرامیٹر کی بنیاد پرcombox
تیسرے آپشن کے طور پر چیک کیا جائے گا (جہاں انڈیکس 0 پہلے آپشن سے مطابقت رکھتا ہے، انڈیکس 1 دوسرے سے مطابقت رکھتا ہے، اور انڈیکس 2 تیسرے سے مطابقت رکھتا ہے.)
حکمت عملی انٹرفیس پیرامیٹرز ، انٹرایکٹو کنٹرولز ، اور پیرامیٹر گروپنگ فنکشن (?First group)
اس پیرامیٹر کی تفصیل کے آغاز میں جو گروپ بندی شروع کرتا ہے ، جیسا کہ مندرجہ ذیل شبیہہ میں دکھایا گیا ہے:
جب آپ حکمت عملی استعمال کر رہے ہیں تو، پیرامیٹرز گروپوں میں دکھائے جاتے ہیں:
پیرامیٹر ڈیفالٹ قدر محفوظ کریں:
حکمت عملی کے پیرامیٹرز شبیہہ میں دکھائے گئے ہیں۔ بیک ٹیسٹ کے دوران ، اگر آپ حکمت عملی کے پیرامیٹرز کی ڈیفالٹ اقدار کو محفوظ کرنا چاہتے ہیں تو ، آپ کلک کرسکتے ہیںSave settings
حکمت عملی کے پیرامیٹرز کو تبدیل کرنے کے بعد بٹن.
آپ کوڈ کی شکل میں حکمت عملی پیرامیٹر کی ترتیبات کو محفوظ کر سکتے ہیں:
/*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