Type/to search
3
Follow
1503
Followers
লেনদেন-বাই-বাণিজ্যের উপর ভিত্তি করে উচ্চ-ফ্রিকোয়েন্সি ব্যাকটেস্টিং সিস্টেম এবং কে-লাইন ব্যাকটেস্টিংয়ের ত্রুটিগুলি নিয়ে আলোচনা করা
HFT
Created 2020-06-04 16:48:02  Updated 2024-12-10 20:32:01
 7
 5593

img

আমি এখানে আছিবিনান্স শর্ট মাল্টি-কারেন্সি হেজিং স্ট্র্যাটেজি বেশি বিক্রি হওয়া এবং দীর্ঘ ওভারসেল্ডের জন্যএকই সময়ে, একটি ব্যাকটেস্টিং ইঞ্জিন প্রকাশিত হয়েছিল। প্রথম প্রতিবেদনটি এক ঘণ্টার কে-লাইন ব্যাকটেস্টের উপর ভিত্তি করে তৈরি করা হয়েছে, যা কৌশলটির কার্যকারিতা যাচাই করে। যাইহোক, পাবলিক কৌশলের প্রকৃত ঘুমের সময় হল 1 সেকেন্ড, যা একটি মোটামুটি উচ্চ-ফ্রিকোয়েন্সি কৌশল যা প্রতি ঘন্টায় K-লাইন ব্যাকটেস্টিং ব্যবহার করে সঠিক ফলাফল পাওয়া অসম্ভব। পরে যোগ করা হয়মিনিট লাইন ব্যাকটেস্টফলস্বরূপ, ব্যাকটেস্টিং আয় অনেক বেড়েছে, কিন্তু দ্বিতীয় স্তরের পরিস্থিতিতে কী কী প্যারামিটার ব্যবহার করা উচিত তা নির্ধারণ করা এখনও সম্ভব নয় এবং পুরো কৌশলটির বোঝা খুব স্পষ্ট নয়। প্রধান কারণ কে-লাইন-ভিত্তিক ব্যাকটেস্টিংয়ের গুরুত্বপূর্ণ অসুবিধাগুলি।

কে-লাইন ব্যাকটেস্টিং এর উপর ভিত্তি করে সমস্যা

প্রথমত, ঐতিহাসিক কে-লাইন কী? একটি কে-লাইন ডেটাতে উচ্চ ওপেনিং এবং লো ক্লোজিংয়ের চারটি মূল্য, দুটি শুরুর সময় এবং ব্যবধানে ট্রেডিং ভলিউম থাকে। বেশিরভাগ পরিমাণগত প্ল্যাটফর্ম এবং ফ্রেমওয়ার্কগুলি কে-লাইন ব্যাকটেস্টিংয়ের উপর ভিত্তি করে এবং FMZ পরিমাণগত প্ল্যাটফর্মটি টিক-লেভেল ব্যাকটেস্টিংও প্রদান করে। কে-লাইন ব্যাকটেস্টিং খুব দ্রুত, এবং বেশিরভাগ ক্ষেত্রেই কোনও সমস্যা নেই, তবে এতে খুব গুরুতর ত্রুটিও রয়েছে, বিশেষ করে যখন বহু-বিচিত্র কৌশল এবং উচ্চ-ফ্রিকোয়েন্সি কৌশলগুলির ব্যাকটেস্টিং করা হয়, তখন সঠিক সিদ্ধান্তে আসা প্রায় অসম্ভব।

প্রথমটি হল সময়ের সমস্যা। কে-লাইনের সর্বোচ্চ এবং সর্বনিম্ন দামের সময় ডেটা দেওয়া হয় না, তাই এটি বিবেচনা করার কোনও প্রয়োজন নেই। তবে সবচেয়ে গুরুত্বপূর্ণ খোলার এবং বন্ধের দামগুলি খোলার থেকে শুরু হয় না এবং বন্ধের সময়। এমনকি কম জনপ্রিয় ট্রেডিং পণ্যের ক্ষেত্রেও, প্রায়শই দশ সেকেন্ডের বেশি কোনও ট্রেডিং হয় না। যখন আমরা বহু-পণ্য কৌশলের ব্যাকটেস্ট করি, তখন আমরা প্রায়শই ধরে নিই যে তাদের খোলার এবং বন্ধের দাম একই সাথে। এটি সমাপনী মূল্যের ব্যাকটেস্টিংয়ের ভিত্তিও।

