، [nowTime، اس.basb]]) ؛ ObjChart.add (([4، [nowTime، اس.sabb]]) ؛ ObjChart.update ((گراف) ؛ }
### 4. In the entry function main(), execute the pre-transaction pre-processing code, which will only run once after the program is started, including:
- ```SetErrorFilter ( )``` to filter the unimportant information in the console
- ```exchange.IO ( )``` to set the digital currency to be traded
- ```ObjChart.reset ( )``` to clear the previous chart drawn before starting the program
- ```LogProfitReset ( )``` to clear the status bar information before starting the program
After the above pre-transaction pre-processing is defined, the next step is to enter the polling mode and execute the onTick() function repeatedly. It also sets the sleep time for Sleep () polling, because the API of some digital currency exchanges has built-in access limit for a certain period of time.
فنکشن main() {
// کنسول میں غیر اہم معلومات فلٹر کریں
SetErrorFilter ((
## II. Get and calculate data
1. Obtain basic data object, account balance, and boll indicator data for use in the trading logic.
فنکشن آن کریں نشان زد کریں var data = new Data ((tradeTypeA، tradeTypeB) ؛ // ایک بنیادی ڈیٹا آبجیکٹ بنائیں var accountStocks = data.accountData.Stocks؛ // اکاؤنٹ بیلنس var boll = data.boll ((dataLength, timeCycle) ؛ // boll اشارے کے اعداد و شمار حاصل کریں if (!boll) return؛ // اگر کوئی boll ڈیٹا نہیں ہے تو واپس کریں }
## III. Place an order and handle the follow-up
1. Execute the buying and selling operation according to the above strategic logic. First, judge whether the price and indicator conditions are valid, then judge whether the position conditions are valid, and finally execute the trade () order function.
// قیمت کے فرق کی وضاحت
// basb = (معاہدہ A کی ایک قیمت فروخت - معاہدہ B کی ایک قیمت خریدنے)
// sabb = (معاہدہ A کی ایک قیمت خریدیں - معاہدہ B کی ایک قیمت فروخت)
if (data.sabb > boll.middle && data.sabb < boll.up) { // اگر sabb وسط ٹریک سے زیادہ ہے
if (data.mp(tradeTypeA, 0)) { // آرڈر دینے سے پہلے چیک کریں کہ معاہدہ A میں طویل آرڈر ہیں یا نہیں
data.trade ((tradeTypeA,
2. After the order is placed, it is necessary to deal with the abnormal situations such as the unsettled order and the holding of a single contract. And draw the chart.
data.cancelOrders(); // احکامات منسوخ کریں اعداد و شمار.ڈرائنگچارٹ ((بُل) ؛ // ڈرائنگ data.isEven(); // انفرادی معاہدوں کو ہینڈل کرنا
As above, we have created a simple cross-period arbitrage strategy of digital currency completely through more than 200 lines code. The complete code is as follows:
// عالمی متغیر
// ترتیب چارٹ کے لئے ایک چارٹ آبجیکٹ کا اعلان
var چارٹ = {
__isStock: سچ،
ٹول ٹپ: {
xDateFormat:
// پیرامیٹرز
var tradeTypeA =
// بنیادی اعداد و شمار فنکشن ڈیٹا ((tradeTypeA، tradeTypeB) { // arbitrage A معاہدے اور arbitrage B معاہدے میں منتقل this.accountData = _C(exchange.GetAccount); // اکاؤنٹ کی معلومات حاصل کریں this.positionData = _C(exchange.GetPosition); // پوزیشن کی معلومات حاصل کریں var recordsData = _C(exchange.GetRecords) ؛ // K لائن ڈیٹا حاصل کریں exchange.SetContractType(tradeTypeA) ؛ // معاہدہ کرنے کے لئے سبسکرائب var depthDataA = _C(exchange.GetDepth) ؛ // ثالثی ایک معاہدے کی گہرائی کے اعداد و شمار exchange.SetContractType(tradeTypeB); // ثالثی B معاہدے کو سبسکرائب کریں var depthDataB = _C(exchange.GetDepth) ؛ // ثالثی B معاہدے کی گہرائی کے اعداد و شمار this.time = recordsData[recordsData.length - 1].Time؛ // تازہ ترین ڈیٹا حاصل کرنے کا وقت this.askA = depthDataA.Asks[0].Price؛ // بیچیں ایک قیمت کی ثالثی ایک معاہدہ this.bidA = depthDataA.Bids[0].Price؛ // خریدیں ایک قیمت کی ثالثی ایک معاہدہ this.askB = depthDataB.Asks[0].Price؛ // بیچیں ایک قیمت کی ثالثی B معاہدے this.bidB = depthDataB.Bids[0].Price؛ // خریدیں ایک قیمت کی ثالثی B معاہدے // مثبت ثالثی قیمت فرق (ایک معاہدے A کی قیمت فروخت - ایک معاہدے B کی قیمت خریدنے) this.basb = depthDataA.Aks[0].Price - depthDataB.Bids[0].Price؛ // منفی ثالثی قیمت فرق (ایک معاہدے A کی قیمت خریدنے - ایک معاہدے B کی قیمت فروخت) this.sabb = depthDataA.Bids[0].Price - depthDataB.Aks[0].Price؛ }
// پوزیشن حاصل کریں Data.prototype.mp = فنکشن (tradeType, type) { var positionData = this.positionData؛ // پوزیشن کی معلومات حاصل کریں کے لئے (var i = 0؛ i < positionData.length؛ i++) { اگر (positionData[i].ContractType == tradeType) { if (positionData[i].Type == type) { اگر (positionData[i].Type == type) { اگر (positionData[i].Type == type) { اگر (positionData[i].Type == type) { if (positionData[i].Amount > 0) { واپسی کی پوزیشنData[i].amount؛ } } } } false لوٹاتا ہے۔ }
// نئے K لائن کے اعداد و شمار اور بول اشارے کے اعداد و شمار کی ترکیب ڈیٹا.پروٹوٹائپ.بول = فنکشن (نمبر، ٹائم سائیکل) var خود = {}؛ // عارضی اشیاء // مثبت آربیٹریج قیمت فرق اور منفی آربیٹریج قیمت فرق کے درمیان میڈین قدر self.Close = (یہ.basb + یہ.sabb) / 2؛ اگر (this.timeA == this.timeB) { self.Time = this.time؛ } // دو گہرائی ڈیٹا ٹائم اسٹیمپ کا موازنہ کریں if (this.time - oldTime > timeCycle * 60000) { سلاخوں.دباؤ ((خود) ؛ oldTime = this.time؛ } // مخصوص وقت کی مدت کے مطابق K لائن صف میں قیمت فرق ڈیٹا آبجیکٹ میں منتقل if (bars.length > num * 2) { bars.shift(); // K لائن صف کی لمبائی کو کنٹرول کریں } دیگر { واپسی } var boll = TA.BOLL(بار، نمبر، 2)؛ // طالب لائبریری میں boll اشارے کال کریں واپسی { up: boll[0][boll[0].length - 1، // boll اشارے اوپری ٹریک وسط: بول [1][بول [1]]لمبائی - 1، // بول اشارے وسط ٹریک نیچے: بول[2][بول[2].لمبائی - 1] // بول اشارے نیچے ٹریک } // ایک عملدرآمد boll اشارے کے اعداد و شمار واپس }
// ایک آرڈر رکھیں
ڈیٹا.پروٹوٹائپ.ٹریڈ = فنکشن (ٹریڈٹائپ، قسم) {
exchange.SetContractType(tradeType); // آرڈر دینے سے پہلے کسی معاہدے کی دوبارہ رکنیت لیں
وار askPrice، bidPrice؛
if (tradeType == tradeTypeA) { // اگر آرڈر معاہدہ A میں دیا گیا ہے
askPrice = this.askA؛ // سیٹ askPrice
bidPrice = this.bidA؛ // سیٹ bidPrice
} دوسری صورت میں اگر (tradeType == tradeTypeB) { // اگر آرڈر معاہدہ B میں رکھا گیا ہے
askPrice = this.askB؛ // سیٹ askPrice
bidPrice = this.bidB؛ // سیٹ bidPrice
}
سوئچ (ٹائپ) { // میچ آرڈر کی جگہ کا تعین موڈ
کیس
// احکامات منسوخ کریں ڈیٹا.پروٹوٹائپ.بند کریںOrders = فنکشن () { نیند ((500) ؛ // منسوخ کرنے سے پہلے تاخیر، کیونکہ کچھ تبادلے، آپ کو پتہ ہے کہ میرا کیا مطلب ہے var احکامات = _C ((exchange.GetOrders) ؛ // خالی احکامات کی ایک صف حاصل کریں if (orders.length > 0) { // اگر خالی احکامات ہیں کے لئے (var i = 0؛ i < احکامات.length؛ i++) { // خالی احکامات کی صف کے ذریعے تکرار exchange.CancelOrder ((آرڈر[i].Id) ؛ // ایک ایک کر کے خالی احکامات منسوخ کریں نیند ((500) ؛ // 0.5 سیکنڈ کے لئے نیند } غلط لوٹائیں؛ // غلط لوٹائیں اگر ایک خالی آرڈر منسوخ کیا جاتا ہے } true لوٹائیں؛ // اگر کوئی خالی احکامات نہیں ہیں تو true لوٹائیں }
// انفرادی معاہدوں کی ہولڈنگ سنبھالیں ڈیٹا.پروٹوٹائپ.ایس ایون = فنکشن () { var positionData = this.positionData؛ // پوزیشن کی معلومات حاصل کریں var type = null؛ // پوزیشن سمت سوئچ کریں // اگر باقی 2 پوزیشن صف کی لمبائی 0 کے برابر نہیں ہے یا پوزیشن صف کی لمبائی 2 کے برابر نہیں ہے if (positionData.length % 2!= 0 اور اگر positionData.length!= 2) { کے لئے (var i = 0؛ i < positionData.length؛ i++) { // پوزیشن صف کے ذریعے تکرار if (positionData[i].Type == 0) { // اگر یہ ایک طویل حکم ہے قسم = 10؛ // ترتیب پیرامیٹرز مقرر کریں } else if (positionData[i].Type == 1) { // اگر یہ ایک مختصر حکم ہے قسم = -10؛ // ترتیب پیرامیٹرز مقرر کریں } // تمام پوزیشن بند کریں this.trade(positionData[i].ContractType, type, positionData[i].Amount) ۔ معاہدہ کی قسم، قسم، پوزیشن } } }
// ڈرائنگ ڈیٹا.پروٹوٹائپ.ڈرائنگ گراف = فنکشن (بول) { var nowTime = نیا Date().getTime(؛ ObjChart.add (([0، [nowTime، boll.up]]) ؛ ObjChart.add (([1، [nowTime، boll.middle]]) ؛ ObjChart.add (([2، [nowTime، boll.down]]) ؛ ObjChart.add (([3، [nowTime، this.basb]]) ؛ ObjChart.add (([4، [nowTime، اس.sabb]]) ؛ ObjChart.update ((گراف) ؛ }
// تجارتی شرائط
فنکشن آن کریں نشان زد کریں
var data = new Data ((tradeTypeA، tradeTypeB) ؛ // ایک بنیادی ڈیٹا آبجیکٹ بنائیں
var accountStocks = data.accountData.Stocks؛ // اکاؤنٹ بیلنس
var boll = data.boll ((dataLength, timeCycle) ؛ // boll اشارے کے اعداد و شمار حاصل کریں
if (!boll) return؛ // اگر کوئی boll ڈیٹا نہیں ہے تو واپس کریں
قیمت کے فرق کی وضاحت
// basb = (معاہدہ A کی ایک قیمت فروخت - معاہدہ B کی ایک قیمت خریدنے)
// sabb = (معاہدہ A کی ایک قیمت خریدیں - معاہدہ B کی ایک قیمت فروخت)
if (data.sabb > boll.middle && data.sabb < boll.up) { // اگر sabb وسط ٹریک سے زیادہ ہے
if (data.mp(tradeTypeA, 0)) { // آرڈر دینے سے پہلے چیک کریں کہ معاہدہ A میں طویل آرڈر ہیں یا نہیں
data.trade ((tradeTypeA,
// انٹری فنکشن
فنکشن main() {
// کنسول میں غیر اہم معلومات فلٹر کریں
SetErrorFilter ((
لہذا ، ہم منافع حاصل کرنے کے لئے قیمت کے فرق پر کم خرید سکتے ہیں اور زیادہ فروخت کرسکتے ہیں۔ پھر ، اعدادوشمار میں معیاری انحراف کے اصول کے مطابق ، بولنگر بینڈ کو ایک درمیانی پٹری اور معیاری انحراف کے ذریعہ حساب کتاب کرنے والے اوپری اور نچلے پٹریوں سے تشکیل دیا جاتا ہے ، جو تین میش بینڈ کی تشکیل ہے ، جو قیمت کے فرق کی ثالثی کے لین دین میں بہت عملی ہیں۔
اس حکمت عملی کے مطابق کام کرنے والے ٹیسٹنگ کے بعد ، مجموعی آمدنی نسبتا stable مستحکم ہے ، حالانکہ ہینڈلنگ فیس اور اثر کی لاگت پر غور کیے بغیر ہر بار آمدنی بہت زیادہ نہیں ہوتی ہے۔ یہ نوٹ کیا جانا چاہئے کہ اعدادوشمار کی ثالثی کی وجہ سے ، قیمت کے فرق کی الٹ پھیلاؤ کا خطرہ ہے۔ ڈیزائن کرتے وقت ہمیں اسٹاپ نقصان کے مسئلے پر غور کرنا چاہئے۔ دوسرا ، ہمیں اثر کی لاگت پر بھی توجہ دینے کی ضرورت ہے۔ جب لین دین میں شامل دونوں معاہدوں کی لیکویڈیٹی کم ہوجاتی ہے تو ، اس کا آمدنی پر بہت زیادہ اثر پڑے گا ، اور سرمایہ کاروں کو مناسب طور پر اس سے بچنا چاہئے۔
پچھلی دو کلاسوں میں ، ہم نے مائی لینگویج میں ایک رجحان کی حکمت عملی اور جاوا اسکرپٹ میں ایک ثالثی کی حکمت عملی لکھی ہے۔ ہم نے حکمت عملی کے بیک ٹسٹ میں کوئی مسئلہ نہیں دیکھا۔ تاہم ، مقداری تجارت کوئی پروگرام نہیں ہے ، جس کا بیک ٹسٹ براہ راست بغیر کسی پریشانی کے کیا جاسکتا ہے۔
حقیقت میں ، بیک ٹیسٹ صرف حکمت عملی کا ایک نقلی ہے۔ یہ صرف تاریخی اعداد و شمار میں حکمت عملی کی کارکردگی کا جائزہ لینے کے لئے استعمال ہوتا ہے۔ اس سے تاجروں کو کچھ تجارتی حکمت عملیوں کا تیزی سے جائزہ لینے اور ان کو ضائع کرنے کی اجازت ملتی ہے۔
بہت سے معاملات میں ، حکمت عملی جو بیک ٹیسٹ میں بہت اچھی لگتی ہیں وہ اکثر مختلف وجوہات کی بناء پر حقیقی مارکیٹ میں بیک ٹیسٹ کے معیار کو پورا کرنے میں ناکام رہتی ہیں۔ ان میں سے کچھ تاجروں کے کنٹرول سے باہر ہیں ، لیکن کچھ ناکامی عام یا ممکنہ غلطیوں کی وجہ سے ہوتی ہے۔
ہمیں پہلے مقداری کرنے کے لئے جامد اعداد و شمار اور متحرک اعداد و شمار کا تصور ہونا چاہئے۔ بیک ٹیسٹ میں ، ہم جامد تاریخی اعداد و شمار کا استعمال کرتے ہیں۔ ہر K لائن کے ساتھ اوپن ہائی اور بند ہونے والی کم قیمت مکمل ہے ، اور ہر ٹرانزیکشن سگنل کو 100٪ بند کیا جاسکتا ہے۔ لیکن حقیقی مارکیٹ میں اعداد و شمار متحرک ہیں۔ مثال کے طور پر ، اگر زیادہ سے زیادہ قیمت کھولنے کے 1 گھنٹے کے اندر زیادہ سے زیادہ قیمت سے زیادہ ہے تو ، خریدیں۔ لیکن اگر موجودہ K لائن ختم نہیں ہوئی ہے تو ، زیادہ سے زیادہ قیمت متحرک ہے ، اور تجارتی سگنل آگے پیچھے چل سکتا ہے۔ اس صورتحال سے یہ ظاہر ہوتا ہے کہ حکمت عملی خرید و فروخت کی تجارت کے حالات کا فیصلہ کرنے میں مستقبل کی تقریب کا استعمال کرتی ہے۔
مستقبل کا فنکشن کیا ہے؟ آئیے پہلے بائیڈو انسائیکلوپیڈیا کی وضاحت پر ایک نظر ڈالتے ہیں: ایک مقدار ایک اور مقدار پر منحصر ہے ، جیسے مقدار A اور مقدار B۔ اگر B بدلتا ہے تو ، A بدل جاتا ہے ، تو A B کا فنکشن ہے۔ اگر B بعد کی مقدار ہے تو ، A ایک سابقہ مقدار ہے ، A B کے ساتھ بدل جاتا ہے ، اور A B کا مستقبل کا فنکشن ہے۔ آپ الجھن میں پڑ سکتے ہیں۔
عام طور پر ، یہ مستقبل کے اعداد و شمار کا حوالہ دینے کا ایک فنکشن ہے ، جیسے کل کی قیمت کی قیمت کے ساتھ کل کی قیمت کی پیش گوئی کرنا۔ اگر کسی تکنیکی اشارے میں مستقبل کا فنکشن ہوتا ہے تو ، اس کا سگنل غیر یقینی ہوتا ہے۔ یہ اکثر موجودہ ٹرانزیکشن سگنل ہوتا ہے۔ جب اگلی K لائن ظاہر ہوتی ہے تو ، سگنل غائب ہوجاتا ہے یا پوزیشن بدل جاتا ہے۔
اختتامی قیمت ایک مستقبل کا فنکشن ہے۔ اختتامی قیمت ہمیشہ آخری K لائن ختم ہونے تک بدلتی رہتی ہے۔ آپ کو اختتامی قیمت کا تعین کرنے کے لئے K لائن ختم ہونے تک انتظار کرنا ہوگا۔ چونکہ اختتامی قیمت خود ایک مستقبل کا فنکشن ہے ، لہذا اختتامی قیمت پر مبنی تمام تکنیکی اشارے بھی مستقبل کے افعال ہیں۔
لہذا ، اگر کوئی تکنیکی اشارے تصدیق شدہ اختتامی قیمت کو بنیادی اعداد و شمار کے طور پر استعمال کرتا ہے تو ، تجارتی سگنل اس سے قطع نظر کہ اس میں کتنا وقت گزر گیا ہے ، تبدیل نہیں ہوگا ، یہ کہا جاسکتا ہے کہ تکنیکی اشارے کا مستقبل کی تقریب سے کوئی تعلق نہیں ہے۔ لیکن اس کے استعمال کردہ بنیادی اعداد و شمار غیر تصدیق شدہ اختتامی قیمت ہیں ، لہذا یہ تکنیکی اشارے مستقبل کی تقریب سے مراد ہے ، اور عملی درخواست میں تجارتی سگنل تبدیل ہوسکتا ہے۔
مستقبل کی تقریب مستقبل کی قیمت کا استعمال کرتی ہے ، جو اس کے برعکس ماضی کی قیمت کا بھی استعمال کرسکتی ہے۔ یہ بھی ایک ایسا مسئلہ ہے جس کو بہت سے نوکریاں نظرانداز کرتی ہیں۔ مستقبل میں اس مسئلے کی بہتر مثال کے طور پر ، آئیے ایک مثال لیتے ہیں: اگر موجودہ زیادہ سے زیادہ قیمت افتتاحی قیمت کے بعد 1 گھنٹے کے اندر زیادہ قیمت سے زیادہ ہے تو ، افتتاحی قیمت پر خریدیں۔ ظاہر ہے ، خرید و فروخت سگنل کی شرائط میں کوئی مسئلہ نہیں ہے ، لیکن آرڈر کی قیمت نے ماضی کی قیمت کا استعمال کیا ہے۔
بیک ٹیسٹ میں ، حکمت عملی معمول کی ہے ، کیونکہ جامد اعداد و شمار پر مبنی بیک ٹیسٹ انجن کو صرف 100٪ بند کیا جاسکتا ہے اگر خریدنے کا اشارہ موجود ہو۔ تاہم ، جب کھولنے کے 1 گھنٹے کے اندر سب سے زیادہ قیمت سب سے زیادہ قیمت سے زیادہ ہے تو ، یہ یقینی ہے کہ آرڈر پچھلی قیمت کی افتتاحی قیمت پر جاری نہیں کیا جاسکتا ہے۔
نام نہاد قیمت خلا K لائن چارٹ پر دکھائے جانے والے قیمتوں سے مراد ہے ، لیکن وہ قیمتیں جو حقیقی مارکیٹ میں تجارت نہیں کی جاسکتی ہیں ، بنیادی طور پر مندرجہ ذیل معاملات میں تقسیم ہیں:
اوور فٹنگ ایک عام غلطی ہے جو مقداری تجارت کے ابتدائی افراد کرتے ہیں۔ اوور فٹنگ کیا ہے؟ ایک سادہ مثال کے طور پر ، کچھ لوگ اسکول کے امتحان میں ہر سوال کو حفظ کرنے کے لئے بہت ساری مشقیں استعمال کرتے ہیں۔ اگر وہ امتحان کے دوران موضوع کو تھوڑا سا تبدیل کرتا ہے تو وہ ایسا نہیں کرسکتا ہے۔ کیونکہ اس نے ہر سوال کی مشق کو بہت پیچیدہ انداز میں حفظ کیا ، اس نے عام اصولوں کو خلاصہ نہیں کیا۔
مندرجہ بالا چارٹ کی طرح ، جب تک یہ کافی پیچیدہ ہے ، ایک ماڈل اعداد و شمار کے مطابق بالکل موافقت کرسکتا ہے۔ یہ مقداری تجارت میں بھی سچ ہے۔ اگر آپ کی حکمت عملی پیچیدہ ہے اور اس میں بہت سارے بیرونی پیرامیٹرز ہیں تو ، ہمیشہ ایک یا کئی پیرامیٹرز ہوں گے جو محدود تاریخی ڈیٹا بیک ٹسٹ میں تاریخی مارکیٹ میں بالکل فٹ ہوسکتے ہیں۔
تاہم ، مستقبل کی حقیقی مارکیٹ میں ، قیمت کی تبدیلی آپ کی حکمت عملی کی حد سے تجاوز کر سکتی ہے۔ در حقیقت ، مقداری تجارتی حکمت عملی کی ترقی کا جوہر بڑی تعداد میں بے ترتیب اعداد و شمار سے مقامی غیر بے ترتیب اعداد و شمار کو مماثل کرنے کا عمل ہے۔ لہذا ، ہمیں اس جال سے بچنے کے لئے شماریاتی علم کا استعمال کرنے کی ضرورت ہے۔ ہم یہ کیسے کرتے ہیں؟
سمجھوتہ حل اندرونی نمونہ اور اضافی نمونہ کے اعداد و شمار کا استعمال کرنا ہے۔ پورے ڈیٹا کو دو حصوں میں تقسیم کریں ، اور اندرونی نمونہ کو ٹریننگ سیٹ کے طور پر استعمال کریں ، جو ڈیٹا بیک ٹیسٹ کا ذمہ دار ہے۔ اضافی نمونہ ٹیسٹ سیٹ کے طور پر استعمال ہوتا ہے اور تصدیق کے لئے ذمہ دار ہے۔ اگر تاریخی اعداد و شمار کم ہیں تو ، آپ کراس ٹیسٹ کا طریقہ بھی استعمال کرسکتے ہیں۔
اگر آپ کو پتہ چلتا ہے کہ نمونہ سے باہر کے اعداد و شمار اچھی طرح سے کام نہیں کرتے ہیں، اور آپ کو لگتا ہے کہ یہ ماڈل کو کھونے کے لئے بہت برا ہے یا آپ کو تسلیم کرنے کے لئے تیار نہیں ہیں کہ آپ کا ماڈل اچھا نہیں ہے، اور آپ کو ماڈل کو بہتر بنانے کے لئے جاری رکھیں گے اضافی نمونہ کے اعداد و شمار تک اضافی نمونہ کے اعداد و شمار بھی اچھی کارکردگی کا مظاہرہ کرتے ہیں، تو آپ کو آخر میں آپ کے پیسے کھو دینا چاہئے.
بقا کی تعصب کی وضاحت مندرجہ ذیل مثالوں سے کی جاسکتی ہے: ۱۔ جب ٹوئیری پر کھڑے ہوں گے تو سور اڑ جائیں گے۔ 2۔ آن لائن پیراشوٹ فروخت کرنے والے لوگوں کی تعریف کی جاتی ہے، کیونکہ پیراشوٹ کے مسائل والے لوگ اب زندہ نہیں رہتے۔ 3۔ رپورٹر نے پوچھا کہ کیا مسافروں نے بس میں ٹکٹ خریدے ہیں، کیونکہ بغیر ٹکٹ والے لوگ بالکل بھی بس میں سوار نہیں ہو سکتے۔ ۴. میڈیا اس بات کی تشہیر کرتا ہے کہ لاٹری جیت سکتی ہے، کیونکہ میڈیا ایسے لوگوں کو فعال طور پر فروغ نہیں دے گا جو لاٹری نہیں جیتتے ہیں۔
مندرجہ بالا مثال میں ، ہم دیکھ سکتے ہیں کہ جو معلومات عام طور پر لوگ وصول کرتے ہیں وہ اصل میں فلٹر ہوتی ہے ، جس سے بڑی تعداد میں ڈیٹا یا نمونے کو انتخابی طور پر نظرانداز کیا جاتا ہے ، اور اس کا نتیجہ یہ ہوتا ہے کہ بقا کے تعصب پر مبنی نتائج حقیقی وقت سے انحراف کر چکے ہیں۔ لہذا مقداری تجارت میں ، ہمیں اس بات پر بھی توجہ دینے کی ضرورت ہے کہ آیا بیک ٹیسٹ کے نتائج قسمت کا حصہ ہیں۔ بہت سے معاملات میں بیک ٹیسٹ کے نتائج پورے بیک ٹیسٹ میں بہترین کارکردگی کا مظاہرہ کرسکتے ہیں۔ مندرجہ ذیل اعداد و شمار پر توجہ دیں:
بائیں طرف کی تصویر ایک بہت اچھی تجارتی حکمت عملی ہے۔ دارالحکومت کا منحنی خطوط اچھا ہے ، اور کوئی اہم واپسی نہیں ہے ، اور مستحکم منافع کی واپسی حاصل کی جاسکتی ہے۔ لیکن دائیں طرف کی تصویر کو دیکھیں۔ یہ سینکڑوں بیک ٹیسٹ ٹرانزیکشنز میں سے صرف ایک بہترین ہے۔ دوسری طرف ، جب ہم مالیاتی مارکیٹ کو دیکھتے ہیں تو ، ہمیشہ زیادہ ستارے اور کم لمبی عمر کے ستارے ہوتے ہیں۔ اگر تاجروں کی حکمت عملی مارکیٹ کی صورتحال کے مطابق ہے تو ، پھر مارکیٹ ہر سال ستاروں کا ایک بیچ تشکیل دے سکتی ہے ، لیکن لمبی عمر کے ستاروں کو دیکھنا مشکل ہے جو لگاتار تین سال سے زیادہ مستحکم منافع کما سکتے ہیں۔
جب تک کہ آپ کسی آرڈر کے منتظر نہ ہوں ، تب تک آپ کے پاس تجارت کرتے وقت سلائیڈنگ قیمت ہوسکتی ہے۔ فعال تجارت کے ساتھ مختلف حالتوں میں ، بولی کی قیمت اور پوچھنے کی قیمت عام طور پر ایک نقطہ پر مختلف ہوتی ہے۔ غیر فعال تجارت کے ساتھ مختلف حالتوں میں ، فرق زیادہ ہوسکتا ہے۔ جب بھی آپ کوئی معاہدہ بند کرنے کا اقدام کرنا چاہتے ہیں تو ، آپ کو کم از کم ایک نقطہ فرق کی ضرورت ہوتی ہے ، یا اس سے بھی زیادہ۔ تاہم ، بیک ٹیسٹ میں ، ہمیں لین دین کے مسئلے پر غور کرنے کی ضرورت نہیں ہے ، جب تک کہ کوئی سگنل موجود ہے ، ہم تجارت کرسکتے ہیں ، لہذا حقیقی تجارتی ماحول کی نقالی کرنے کے ل we ، ہمیں کم از کم ایک سلائیڈنگ قیمت شامل کرنا ہوگی۔
خاص طور پر اس حکمت عملی کے ل that جو زیادہ کثرت سے تجارت کی جاتی ہے ، اگر حکمت عملی کو بیک ٹسٹ کرتے وقت سلائیڈنگ قیمت شامل نہیں کی جاتی ہے تو ، دارالحکومت کا منحنی خطوط ہمیشہ اوپر کی طرف جھک جائے گا ، اور ایک بار جب معقول سلائیڈنگ قیمت شامل کردی جاتی ہے تو ، یہ فوری طور پر نقصان میں بدل جائے گا۔ اس کے علاوہ ، یہ رجحان نہ صرف نقطہ فرق کی وجہ سے ہوتا ہے ، بلکہ حقیقی تجارتی ماحول میں بھی غور کرنے کی ضرورت ہے: نیٹ ورک کی تاخیر ، سافٹ ویئر اور ہارڈ ویئر سسٹم ، سرور کا جواب اور دیگر امور۔
ایک ہی حکمت عملی موثر اور غیر موثر منڈیوں میں بالکل مختلف ہوگی ، یہاں تک کہ اس کے برعکس۔ مثال کے طور پر ، غیر موثر منڈیوں جیسے ملکی اسٹاک مارکیٹوں ، خام مال کے فیوچر ، اور غیر ملکی ڈیجیٹل کرنسیوں میں ، تجارتی حجم کی چھوٹی سی بنیاد کی وجہ سے ، اعلی تعدد کی حکمت عملی کی گنجائش خود بہت بڑی نہیں ہے ، اور زیادہ لوگوں کے لئے کوئی منافع کی گنجائش نہیں ہے ، اور یہاں تک کہ حکمت عملی جو اصل میں منافع بخش تھی وہ نقصان میں بدل گئی ہے۔ لیکن موثر غیر ملکی کرنسی مارکیٹ میں ، یہ بہت ساری مختلف اقسام کی اعلی تعدد کی حکمت عملیوں کو ایڈجسٹ کرسکتی ہے۔
مندرجہ بالا وہ مسائل اور خطرات ہیں جو حکمت عملیوں کی ترقی اور استعمال میں پیش آسکتے ہیں۔ ایک تجربہ کار تجارتی نظام ڈویلپر کے ل back ، بیک ٹیسٹنگ ضروری ہے۔ کیونکہ یہ آپ کو بتا سکتا ہے کہ کیا کسی اسٹریٹجک آئیڈیا کی تاریخی لین دین میں تصدیق کی جاسکتی ہے۔ لیکن بہت بار ، بیک ٹیسٹنگ کا مطلب یہ نہیں ہے کہ یہ مستقبل میں منافع بخش ہوگا۔ کیونکہ بیک ٹیسٹ میں بہت سارے خطرات ہیں ، آپ کچھ سبق کی ادائیگی کے بغیر نہیں سمجھ پائیں گے۔ یہ کورس آپ کو کم از کم بہت سے مقداری راستے اور خطرات سے بچنے میں مدد کرسکتا ہے۔
یہاں تک کہ لیورمور نے آخر کار آہ بھری: رجحان کے بارے میں کوئی قابل ذکر بات نہیں ہے۔ ہمیشہ بہت سارے لوگ ہوتے ہیں جو بیل مارکیٹ میں تیزی سے بڑھتے ہیں اور ریچھ مارکیٹ میں bearish ہوتے ہیں۔ لیکن وہ ہمیشہ مارکیٹ کے ساتھ سودے بازی میں اچھے ہوتے ہیں ، سب سے کم نقطہ پر خریدنے اور سب سے زیادہ نقطہ پر فروخت کرنے کی کوشش کرتے ہیں۔ پرانے ترکی کی طرح ، یہ وہ لوگ ہیں جو مارکیٹ کو دیکھتے ہیں اور اپنی پوزیشنوں کو برقرار رکھتے ہیں جو واقعی میں ایک بڑی دولت کماتے ہیں ، جو سیکھنا بھی سب سے مشکل ہے۔ اس کا سامنا نہ صرف ہدف اور وقت کا انتخاب ہے ، بلکہ اس سے بھی زیادہ اہم سوال کا سامنا کرنا پڑتا ہے: ہمیں کتنی پوزیشن (خطرے) رکھنا چاہئے (ریچھ) ؟
تمام ناکام تاجروں میں یکطرفہ سوچ ہوتی ہے۔ جب تجارت کرتے ہیں تو لالچی لوگ خطرات کے بجائے صرف منافع دیکھتے ہیں ، جبکہ شرمیلی لوگ منافع کے بجائے صرف خطرات دیکھتے ہیں۔ لالچی اور شرمیلی لوگ بڑھتے وقت خطرات کو بھول جاتے ہیں ، اور گرتے وقت منافع کو بھول جاتے ہیں۔ تاہم ، کامیاب تاجر خطرات اور منافع دونوں پر غور کریں گے ، یعنی ، وہ ہر ڈالر کے لئے کئی ڈالر کا خطرہ برداشت کریں گے۔ پھر واپسی اور خطرہ کی پیمائش کرنے کا انڈیکس واپسی کے خطرے کا تناسب ہے۔
بہت سے لوگوں کو معلوم ہے کہ خطرہ اتنا ہی بڑا ہے جتنا منافع ، یعنی منافع خطرہ کے متناسب ہے۔ کچھ لوگوں کے خیال میں ، منافع اور خطرہ کے مابین تعلق مندرجہ ذیل ہونا چاہئے: افقی محور خطرہ کا فیصد ہے ، اور عمودی محور منافع کا فیصد ہے۔
لیکن اصل لین دین میں ، واپسی اور خطرہ ایک لائن کے دو نکات کی طرح آسان ہونے سے بہت دور ہیں ، کم از کم یہ ہمیشہ لکیری طور پر نہیں چلتا ہے۔ اصل خطرہ زیادہ سے زیادہ نقصان کی رقم ہے جو متوقع واپسی کے ساتھ لیا جاسکتا ہے ، یا جسے ہم زیادہ سے زیادہ اتار چڑھاؤ کہتے ہیں۔ اگرچہ بعض اوقات زیادہ سے زیادہ فلوٹنگ نقصان ہمیشہ تجارت کے نتائج کے لحاظ سے اختتامی نقصان کے برابر نہیں ہوتا ہے ، لیکن زیادہ سے زیادہ فلوٹنگ نقصان حقیقی ہے۔
اس سے ، ہم یہ جان سکتے ہیں کہ اوپر کے گراف میں منافع کا تناسب خطرہ کی اصل کارکردگی نہیں ہے۔ حقیقی تجارتی ماحول میں منافع کا تناسب خطرہ کے برابر ہونا چاہئے جیسا کہ نیچے دیئے گئے چارٹ میں ہے۔
آئیے اوپر دیئے گئے چارٹ کو دیکھیں۔ پیلے رنگ کا منحنی خطوط مختلف خطرات میں خالص مالیت کے اتار چڑھاؤ کو ظاہر کرتا ہے۔ متوقع منافع میں توسیع کے ساتھ ، خطرات بھی بتدریج بڑھ رہے ہیں۔ اگر ہم دیوالیہ پن کو 0.5 پر مقرر کرتے ہیں ، یعنی ، زیادہ سے زیادہ نقصان 50٪ تک پہنچ جاتا ہے ، تو یہ ایک ناکام تجارتی حکمت عملی ہے۔ اگرچہ حکمت عملی کی حتمی واپسی نتیجہ سے مثبت ہے ، لیکن یہ پہلے ہی وسط میں دیوالیہ ہوچکی ہے۔
یہاں تک کہ اگر آپ کی حکمت عملی مثبت ہے تو ، یہ غلط پوزیشن مینجمنٹ کے تحت معاوضے ہوں گے۔ لہذا اس نقطہ نظر سے ، خریدنے اور فروخت کرنے کی کتنی مقدار خریدنے اور فروخت کرنے کے وقت سے زیادہ اہم ہے۔ پوزیشن کا سائنسی طور پر انتظام کرنا مالی لین دین میں ایک بنیادی مسئلہ بن گیا ہے۔ لہذا اس مسئلے کو حل کرنے کی کوشش کرنے سے پہلے ، آئیے دیکھتے ہیں کہ جوئے میں سائنسی طور پر شرط لگانے کا طریقہ۔
آئیے ایک مثال کے طور پر سکہ پھینکنے کو لیتے ہیں۔ فرض کریں کہ سکہ کے دونوں اطراف برابر وزن رکھتے ہیں۔ اگر 2 یوآن کا ہیڈ منافع اور 1 یوآن کا دم نقصان ہے تو ، یہ واضح ہے کہ یہ ایک مثبت توقعات کا کھیل ہے۔ جیت کی شرح 50٪ اور نقصان 2 ہے۔ یہاں سوال آتا ہے: اب جب آپ کے پاس 100 یوآن ہیں ، تو آپ شرط کو کیسے دہرا سکتے ہیں تاکہ 100 یوآن تیز ترین رفتار سے 1 ملین یوآن تک پہنچ سکے۔
اگر ہم غور سے نہ سوچیں تو ہم سوچیں گے کہ چونکہ ہر شرط کی واپسی 50٪ * 2-50٪ * 1 ہے ، یعنی 50٪ ، پھر زیادہ سے زیادہ واپسی کو تیزی سے حاصل کرنے کے ل we ، ہمیں ہر شرط میں زیادہ سے زیادہ سرمایہ لگانا چاہئے۔ یہ شرط 100٪ ہونی چاہئے۔
تاہم ، یہ واضح ہے کہ جوئے کے ہر کھیل میں اصل رقم کا 100٪ سرمایہ لگانا غیر معقول ہے ، کیونکہ جب تک آپ ایک بار اصل رقم کھو دیتے ہیں ، یہ ضائع ہوجائے گا ، اگرچہ یہ بہت غیر متوقع ہے۔ کیونکہ جب تک آپ کافی بار جوا کھیلتے ہیں ، پیسہ کھونا یقینی طور پر ہوگا۔
کوئی پوچھ سکتا ہے ، چونکہ 100 bet شرط لگانا غیر معقول ہے ، تو 90 or یا کم شرط لگانا کیسا ہے؟ در حقیقت ، اس مسئلے کو حل کرنے کے ل we ، ہم جوئے کے کھیل کا نقلی تجربہ کرسکتے ہیں اور دیکھ سکتے ہیں کہ ہر شرط کا نتیجہ کیسا ہے۔ جیسا کہ مندرجہ ذیل چارٹ میں دکھایا گیا ہے:
چارٹ سے ہم دیکھ سکتے ہیں کہ جب ہم ایک ہی جوا میں پوزیشن کو 90٪ ، 80٪ ، 70٪ ، 60٪ اور 50٪ سے بتدریج کم کرتے ہیں تو نتائج بالکل مختلف ہوتے ہیں۔ محتاط دوستوں نے شاید محسوس کیا ہوگا کہ پوزیشن کی بتدریج کمی کے ساتھ ، حتمی سرمایہ بتدریج بڑھ رہا ہے۔
پھر کچھ لوگ پوچھ سکتے ہیں کہ ہر بار شرط جتنی چھوٹی ہوتی ہے ، اتنا ہی بہتر ہوتا ہے ، جیسے 10٪۔ ہر شرط تناسب کا حساب لگانا ناممکن ہے۔ یہ مشہور کیلی معیار کے ذریعہ حل کرنے والا مسئلہ ہے۔ اعدادوشمار میں ، کیلی معیار بار بار شرط لگانے کی مثبت توقع کے ساتھ کسی حکمت عملی کی طویل مدتی شرح نمو کو زیادہ سے زیادہ کرسکتا ہے ، اور یہ ہر شرط میں بہترین شرط تناسب کا حساب کرسکتا ہے۔
اس کے علاوہ ، یہ فرض کرتے ہوئے کہ پرنسپل اور شرط کو لامحدود طور پر تقسیم کیا جاسکتا ہے ، کیلی معیار کا استعمال کرتے ہوئے کسی بھی شرط میں دیوالیہ ہونا ناممکن ہے۔ خاص طور پر مالی لین دین کے عملی استعمال میں ، یہ حملہ اور دفاع دونوں کے ساتھ پوزیشن مینجمنٹ کی حکمت عملی ہے۔ آئیے دیکھتے ہیں کہ کیلی معیار کا حساب کس طرح کیا جاتا ہے ، اور مندرجہ ذیل شکل دیکھیں:
اس کے بعد ہم اس سبق میں کیلی معیار کے مطابق جوئے کی مثال کا حساب لگاسکتے ہیں۔ 100 یوآن کا ابتدائی سرمائے شرط تناسب کا استعمال کرتے ہوئے تیز ترین رفتار سے 1 ملین یوآن تک پہنچ سکتا ہے جب جیتنے کا تناسب 50٪ اور مشکلات 2 ہے۔ کیلی معیار میں ، حساب کتاب کا عمل مندرجہ ذیل ہے:
(0.5*(2+1) -1)/2=0.25
50 فیصد کی جیت کی شرح 0.5 ہے۔ مشکلات کو 2 جمع 1 سے ضرب کریں ، پھر 1 کو گھٹائیں ، اور پھر 2 سے تقسیم کریں۔ حساب کتاب کا نتیجہ 0.25 ہے۔ یعنی ، ہر شرط میں ، 25٪ اصل کا استعمال کرتے ہوئے ، آپ تیز ترین رفتار سے 1 ملین یوآن تک پہنچ سکتے ہیں۔ ہم حساب کتاب کے نتائج کے مطابق دستی طور پر اس کا تجزیہ کرسکتے ہیں کہ آیا یہ درست ہے۔
مندرجہ بالا اعداد و شمار دستی تخروپن کا نتیجہ ہے۔ براہ کرم آخری سطر دیکھیں۔ اسی شرط میں ، 100 سے زیادہ راؤنڈ کے بعد ، 25٪ پوزیشنوں نے پہلے 1 ملین یوآن تک پہنچے۔ 90 ، 80 ، 70٪ اور 60٪ پوزیشنوں کا نتیجہ منفی ہے ، جس سے پتہ چلتا ہے کہ مثبت توقعات کی تجارتی حکمت عملی بھی غلط پوزیشن مینجمنٹ کے تحت دیوالیہ ہوجائے گی۔
ہم یہ بھی دیکھ سکتے ہیں کہ 50٪ پوزیشنیں آخر میں ہار یا جیت نہیں پائیں گی ، جو بڑی تعداد کے قانون کے نتیجے کے مطابق بھی ہے۔ مسئلے کو مزید واضح کرنے کے لئے ، دستی نقالی میں 10٪ کی پوزیشن بھی شامل کی گئی تھی۔ اگرچہ حتمی نتیجہ مثبت واپسی تھا ، لیکن اثر 25٪ کی پوزیشن سے کئی درجے بدتر تھا۔
آپ کیلی معیار کی طاقت دیکھ سکتے ہیں۔ اگر آپ اصل درخواست میں بنیادی پوزیشن کا 10٪ منتخب کرتے ہیں تو ، آپ کا بنیادی 100 سے زیادہ شرطوں میں 30،000 سے زیادہ ہوجائے گا۔ اگرچہ واپسی بڑی ہے ، 25٪ بنیادی پوزیشن کے مقابلے میں ، یہ کوئی منافع کے برابر ہے۔ یہ علم کی طاقت ہے۔
اگر آپ زندگی میں کیلی معیار سے منافع کمانا چاہتے ہیں تو ، آپ کو کیلی معیار کی درخواست کی شرائط کو پورا کرنے کی ضرورت ہے۔ اس میں کوئی شک نہیں ہے کہ یہ شرط مالیاتی مارکیٹ سے آنا چاہئے۔ خاص طور پر مقداری تجارت میں ، ہم تاریخی ڈیٹا بیک ٹیسٹنگ کے ذریعہ متعلقہ جیتنے والے تناسب اور مشکلات کا تخمینہ لگاسکتے ہیں۔
یقینا ، مالی لین دین میں کیلی معیار کا عملی اطلاق اتنا آسان نہیں ہوسکتا ہے ، اور بہت ساری تفصیلات ہیں جن سے نمٹا جانا ہے ، جیسے لیوریج لین دین میں سرمایہ کی لاگت ، حقیقی لین دین میں سرمایہ اور پوزیشن کو وائرلیس طور پر تقسیم نہیں کیا جاسکتا ہے ، اور لین دین میں جیتنے کا تناسب اور نقصان کا تناسب متحرک طور پر بدل رہا ہے ، اور اسی طرح۔ بہر حال ، کیلی معیار ہمیں دکھاتا ہے کہ پوزیشن مینجمنٹ کا بہترین طریقہ کیسے قائم کیا جائے۔