ہم نے سیکھا ہے ٹریڈنگ کی حکمت عملی کی تعمیر کے لئے نمائش ماڈیول - پہلی واقفیت، اور ہم بصری ماڈیول کی تعمیر اور splicing کے ایک تصوراتی سمجھ ہے، اگلا، یہ دوسرے ماڈیولز کو استعمال کرنے کے لئے سیکھنے کے لئے آسان ہے. کچھ زیادہ پیچیدہ افعال کو یکجا کرنا ممکن ہے۔
پچھلے سیکھنے اور ٹیسٹنگ میں، ہم نے کئی
یہ استعمال کیا گیا ہے یہاں دوبارہ نہیں کیا جائے گا.
روبوٹ ٹریڈنگ کے لئے حکمت عملی لکھتے وقت، آپ ایک سے زیادہ ایکسچینج آبجیکٹ شامل کرسکتے ہیں، جیسے ہیجنگ کی حکمت عملی. یا آپ کو مارکیٹ تک رسائی حاصل کرنے کے لئے ایکسچینج اشیاء کو عبور کرنے کی ضرورت ہے (ٹرانسفر کا مطلب ہے ایکسچینج اشیاء کو ایک ایک کرکے ملاحظہ کرنا) ۔ یہ ہے جہاں تبادلے کی تعداد حاصل کرنے کے لئے ماڈیول کھیل میں آتا ہے.
ہم ایک سادہ ڈھانچے میں فی الحال تشکیل شدہ تبادلے کی تعداد کو پرنٹ کر سکتے ہیں:
اصل میں، یہ اس طرح جاوا اسٹریٹجی کوڈ کو فون کرنے کی طرح ہے:
function main () {
Log(exchanges.length)
}
آئیے اس مشترکہ ماڈیول کے چلانے کے نتائج پر ایک نظر ڈالتے ہیں:
ہم دیکھ سکتے ہیں کہ ہم نے تین ایکسچینج اشیاء شامل کی ہیں، تین مختلف ایکسچینج اکاؤنٹس کی نمائندگی کرتے ہیں، اور بیک ٹیسٹ لاگ کا آؤٹ پٹ نتیجہ 3 ہے.
تین تبادلہ اشیاء شامل کرتے وقت، ڈراپ ڈاؤن باکس تین اختیارات دکھائے گا. لوپ کی قسم میں پہلے سے لوپ ماڈیول سیکھیں.
پہلے سے ایک حالت فیصلہ ماڈیول سیکھیں:
فیصلے کی شرائط مندرجہ ذیل طور پر لکھا جا سکتا ہے:
ہم لوپ ماڈیول کا استعمال اضافی تبادلہ ناموں کو عبور کرنے کے لئے کرتے ہیں. ہم موجودہ لوپ گنتی پرنٹ کیا جا کرنے کے تبادلے کے نام کے مساوی ہے کہ آیا فیصلہ کرنے کے لئے حالت فیصلے ماڈیول استعمال کرتے ہیں.
بیک ٹسٹ آپریشن کے نتائج:
جیسے جاوا اسٹریٹجی کوڈ:
function main () {
for (var i = 1 ; i <= exchanges.length ; i++) {
if (i == 1) {
Log(exchanges[0].GetName())
} else if (i == 2) {
Log(exchanges[1].GetName())
} else {
Log(exchanges[2].GetName())
}
}
}
ایک سادہ مثال یہ ہے کہ پہلے ایکسچینج آبجیکٹ کی ٹریڈنگ جوڑی حاصل کریں جو فی الحال مقرر کی گئی ہے اور اسے ٹیکسٹ متغیر میں تفویض کریں (جو متغیر کی قسم میں پہلے سے تخلیق کیا گیا ہے) ۔
بیک ٹسٹنگ کے نتائج:
اگر آپ جاوا اسٹریٹجی کوڈ کو کال کرتے ہیں:
function main () {
var text = exchange.GetCurrency()
Log(text)
}
یہ ماڈیول آرڈر آپریشن کے لئے بہت اہم ہے۔ پہلی ٹینن (گھیر) پوزیشن قیمت متغیر کے ساتھ سرایت کرتی ہے ، جو آرڈر کی قیمت کی وضاحت کے لئے استعمال ہوتی ہے۔ آپ براہ راست ایک مقررہ قیمت بھی درج کرسکتے ہیں۔ دوسرا ٹینن (concave) پوزیشن آرڈر کی مقدار متغیر کے ساتھ سرایت ہے، جو آرڈر کی مقدار کی وضاحت کرنے کے لئے استعمال کیا جاتا ہے.
مثال کے طور پر، ہم ایک خرید آرڈر رکھنے کی ایک مثال کو موجودہ ٹک مارکیٹ کے اعداد و شمار کی تازہ ترین قیمت کی بنیاد پر 10 یوآن کی سلائیڈنگ قیمت کو شامل کرتے ہوئے، آرڈر کی مقدار کو 0.1 سککوں پر مقرر کرتے ہیں، اور آرڈر ID پرنٹ کرتے ہیں.
بیک ٹسٹ آپریشن کے نتائج:
مندرجہ ذیل جاوا اسٹریٹجی کوڈ کی طرح:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
Log(id)
}
یہ ماڈیول موجودہ ٹریڈنگ جوڑی کی غیر مکمل حالت میں تمام زیر التواء آرڈرز کو واپس کرے گا۔ یہ ایک فہرست کی ساخت (آرری) واپس کرتا ہے ، جسے فہرست کی قسم کے ماڈیول (ٹرانسورس آپریشن ، وغیرہ) کے ذریعہ پروسیس کیا جاسکتا ہے۔
مثال کے طور پر ، ہم نے مذکورہ بالا مثال آرڈر ماڈیول [4] کو تھوڑا سا تبدیل کیا ، اور آرڈر دیتے وقت شامل کردہ 10 یوآن کی قیمت کو منفی 10 یوآن میں تبدیل کیا۔ آرڈر فوری طور پر بند نہیں ہوگا ، لیکن اسے ٹرانزیکشن کی گہرائی میں رکھا جائے گا (یعنی ، ایک خریدیں ، دو خریدیں ، N میں ایک خاص سطح خریدیں) ، اس طرح ، آرڈر زیر التواء آرڈرز کی حالت میں ہوگا جو بھرنے کے منتظر ہیں۔
اس کے بعد ہم ماڈیول کا استعمال کرتے ہیں
بیک ٹسٹنگ سے پتہ چلتا ہے کہ:
خرید آرڈر کی قیمت اس وقت کی تازہ ترین قیمت سے 10 یوآن کم تھی، لہذا اسے فوری طور پر پورا نہیں کیا جائے گا۔ پھر آرڈر کو زیر التواء ٹرانزیکشن کی حیثیت سے حاصل کریں، اور اسے پرنٹ کریں۔ آخر میں، پروگرام کو روکنے کے لئے ایک استثناء پھینک دیا جاتا ہے.
پورے جمع ماڈیول جاوا سکرپٹ کی حکمت عملی کے لئے ایک کال کی طرح ہے:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
Log(exchange.GetOrders())
throw "stop"
}
یہ ماڈیول آرڈر منسوخ کرنے کے لیے استعمال ہوتا ہے۔
بہت سے منظرنامے ہیں جن میں حکمت عملی لکھنے کے دوران اس طرح کے آپریشن کی ضرورت ہوتی ہے۔
تمام موجودہ زیر التواء احکامات منسوخ کریں.
اس میں کوئی شک نہیں ہے کہ
سب سے پہلے، تمام احکامات کی منسوخی کی جانچ کرنے کے لئے، یہ ایک آرڈر رکھنے کے لئے واضح نہیں ہے. ہم 2 احکامات رکھنے کے لئے شروع کرتے ہیں، ان کی قیمتوں اور مقدار دونوں احکامات کو الگ کرنے کے لئے مختلف ہیں.
traversal کے دوران، ہر حکم بازیافت متغیر ماڈیول حکم (متغیر ماڈیول کی قسم میں پیدا، ذیل میں دکھایا گیا ہے کے طور پر) کے لئے ایک قدر تفویض کیا جاتا ہے:
آرڈر آئی ڈی نکالیں، اسے
بیک ٹسٹ آپریشن:
جاوا اسٹریٹجی کی وضاحت کا استعمال کریں:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
Log(id2)
var orders = exchange.GetOrders()
Log(orders)
for (var i in orders) {
var order = orders[i]
Log(exchange.CancelOrder(order.Id))
}
}
ماڈیول کی ٹینن (concave) پوزیشن ایک آرڈر ID متغیر ماڈیول سے منسلک ہے، اور آرڈر کی تفصیلات واپس کی جا سکتی ہیں.
چلانے کے بعد واپس آرڈر نوٹ کریں:
مثال [5] میں چلنے والے نتائج کے مقابلے میں ، یہ پایا جاسکتا ہے کہ طباعت شدہ آرڈر [] قوسین کے بغیر ایک علیحدہ آرڈر کی معلومات ہے۔ کیونکہ مثال [5] ایک فہرست لوٹاتا ہے ، لیکن یہ مثال ایک علیحدہ آرڈر کی معلومات لوٹاتی ہے (موڈول کے ذریعہ منظور کردہ ٹینن پوزیشن پر ID متغیر ماڈیول کی بنیاد پر حاصل کی گئی) ۔
مندرجہ بالا مثال جاوا سکرپٹ کی حکمت عملی کو انجام دینے کے لئے اسی طرح کی ہے:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(exchange.GetOrder(id))
}
ہم مندرجہ بالا ماڈیولز کو ایک ایک کرکے سیکھیں گے اور ہم ٹیسٹ ایکسچینج کو کموڈٹی فیوچر کے طور پر ترتیب دیں گے۔
بیک ٹسٹنگ کی ترتیبات:
مندرجہ ذیل مثال کی ترتیبات کی بنیاد پر backtest انجام دیتا ہے.
خام مال کے فیوچر میں کھلنے اور بند ہونے کا وقت ہوتا ہے۔ جب مارکیٹ بند ہو جاتی ہے تو اس سے رابطہ نہیں کیا جا سکتا۔
جب تبادلے کا مقصد فیوچر ایکسچینج کے طور پر تشکیل دیا جاتا ہے ، اگر تبادلے کا معاہدہ نہیں ہوتا ہے اور براہ راست مارکیٹ کی معلومات حاصل کرتا ہے تو ، غلطی کی اطلاع دی جائے گی۔
ہم نے معاہدہ MA909 کے طور پر مقرر کیا، میتانول کا اہم معاہدہ فی الحال۔
اس طرح، MA909 معاہدے کی موجودہ ٹک مارکیٹ میں تازہ ترین قیمت کی قیمت حاصل کی جاتی ہے.
آرڈر پر عملدرآمد ماڈیول میں
آرڈر کی سمت کی وضاحت کرنے کی ضرورت ہے، کیونکہ مستقبل کے پاس: خریدنا: کھلی لمبی پوزیشن فروخت: کھلی مختصر پوزیشنیں closebuy: طویل پوزیشنوں کو بند کرنا close-sell: مختصر پوزیشن بند کرنا چار سمتیں (سامان کے فیوچر کے لیے دو اور سمتیں ہیں: آج طویل پوزیشنوں کو بند کرنے کے لیے closebuy_today اور آج مختصر پوزیشنوں کو بند کرنے کے لیے closeesell_today) ۔
مثال کے طور پر، اگر آرڈر ماڈیول
بیک ٹسٹنگ ڈسپلے:
جیسے جاوا اسٹریٹجی کوڈ:
function main () {
while (true) {
if (exchange.IO("status")) {
exchange.SetContractType("MA909")
Log(exchange.GetTicker().Last)
exchange.SetDirection("buy")
Log(exchange.Buy(1000, 1))
throw "stop"
} else {
Log("The commodity futures front-end processor is not connected")
}
Sleep(1000)
}
}
ڈیجیٹل کرنسی کے فیوچر کا استعمال بنیادی طور پر اسی طرح ہے جیسے اوپر [8] میں خام مال کے فیوچر
اس کا استعمال ڈیجیٹل کرنسی فیوچر کے لیورج کو مقرر کرنے کے لئے کیا جاتا ہے۔
#Note: Backtesting is not supported.
جیسے جاوا اسٹریٹجی:
function main () {
exchange.SetMarginLevel(10)
}
تصوراتی حکمت عملی کی مثالیں:
https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318مزید حکمت عملیوں کے لئے، براہ کرم ملاحظہ کریں:https://www.fmz.com/square
اس سلسلے کے دیگر مضامین