দুই প্রকারের সালিশির ব্যাকটেস্ট করার জন্য মিনিট লাইন ব্যবহার করে কল্পনা করুন যে তাদের মধ্যে দামের পার্থক্য সাধারণত 10 ইউয়ান হয় এখন দেখা যাচ্ছে যে 10:01 এ চুক্তির শেষ মূল্য 100 এবং B এর সমাপ্তি মূল্য। 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-স্তরের গভীরতা, রিয়েল-টাইম সেকেন্ড-লেভেল টিক, লেনদেন-বাই-লেনদেন এবং অন্যান্য ডেটা পেতে পারে এবং এর উপর ভিত্তি করে আমরা তৈরি করেছি।রিয়েল-টাইম প্লেব্যাক ফাংশন. ব্যাকটেস্টিং ডেটার পরিমাণ অত্যন্ত বেশি এবং গতি খুবই ধীর, সাধারণত মাত্র দুই দিন। তুলনামূলকভাবে উচ্চ-ফ্রিকোয়েন্সি কৌশল বা কঠোর সময় বিচারের প্রয়োজন এমন কৌশলগুলির জন্য, রিয়েল-টাইম ব্যাকটেস্টিং প্রয়োজন। FMZ দ্বারা সংগৃহীত লেনদেন জোড়া এবং সময়কাল দীর্ঘ নয়, তবে 70 বিলিয়নেরও বেশি ঐতিহাসিক তথ্য রয়েছে। বর্তমান ম্যাচিং মেকানিজম হল যদি ক্রয় অর্ডার বিক্রয় অর্ডারের চেয়ে বেশি হয়, তাহলে পরিমাণ যাই হোক না কেন, তা অবিলম্বে সম্পূর্ণরূপে মিলিত হবে; যদি এটি বিক্রয় অর্ডারের চেয়ে কম হয়, তাহলে এটি ম্যাচিং সারিতে প্রবেশ করবে। এই ধরনের ব্যাকটেস্টিং প্রক্রিয়া K-লাইন ব্যাকটেস্টিংয়ের প্রথম দুটি সমস্যার সমাধান করে, কিন্তু এটি এখনও শেষ সমস্যাটি সমাধান করতে পারে না। এবং যেহেতু ডেটার পরিমাণ এত বেশি, ব্যাকটেস্টিংয়ের গতি এবং সময়সীমা সীমিত।

img

লেনদেন দ্বারা লেনদেন আদেশ প্রবাহের উপর ভিত্তি করে ব্যাকটেস্টিং প্রক্রিয়া

খুব কম কে-লাইন তথ্য আছে, এবং গভীরতা মিথ্যা হতে পারে তবে, এমন এক ধরনের ডেটা আছে যা বাজারের সত্যিকারের লেনদেনের ইচ্ছা এবং সবচেয়ে খাঁটি লেনদেনের ইতিহাসকে প্রতিফলিত করে—অর্থাৎ, লেনদেনের মাধ্যমে। এই নিবন্ধটি অর্ডার প্রবাহের উপর ভিত্তি করে একটি উচ্চ-ফ্রিকোয়েন্সি ব্যাকটেস্টিং সিস্টেমের প্রস্তাব করবে, যা বাস্তব-স্তরের ব্যাকটেস্টিংয়ের জন্য ডেটার পরিমাণকে ব্যাপকভাবে হ্রাস করবে এবং একটি নির্দিষ্ট পরিমাণে বাজারে ট্রেডিং ভলিউমের প্রভাবকে অনুকরণ করবে।

