ہائی فریکوئنسی بیک ٹسٹنگ سسٹم جو ٹرانزیکشن کے ذریعہ ٹرانزیکشن پر مبنی ہے اور K لائن بیک ٹسٹنگ کے نقائص

مصنف:لیدیہ, تخلیق: 2022-11-30 12:38:50, تازہ کاری: 2023-09-11 20:01:01

img

ہائی فریکوئنسی بیک ٹسٹنگ سسٹم جو ٹرانزیکشن کے ذریعہ ٹرانزیکشن پر مبنی ہے اور K لائن بیک ٹسٹنگ کے نقائص

میں نے مضمون میں بیک ٹیسٹنگ انجن جاری کیا بائننس فیوچر کی ملٹی کرنسی ہیجنگ حکمت عملی پر مطالعہ (https://www.fmz.com/digest-topic/5584) اور پہلی رپورٹ ایک گھنٹے کی لائن بیک ٹسٹنگ پر مبنی ہے ، جو حکمت عملی کی تاثیر کی تصدیق کرتی ہے۔ تاہم ، حقیقت کے طور پر ، عوامی حکمت عملی کا نیند کا وقت 1s ہے ، جو ایک نسبتا high اعلی تعدد کی حکمت عملی ہے۔ ظاہر ہے کہ ایک گھنٹے کی لائن بیک ٹسٹنگ کا استعمال کرکے درست نتائج حاصل کرنا ناممکن ہے۔ بعد میں ، منٹ لائن بیک ٹسٹنگ کے نتائج شامل کیے گئے (https://www.fmz.com/digest-topic/5621اس کے نتیجے میں ، بیک ٹیسٹنگ کی واپسی میں بہتری آئی ہے ، لیکن اب بھی یہ طے کرنا ناممکن ہے کہ دوسرے درجے کے معاملے میں کون سے پیرامیٹرز استعمال کیے جائیں ، اور پوری حکمت عملی کی تفہیم بہت واضح نہیں ہے۔ اس کی بنیادی وجہ K لائن پر مبنی بیک ٹیسٹنگ کے اہم نقائص ہیں۔

K لائن بیک ٹسٹنگ پر مبنی مسائل

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

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

تصور کریں کہ دو اقسام کے ثالثی کے لئے منٹ لائن کا استعمال کریں۔ ان کے درمیان فرق عام طور پر 10 یوآن ہوتا ہے۔ اب یہ معلوم ہوتا ہے کہ 10: 01 پر ، معاہدہ اے کی اختتامی قیمت 100 یوآن ہے ، معاہدہ بی کی اختتامی قیمت 112 یوآن ہے ، اور فرق 12 یوآن ہے۔ لہذا حکمت عملی ہیجنگ شروع ہوجاتی ہے۔ ایک خاص وقت پر ، فرق واپس آجاتا ہے ، اور حکمت عملی 2 یوآن واپسی کے منافع حاصل کرتی ہے۔

تاہم ، اصل صورتحال 10:00:45 پر ہوسکتی ہے ، معاہدہ A نے 100 یوآن کا لین دین تیار کیا ، اور پھر کوئی لین دین نہیں ہوا۔ معاہدہ B نے 10:00:58 پر 112 یوآن کا لین دین تیار کیا۔ 10:01 پر ، دونوں قیمتیں موجود نہیں تھیں۔ اس وقت افتتاحی قیمت کیا تھی؟ اور ہیجنگ کتنا فرق حاصل کرسکتی ہے؟ ہم نہیں جانتے۔ ایک ممکنہ صورتحال یہ ہے کہ 10:00:58 پر ، معاہدہ A کا ایک خریدنے اور فروخت کرنے کا رجحان 101.9-102.1 ہے ، اور 2 یوآن کا پھیلاؤ بالکل نہیں ہے ، جو ہماری حکمت عملی کی اصلاح کو بہت گمراہ کرے گا۔

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

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

ریئل ٹائم گہرائی اور ٹک پر مبنی بیک ٹیسٹنگ

FMZ حقیقی بوٹ کی سطح بیک ٹیسٹنگ فراہم کرتا ہے، جو حقیقی تاریخی 20 سطح کی گہرائی، حقیقی وقت سیکنڈ ٹک، ٹرانزیکشن کی طرف سے ٹرانزیکشن اور دیگر اعداد و شمار حاصل کر سکتے ہیں، اور اس کی بنیاد پر یہ حقیقی بوٹ پلے بیک فنکشن بنا دیا ہے (https://www.fmz.com/m/databaseاس قسم کے بیک ٹیسٹ کی پیمائش میں بڑی مقدار میں ڈیٹا اور سست رفتار ہوتی ہے ، جس کا استعمال صرف دو دن کے لئے کیا جاسکتا ہے۔ نسبتا high اعلی تعدد والی حکمت عملیوں کے ل or یا سخت وقت کے فیصلے کی ضرورت ہوتی ہے ، اصلی بوٹ بیک ٹیسٹنگ ضروری ہے۔ ایف ایم زیڈ کے ذریعہ جمع کردہ تجارتی جوڑے اور وقت بہت لمبے نہیں ہیں ، لیکن تاریخی اعداد و شمار کے 70 بلین سے زیادہ ٹکڑے موجود ہیں۔ موجودہ مماثلت کا طریقہ یہ ہے کہ اگر خرید آرڈر فروخت کے ایک آرڈر سے بڑا ہے تو ، اس کی مقدار کو دیکھے بغیر فوری طور پر مکمل طور پر مماثلت ہوجائے گی ، اور اگر خرید آرڈر فروخت کے ایک آرڈر سے کم ہے تو ، یہ مماثلت کی قطار میں داخل ہوجائے گا۔ یہ بیک ٹیسٹنگ میکانزم کے پہلے دو مسائل حل کرتا ہے K- لائن بیک ٹیسٹنگ ، لیکن یہ اب بھی آخری مسئلہ حل نہیں کرسکتا ہے۔ اور چونکہ اعداد و شمار کی مقدار بہت زیادہ ہے ، بیک ٹیسٹ کی رفتار اور وقت کی حد محدود ہے۔

img img

ٹرانزیکشن کے ذریعہ ٹرانزیکشن آرڈر کے بہاؤ پر مبنی بیک ٹیسٹنگ میکانزم

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

میں نے گزشتہ 5 دنوں کے ٹرانزیکشن کے ذریعے ٹرانزیکشن ڈاؤن لوڈ کیا بائننس ایکس ٹی زیڈ دائمی معاہدہ (ڈاؤن لوڈ کا پتہ:https://www.fmz.com/upload/asset/1ff487b007e1a848ead.csvایک کم مقبول قسم کے طور پر ، 213،000 اعداد و شمار ہیں۔ آئیے اعداد و شمار کی ساخت پر ایک نظر ڈالتے ہیں:

[['XTZ', 1590981301905, 2.905, 0.4, 'False\n'],
 ['XTZ', 1590981303044, 2.903, 3.6, 'True\n'],
 ['XTZ', 1590981303309, 2.903, 3.7, 'True\n'],
 ['XTZ', 1590981303738, 2.903, 238.1, 'True\n'],
 ['XTZ', 1590981303892, 2.904, 0.1, 'False\n'],
 ['XTZ', 1590981305250, 2.904, 0.1, 'False\n'],
 ['XTZ', 1590981305643, 2.903, 197.3, 'True\n'],

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

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

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

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

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

میچ میکنگ کوڈ

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

    symbol = 'XTZ'
    loop_time = 0
    intervel = 1000 #The sleep time of the strategy is 1000ms
    init_price = data[0][2] #Initial price
    e = Exchange([symbol],initial_balance=1000000,maker_fee=maker_fee,taker_fee=taker_fee,log='') #Initialize the exchange
    depth = {'ask':data[0][2], 'bid':data[0][2]} #depth
    order = {'buy':{'price':0,'amount':0,'maker':False,'priority':False,'id':0},
             'sell':{'price':0,'amount':0,'maker':False,'priority':False,'id':0}} #Order
    for tick in data:
        price = int(tick[2]/tick_sizes[symbol])*tick_sizes[symbol] #Transaction price
        trade_amount = tick[3] #Number of transactions
        time_stamp = tick[1] #Transaction timestamp
        if tick[4] == 'False\n':
            depth['ask'] = price
        else:
            depth['bid'] = price
        
        if depth['bid'] < order['buy']['price']:
            order['buy']['priority'] = True
        if depth['ask'] > order['sell']['price']:
            order['sell']['priority'] = True
        if price > order['buy']['price']:
            order['buy']['maker'] = True
        if price < order['sell']['price']:
            order['sell']['maker'] = True
        
        #Order network delay can also be used as one of the matching conditions, which is not considered here
        cond1 = order['buy']['priority'] and order['buy']['price'] >= price and order['buy']['amount'] > 0
        cond2 = not order['buy']['priority'] and order['buy']['price'] > price and order['buy']['amount'] > 0
        cond3 = order['sell']['priority'] and order['sell']['price'] <= price and order['sell']['amount'] > 0
        cond4 = not order['sell']['priority'] and order['sell']['price'] < price and order['sell']['amount'] > 0

        if cond1 or cond2:
            buy_price = order['buy']['price'] if order['buy']['maker'] else price
            e.Buy(symbol, buy_price, min(order['buy']['amount'],trade_amount), order['buy']['id'], order['buy']['maker'])
            order['buy']['amount'] -= min(order['buy']['amount'],trade_amount)
            e.Update(time_stamp,[symbol],{symbol:price})
        if cond3 or cond4:
            sell_price = order['sell']['price'] if order['sell']['maker'] else price
            e.Sell(symbol, sell_price, min(order['sell']['amount'],trade_amount), order['sell']['id'], order['sell']['maker'])
            order['sell']['amount'] -= min(order['sell']['amount'],trade_amount)
            e.Update(time_stamp,[symbol],{symbol:price})

        if time_stamp - loop_time > intervel:
            order = get_order(e,depth,order) #Trading logic, not given here
            loop_time += int((time_stamp - loop_time)/intervel)*intervel

کچھ تفصیلات کو نوٹ کیا جانا چاہئے:

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

نیٹ ورک کی حکمت عملیوں کا بیک ٹسٹنگ

آخر میں ، ہم اصل بیک ٹیسٹنگ مرحلے تک پہنچ جاتے ہیں۔ یہاں ، ہم ایک کلاسیکی گرڈ حکمت عملی کا بیک ٹیسٹ کرنے جارہے ہیں تاکہ یہ معلوم کیا جاسکے کہ آیا اس نے متوقع اثر کو حاصل کیا ہے۔ حکمت عملی کا اصول یہ ہے کہ ہر بار جب قیمت میں 1٪ اضافہ ہوتا ہے تو ، ہم مختصر پوزیشن کے احکامات کی ایک خاص قدر رکھیں گے (دوسری صورت میں ، ہم لمبی پوزیشن کے احکامات رکھیں گے) ، اور ہم خرید آرڈر اور فروخت آرڈر کا حساب لگائیں گے اور انہیں پہلے سے زیر التوا رکھیں گے۔ کوڈ جاری نہیں کیا جائے گا۔ تمام کوڈز کو فنکشن میں شامل کریں۔Grid ('XTZ ', 100,0.31000, maker_fee=-0.00002, taker_fee=0.0003)پیرامیٹرز یہ ہیں: ٹریڈنگ جوڑی، ہولڈنگ ویلیو جس کی قیمت میں 1 فیصد کا انحراف ہے، آرڈر ڈینسٹی 0.3 فیصد، سلائیو انٹراول منٹ، زیر التواء آرڈر کمیشن اور ٹیکر کمیشن۔

ایکس ٹی زیڈ مارکیٹ گزشتہ 5 دنوں میں صدمے میں رہی ہے، جو کہ گرڈ کی حکمت عملی کے لیے بہت موزوں ہے۔

img

ہم سب سے پہلے واپسی پر مختلف پوزیشنوں کے اثرات کا بیک ٹیسٹ کریں گے۔ روایتی بیک ٹیسٹنگ میکانزم کے ذریعہ ماپا جانے والا منافع یقینی طور پر پوزیشنوں کے اضافے کے ساتھ متناسب طور پر بڑھ جائے گا۔

e1 = Grid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e1.account['USDT'])
e2 = Grid('XTZ',1000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e2.account['USDT'])
e3 = Grid('XTZ',10000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e3.account['USDT'])
e4 = Grid('XTZ',100000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e4.account['USDT'])

مجموعی طور پر چار گروپوں کو پوزیشن ویلیوز 100، 1000، 10000 اور 100000 کے ساتھ بیک ٹسٹ کیا گیا تھا، اور بیک ٹسٹنگ کا کل وقت 1.3 سیکنڈ تھا۔ نتائج مندرجہ ذیل ہیں:

{'realised_profit': 28.470993031132966, 'margin': 0.7982662957624465, 'unrealised_profit': 0.0104554474048441, 'total': 10000028.481448, 'leverage': 0.0, 'fee': -0.3430967859046398, 'maker_fee': -0.36980249726699727, 'taker_fee': 0.026705711362357405}
{'realised_profit': 275.63148945320177, 'margin': 14.346335829979132, 'unrealised_profit': 4.4382117331794045e-14, 'total': 10000275.631489, 'leverage': 0.0, 'fee': -3.3102045933457784, 'maker_fee': -3.5800688964477048, 'taker_fee': 0.2698643031019274}
{'realised_profit': 2693.8701498889504, 'margin': 67.70120400534114, 'unrealised_profit': 0.5735269329348516, 'total': 10002694.443677, 'leverage': 0.0001, 'fee': -33.984021415250744, 'maker_fee': -34.879233866850974, 'taker_fee': 0.8952124516001403}
{'realised_profit': 22610.231198585603, 'margin': 983.3853688758861, 'unrealised_profit': -20.529965947304365, 'total': 10022589.701233, 'leverage': 0.002, 'fee': -200.87094000385412, 'maker_fee': -261.5849078470078, 'taker_fee': 60.71396784315319}

یہ دیکھا جاسکتا ہے کہ حتمی حاصل کردہ منافع بالترتیب پوزیشن ویلیو کا 28.4٪ ، 27.5٪ ، 26.9٪ اور 22.6٪ ہے۔ یہ بھی اصل صورتحال کے مطابق ہے۔ پوزیشن کی قدر جتنی زیادہ ہوگی ، آرڈر کی قدر اتنی ہی زیادہ ہوگی ، اور جزوی لین دین کا زیادہ امکان ہوگا۔ آرڈر کی رقم کے مقابلہ میں حتمی حاصل شدہ منافع چھوٹا ہوگا۔ ذیل میں دیئے گئے اعداد و شمار میں بالترتیب 100 اور 10000 کی پوزیشن ویلیو کے ساتھ نسبتا return واپسی کا موازنہ دکھایا گیا ہے:

img

ہم بیک ٹیسٹ کی واپسی پر مختلف پیرامیٹرز کے اثرات کو بھی بیک ٹیسٹ کرسکتے ہیں ، جیسے زیر التواء آرڈر کثافت ، نیند کا وقت اور کمیشن۔ مثال کے طور پر نیند کا وقت لیں ، اسے 100ms میں تبدیل کریں ، 1000ms کے نیند کے وقت سے موازنہ کریں ، اور واپسی کا مشاہدہ کریں۔ بیک ٹیسٹنگ کے نتائج مندرجہ ذیل ہیں:

{'realised_profit': 29.079440803790423, 'margin': 0.7982662957624695, 'unrealised_profit': 0.0104554474048441, 'total': 10000029.089896, 'leverage': 0.0, 'fee': -0.3703702128662524, 'maker_fee': -0.37938946377435134, 'taker_fee': 0.009019250908098965}

منافع میں تھوڑا سا اضافہ ہوا ہے۔ اس کی وجہ یہ ہے کہ حکمت عملی میں آرڈرز کا صرف ایک گروپ زیر التواء ہے ، اور کچھ آرڈرز اتار چڑھاؤ کی قیمت نہیں حاصل کرسکتے ہیں کیونکہ ان کے پاس تبدیل ہونے کا وقت نہیں ہے۔ کم نیند کا وقت اس مسئلے کو بہتر بناتا ہے۔ اس سے گرڈ حکمت عملی میں زیر التواء ملٹی گروپ آرڈرز کی اہمیت بھی ظاہر ہوتی ہے۔

خلاصہ

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


متعلقہ

مزید