আমি গত 5 দিনে Binance XTZ চিরস্থায়ী চুক্তির লেনদেন ডাউনলোড করেছি (ডাউনলোড ঠিকানা: 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 #策略的休眠时间为1000ms init_price = data[0][2] #初始价格 e = Exchange([symbol],initial_balance=1000000,maker_fee=maker_fee,taker_fee=taker_fee,log='') #初始化交易所 depth = {'ask':data[0][2], 'bid':data[0][2]} #深度 order = {'buy':{'price':0,'amount':0,'maker':False,'priority':False,'id':0}, 'sell':{'price':0,'amount':0,'maker':False,'priority':False,'id':0}} #订单 for tick in data: price = int(tick[2]/tick_sizes[symbol])*tick_sizes[symbol] #成交价格 trade_amount = tick[3] #成交数量 time_stamp = tick[1] #成交时间戳 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 #订单网络延时也可以作为撮合条件之一,这里没考虑 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) #交易逻辑,这里未给出 loop_time += int((time_stamp - loop_time)/intervel)*intervel

উল্লেখ্য কয়েকটি বিবরণ আছে:

    1. যখন একটি নতুন লেনদেন হয়, আপনাকে প্রথমে অর্ডারের সাথে মেলাতে হবে এবং তারপরে সর্বশেষ মূল্যের উপর ভিত্তি করে অর্ডারটি স্থাপন করতে হবে।
    1. প্রতিটি অর্ডারের দুটি বৈশিষ্ট্য রয়েছে: নির্মাতা - এটি একটি নির্মাতা কিনা, অগ্রাধিকার - ম্যাচিং অগ্রাধিকার। উদাহরণস্বরূপ, যখন ক্রয় মূল্য জিজ্ঞাসা মূল্যের চেয়ে কম হয়, তখন এটি একটি নির্মাতা হিসাবে চিহ্নিত হয়, এবং যখন ক্রয়মূল্য ক্রয়মূল্যের চেয়ে বেশি হলে, এটি ক্রয় আদেশ হিসেবে চিহ্নিত হয়। অগ্রাধিকার মিল, অগ্রাধিকার নির্ধারণ করে যে দামটি বিড মূল্যের সমান কিনা, এবং নির্মাতা হ্যান্ডলিং ফি নির্ধারণ করে।
    1. অর্ডারের মেকার এবং অগ্রাধিকার আপডেট করা হয় যদি একটি বড় ক্রয় অর্ডার দেওয়া হয় যা বাজার মূল্যকে ছাড়িয়ে যায়, যখন একটি মূল্য বিড মূল্যের থেকে বেশি হয়, অবশিষ্ট ট্রেডিং ভলিউম মেকার হবে।
    1. কৌশলের হস্তক্ষেপ প্রয়োজনীয়, এটি বাজারের বিলম্বের প্রতিনিধিত্ব করতে পারে।

গ্রিড কৌশল ব্যাকটেস্টিং

অবশেষে, আমরা আসল ব্যাকটেস্টিং পর্যায়ে পৌঁছেছি। আমরা সবচেয়ে ক্লাসিক গ্রিড কৌশলগুলির মধ্যে একটির ব্যাকটেস্ট করব যাতে দেখা যায় যে এটি প্রত্যাশিত ফলাফল অর্জন করে কিনা। কৌশলটির নীতি হল, প্রতিবার দাম ১% বৃদ্ধি পেলে, আমরা একটি নির্দিষ্ট মূল্যের একটি সংক্ষিপ্ত অর্ডার ধরে রাখি (অথবা বিপরীতভাবে, একটি দীর্ঘ অর্ডার ধরে রাখি), ক্রয় এবং বিক্রয় অর্ডার গণনা করি এবং সেগুলি আগে থেকেই রাখি। কোডটি প্রকাশিত হয়নি। সমস্ত কোডকে এতে অন্তর্ভুক্ত করুনGrid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)ফাংশনে, প্যারামিটারগুলি হল: ট্রেডিং পেয়ার, হোল্ডিং ভ্যালুর 1% মূল্যের বিচ্যুতি, পেন্ডিং অর্ডার ডেনসিটি 0.3%, ডরম্যানসি ইন্টারভাল ms, পেন্ডিং অর্ডার হ্যান্ডলিং ফি এবং টেকার অর্ডার হ্যান্ডলিং ফি।

XTZ বাজার গত পাঁচ দিনে একটি অস্থির পর্যায়ে রয়েছে, যা গ্রিডের জন্য খুবই উপযুক্ত। 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 ছিল। ফলাফল নিম্নরূপ:

{'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 এবং 10,000 অবস্থানের মানের আপেক্ষিক আয়ের তুলনা:
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}

আয় কিছুটা বেড়েছে কারণ কিছু অর্ডারের ওঠানামা করা দামে প্রভাব পড়বে না কারণ সুপ্ত সময়ের হ্রাস এই সমস্যার উন্নতি করেছে। এটি একাধিক গ্রুপের অর্ডার ঝুলিয়ে রাখার জন্য গ্রিড কৌশলের গুরুত্বকেও ব্যাখ্যা করে।

সারসংক্ষেপ

এই নিবন্ধটি উদ্ভাবনীভাবে অর্ডার প্রবাহের উপর ভিত্তি করে একটি নতুন ব্যাকটেস্টিং সিস্টেমের প্রস্তাব করে, যা আংশিকভাবে মুলতুবি অর্ডার, অর্ডার নেওয়া, আংশিক লেনদেন, বিলম্ব ইত্যাদির মতো ম্যাচিং পরিস্থিতির অনুকরণ করতে পারে এবং উচ্চ-ফ্রিকোয়েন্সির জন্য কৌশলগত মূলধনের প্রভাবকে আংশিকভাবে প্রতিফলিত করে কৌশলগুলি হেজিং কৌশলগুলির জন্য গুরুত্বপূর্ণ রেফারেন্স মান রয়েছে উচ্চ-নির্ভুল ব্যাকটেস্টিং কৌশল প্যারামিটার অপ্টিমাইজেশানের দিক নির্দেশ করে। এটি দীর্ঘমেয়াদী বাস্তব অফার দ্বারা যাচাই করা হয়েছে। এবং ব্যাকটেস্টিংয়ের জন্য প্রয়োজনীয় ডেটার পরিমাণ আরও ভালভাবে নিয়ন্ত্রণ করা হয় এবং ব্যাকটেস্টিং গতিও খুব দ্রুত।

Related Recommendations
Comment
All comments (7)

    策略原理为价格每上涨1%

    多久时间上涨1%?

    6 years ago

    策略原理为价格每上涨1%

    多久时间上涨1%?

    6 years ago

    索引都上GB了。哎

    6 years ago

    这种回测方式还好,带深度的回测数据量太大了

    6 years ago

    这数据量得多大,网站受得了吗

    6 years ago

    比实盘级回测小很多了,看交易繁忙程度,一天1M-20M

    6 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)