এই প্রবন্ধটি ট্রেডিং কাঠামো শেখার জন্য একটি ভলিউম-বুস্টিং কৌশল প্রদর্শন করে, যা ঐতিহ্যবাহী আরবিট্রেজ বাজার তৈরির কৌশল থেকে মৌলিকভাবে আলাদা। এই কৌশলের মূল উদ্দেশ্য হল মূল্য পার্থক্য আরবিট্রেজের মাধ্যমে মুনাফা অর্জনের পরিবর্তে একই দামে ক্রয়-বিক্রয় করে ট্রেডিং ভলিউম বৃদ্ধি করা এবং বিনিময় রিবেট বা স্তর ছাড় পাওয়া।
এই প্রবন্ধে প্রদত্ত কোডটি শুধুমাত্র একটি রেফারেন্স ফ্রেমওয়ার্ক এবং এর কোনও রিয়েল-টাইম অপারেশন অভিজ্ঞতা নেই। এই প্রবন্ধে কৌশল বাস্তবায়ন শুধুমাত্র প্রযুক্তিগত শিক্ষা এবং গবেষণার উদ্দেশ্যে এবং প্রকৃত বাজার পরিবেশে সম্পূর্ণরূপে যাচাই করা হয়নি। পাঠকরা যখন এই প্রবন্ধের বিষয়বস্তু উল্লেখ করবেন, তখন তাদের অবশ্যই পর্যাপ্ত ব্যাকটেস্টিং যাচাইকরণ এবং ঝুঁকি মূল্যায়ন পরিচালনা করতে হবে এবং রিয়েল-টাইম ট্রেডিংয়ের জন্য এটি সরাসরি ব্যবহার করা উচিত নয়।
ডিজিটাল মুদ্রা বাজারে, বাজার তৈরির কৌশলগুলি কেবল বাজারের তরলতা উন্নত করার এবং লেনদেনকে উৎসাহিত করার একটি হাতিয়ার নয়, বরং অনেক পরিমাণগত ট্রেডিং কৌশলের একটি মূল উপাদানও। বাজার নির্মাতারা বিভিন্ন বাজার পরিবেশে ক্রয়-বিক্রয় কোট পোস্ট করে এবং তরলতা প্রদান করে মুনাফা অর্জন করে। পেশাদার বাজার নির্মাতাদের কোড বাস্তবায়ন প্রায়শই অত্যন্ত জটিল, যার মধ্যে উচ্চ-ফ্রিকোয়েন্সি বিলম্ব অপ্টিমাইজেশন, জটিল ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা এবং বহু-বিনিময় সালিসি ইত্যাদি উন্নত ফাংশন জড়িত। এবার, আমরা ব্রাশ-ভলিউম কাউন্টার-ট্রেডিং কৌশলের মৌলিক ধারণাগুলি এবং ইনভেনটর কোয়ান্টিটেটিভ (FMZ) প্ল্যাটফর্মে একটি সরলীকৃত শিক্ষণ কাঠামো কীভাবে বাস্তবায়ন করা যায় তা অধ্যয়ন করব।
এই প্রবন্ধের মূল অংশটি মূল লেখক জিনানের “বাজার তৈরির কৌশলের ধারণা এবং লেখার পদ্ধতি” থেকে নেওয়া হয়েছে। কিছু অংশ fmz প্ল্যাটফর্মে অপ্টিমাইজ এবং পুনরুত্পাদন করা হয়েছে। আজকের দৃষ্টিকোণ থেকে, কিছু লেখার পদ্ধতি পুরানো হতে পারে, তবে এটি এখনও সকলের জন্য কোড কাঠামো এবং কাউন্টার-ট্রেডিংয়ের মৌলিক ধারণাগুলি বোঝার জন্য অনুপ্রেরণাদায়ক:
বাজার তৈরির কৌশল বলতে বোঝায় ব্যবসায়ীরা (বাজার নির্মাতারা) একই সাথে বাজারে ক্রয় এবং বিক্রয় অর্ডার দেয়, যার ফলে বাজারের স্থিতিশীলতা বজায় রাখার জন্য তরলতা প্রদান করে। এই কৌশলটি কেবল বাজারের গভীরতা বজায় রাখতে সহায়তা করে না, বরং অন্যান্য ব্যবসায়ীদের জন্য প্রতিপক্ষও প্রদান করে। বিভিন্ন মূল্য পরিসরে ক্রয় এবং বিক্রয়ের উদ্ধৃতি প্রদান করে, বাজার নির্মাতারা মূল্যের ওঠানামা থেকে লাভ অর্জন করে।
ক্রিপ্টোকারেন্সি বাজারের জন্য বাজার নির্মাতাদের ভূমিকা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে কম ট্রেডিং ভলিউম এবং উচ্চ অস্থিরতা সহ বাজারে। তরলতা প্রদানের মাধ্যমে, বাজার নির্মাতারা বাজারের স্লিপেজ কমাতে সাহায্য করে এবং ব্যবসায়ীদের সহজে ট্রেডিং মূল্য প্রদান করে।
ঐতিহ্যবাহী বাজার তৈরির কৌশলের মূল নীতি হল তরলতা প্রদানের মাধ্যমে বিড-আস্ক স্প্রেড অর্জন করা। বাজার নির্মাতা কর্তৃক পোস্ট করা ক্রয় অর্ডারের মূল্য বিক্রয় অর্ডারের মূল্যের চেয়ে কম হয় এবং লেনদেনের স্প্রেডের মাধ্যমে লাভ পাওয়া যায়। উদাহরণস্বরূপ, যখন বাজারে স্পট মূল্য বৃদ্ধি পায়, তখন বাজার নির্মাতা উচ্চ মূল্যে বিক্রি করে এবং কম মূল্যে ক্রয় করে, স্প্রেড অর্জন করে। আয়ের প্রধান উৎসগুলির মধ্যে রয়েছে:
তবে, বাজার নির্মাতারাও বাজারের অস্থিরতার ঝুঁকির সম্মুখীন হন, বিশেষ করে ডিজিটাল মুদ্রা বাজারের অত্যন্ত অস্থির পরিবেশে। বাজারে তীব্র ওঠানামার কারণে বাজার নির্মাতাদের দ্বারা প্রদত্ত ক্রয়-বিক্রয় অর্ডারগুলি প্রকৃত মূল্য থেকে উল্লেখযোগ্যভাবে বিচ্যুত হতে পারে, যার ফলে ক্ষতি হতে পারে।
ক্রিপ্টোকারেন্সি বাজারে, বাজার নির্মাতারা সাধারণত বাজারের অবস্থা, ট্রেডিং ভলিউম, অস্থিরতা ইত্যাদির উপর ভিত্তি করে বিভিন্ন বাজার তৈরির কৌশল বেছে নেন। বাজার তৈরির সাধারণ ধরণের কৌশলগুলির মধ্যে রয়েছে:
প্যাসিভ বাজার তৈরির কৌশল: বাজার নির্মাতারা বাজারের গভীরতা, ঐতিহাসিক অস্থিরতা এবং অন্যান্য বিষয়ের উপর ভিত্তি করে ক্রয়-বিক্রয় অর্ডার দেয় এবং বাজার লেনদেনের জন্য অপেক্ষা করে। এই কৌশলটি কম ফ্রিকোয়েন্সি এবং দৃঢ়তা দ্বারা চিহ্নিত করা হয় এবং বাজার নির্মাতারা লাভ অর্জনের জন্য বাজারের ওঠানামার উপর নির্ভর করে।
সক্রিয় বাজার তৈরির কৌশল: এই কৌশলের অধীনে, বাজার নির্মাতারা বাজারের পরিস্থিতি অনুসারে রিয়েল টাইমে ক্রয়-বিক্রয় অর্ডারের মূল্য এবং পরিমাণ সমন্বয় করে যাতে চুক্তির সম্ভাবনা বৃদ্ধি পায়। বাজার নির্মাতারা সাধারণত বর্তমান বাজার মূল্যের কাছাকাছি দাম থাকলে অর্ডার বৃদ্ধি করে যাতে বাজারের ওঠানামার সুবিধা আরও ভালোভাবে নেওয়া যায়।
ভলিউম বৃদ্ধির কৌশল: এই প্রবন্ধে যে ধরণের কৌশলের উপর আলোকপাত করা হয়েছে।ভলিউম বৃদ্ধির কৌশলএটি একই দামে ক্রয়-বিক্রয় করে ট্রেডিং ভলিউম বৃদ্ধি করার একটি কৌশল। ঐতিহ্যবাহী বাজার তৈরির কৌশলগুলির বিপরীতে, এই কৌশলটির মূল উদ্দেশ্য মূল্যের পার্থক্য অর্জন করা নয়, বরং বিপুল সংখ্যক লেনদেনের মাধ্যমে বিনিময় ছাড়, স্তর ছাড় বা লিকুইডিটি মাইনিং পুরষ্কার অর্জন করা।
ভলিউম-ওয়াশিং কৌশলে, বাজার নির্মাতারা একই মূল্যে ক্রয় এবং বিক্রয় অর্ডার দেয়। যখন অর্ডারগুলি কার্যকর করা হয়, যদিও মূল্যের পার্থক্যের কোনও লাভ থাকে না, তবুও ট্রেডিং ভলিউম দ্রুত জমা করা যায়। এই কৌশলের লাভ মডেলটি বাজারের সালিসির পরিবর্তে সম্পূর্ণরূপে এক্সচেঞ্জের প্রণোদনা ব্যবস্থার উপর নির্ভর করে।
মূল বৈশিষ্ট্য:
একই দামে লেনদেন: ঐতিহ্যবাহী বাজার তৈরির কৌশল থেকে ভিন্ন, ক্রয় মূল্য এবং বিক্রয় মূল্য একই, এবং কোনও মূল্য পার্থক্যের মুনাফা তৈরি হয় না।
ভলিউম-ভিত্তিক: কৌশলটির মূল লক্ষ্য হল মূল্য সালিশের পরিবর্তে দ্রুত ট্রেডিং ভলিউম সংগ্রহ করা।
প্রণোদনার উপর নির্ভরতা:মুনাফা সম্পূর্ণরূপে এক্সচেঞ্জের রিবেট নীতি, ভিআইপি স্তরের ছাড় বা বাজার নির্মাতাদের প্রণোদনা কর্মসূচির উপর নির্ভরশীল।
গুরুত্বপূর্ণ পার্থক্য: ঐতিহ্যবাহী বাজার তৈরির কৌশলগুলির তুলনায়, ওয়াশ ট্রেডিং কৌশলগুলি প্রকৃত বাজারের তরলতা প্রদান করে লাভ করে না, বরং এক্সচেঞ্জ থেকে নীতিগত পুরষ্কার পাওয়ার জন্য কৃত্রিমভাবে ট্রেডিং ভলিউম তৈরি করে লাভ করে। এই কৌশলটি কিছু বিচারব্যবস্থায় সম্মতি ঝুঁকির সম্মুখীন হতে পারে এবং বাস্তবে প্রয়োগ করার সময় সাবধানতার সাথে মূল্যায়ন করা প্রয়োজন।
কোডটি বিশ্লেষণ করে আমরা দেখতে পাচ্ছি যে এই কৌশলে ক্রয়মূল্য এবং বিক্রয়মূল্য ঠিক একই রকম:
def make_duiqiao_dict(self, trade_amount):
mid_price = self.mid_price # 中间价
trade_price = round(mid_price, self.price_precision) # 精准交易价格
trade_dict = {
'trade_price': trade_price, # 买卖都使用同一个价格
'amount': trade_amount
}
return trade_dict
১. ট্রেডিং ভলিউম ব্রাশিং কৌশল
২. ফি ফেরত প্রক্রিয়া
✅ প্রযোজ্য পরিস্থিতি
❌ প্রযোজ্য নয়
⚠️ ঝুঁকি অনুস্মারক
এই প্রবন্ধে মিঃ জিনানের কোড ফ্রেমওয়ার্কের কথা উল্লেখ করা হবে যেখানে ভলিউম-বুস্টিং কৌশলের একটি সহজ বাস্তবায়ন প্রবর্তন করা হবে, যেখানে বিনিময় পরিবেশে একই মূল্যের ক্রয়-বিক্রয় কৌশলের মাধ্যমে কীভাবে ট্রেডিং ভলিউম সংগ্রহ করা যায় তার উপর আলোকপাত করা হবে। কৌশল কাঠামো দুটি প্রধান শ্রেণী নিয়ে গঠিত:MidClass এবংMarketMakerএই দুটি শ্রেণী বিনিময়ের মধ্য-স্তরের মিথস্ক্রিয়া এবং নক-অন কৌশলের সুনির্দিষ্ট বাস্তবায়নের জন্য দায়ী।
এই কৌশলগত স্থাপত্যটি একটি স্তরযুক্ত নকশা গ্রহণ করে, যা বিনিময় ইন্টারফেস এবং বাজার তৈরির কৌশলকে পৃথক করে যাতে সিস্টেমটির ভাল স্কেলেবিলিটি এবং নমনীয়তা নিশ্চিত করা যায়। স্থাপত্যের প্রধান উপাদানগুলির মধ্যে রয়েছে:
MidClass:এক্সচেঞ্জ মিডল লেয়ারটি এক্সচেঞ্জ ইন্টারফেসের সাথে মিথস্ক্রিয়া করে বাজারের তথ্য, অ্যাকাউন্টের তথ্য, অর্ডার স্ট্যাটাস ইত্যাদি অর্জন করে। এই লেয়ারটি ট্রেডিং লজিক এবং এক্সচেঞ্জ ইন্টারফেসকে আলাদা করে নিশ্চিত করার জন্য বহিরাগত এক্সচেঞ্জের সাথে সমস্ত মিথস্ক্রিয়াকে অন্তর্ভুক্ত করে।MarketMaker: বাজার তৈরির কৌশল শ্রেণী, নক-টু-ট্রেড কৌশল কার্যকর করার জন্য, পেন্ডিং অর্ডার তৈরি করার জন্য, অর্ডারের স্থিতি পরীক্ষা করার জন্য, কৌশলের স্থিতি আপডেট করার জন্য ইত্যাদির জন্য দায়ী। এটি নির্দিষ্ট বাজার তৈরি এবং নক-টু-ট্রেড ক্রিয়াকলাপ প্রদানের জন্য এক্সচেঞ্জের মধ্যম স্তরের সাথে যোগাযোগ করে।MidClassএক্সচেঞ্জের মধ্যম স্তর হিসেবে, এর প্রধান দায়িত্ব হল এক্সচেঞ্জের সাথে মিথস্ক্রিয়া পরিচালনা করা, সমস্ত বহিরাগত API কলগুলিকে অন্তর্ভুক্ত করা এবং একটি সংক্ষিপ্ত ইন্টারফেস প্রদান করাMarketMakerব্যবহার। এর স্থাপত্যে নিম্নলিখিত মূল ফাংশনগুলি অন্তর্ভুক্ত রয়েছে:
বাজার তথ্য অধিগ্রহণ:
অ্যাকাউন্ট তথ্য ব্যবস্থাপনা:
অর্ডার ম্যানেজমেন্ট:
ডেটা স্টোরেজ এবং আপডেট:
এই ফাংশনগুলিকে ক্যাপসুলেট করেMidClassউপরের উদাহরণে, আপনি নিশ্চিত করতে পারেন যে ট্রেডিং কৌশল শ্রেণী (যেমনMarketMaker) এক্সচেঞ্জের সাথে কীভাবে ইন্টারঅ্যাক্ট করবেন তা নিয়ে চিন্তা না করে ট্রেডিং কৌশল বাস্তবায়নের উপর মনোযোগ দিন। এই কাঠামোটি সিস্টেমের রক্ষণাবেক্ষণযোগ্যতা এবং স্কেলেবিলিটি উন্নত করে, বিভিন্ন এক্সচেঞ্জের জন্য সমর্থন যোগ করা বা বিদ্যমান ফাংশনগুলিকে অপ্টিমাইজ করা সহজ করে তোলে।
MarketMakerএটি ক্রস-ট্রেডিং কৌশলের মূল শ্রেণী, যা বাজার-নির্মাণ কার্যক্রম এবং ক্রস-ট্রেডিং লেনদেন সম্পাদনের জন্য দায়ী। এর স্থাপত্যে নিম্নলিখিত প্রধান মডিউলগুলি অন্তর্ভুক্ত রয়েছে:
আরম্ভকরণ:
MidClass, এক্সচেঞ্জের মৌলিক তথ্য পান, যেমন ট্রেডিং পেয়ার, নির্ভুলতা, বাজারের গভীরতা ইত্যাদি।ডেটা রিফ্রেশ:
নক কৌশল বাস্তবায়ন:
MarketMakerএটি বাজারে জমা দেওয়া হবে এবং একই সাথে ক্রয়-বিক্রয়ের আদেশ কার্যকর করা হবে। লক্ষ্য হলো একই দামে ক্রয়-বিক্রয় করে দ্রুত ট্রেডিং ভলিউম সংগ্রহ করা।MarketMakerএটি ক্রমাগত অর্ডারের অবস্থা পরীক্ষা করবে যাতে নিশ্চিত করা যায় যে পেন্ডিং অর্ডারটি সময়মতো প্রক্রিয়া করা যায়। যদি অর্ডারটি কার্যকর না হয়, তাহলে অর্ডারটি সম্পূর্ণ না হওয়া পর্যন্ত এটি পেন্ডিং অর্ডারের মূল্য বা পরিমাণ সমন্বয় করবে।স্ট্যাটাস আপডেট:
MarketMakerবিভিন্ন বাজার পরিবেশের সাথে খাপ খাইয়ে নেওয়ার জন্য কৌশল বাস্তবায়ন পদ্ধতিটি গতিশীলভাবে সমন্বয় করা হবে।ক্রস-ট্রেডিং কৌশল বাস্তবায়ন নির্ভর করে সঠিক বাজার তথ্য এবং দ্রুত বাস্তবায়নের উপর।MarketMakerরিয়েল-টাইম বাজার পরিস্থিতি পর্যবেক্ষণ করে এবং কাউন্টার-অর্ডার পদ্ধতি (একই দামে ক্রয়-বিক্রয়) ব্যবহার করে, দ্রুত ট্রেডিং ভলিউম সংগ্রহ করে কৌশলগত লক্ষ্য অর্জন করা যেতে পারে।
অস্তিত্ব থাকাMarketMakerক্লাস ইনিশিয়ালাইজেশন পদ্ধতিতে, প্রথমে এক্সচেঞ্জের নির্ভুলতা তথ্য সংগ্রহ করুন এবং কৌশলগত পরামিতিগুলি শুরু করুন, যেমন লেনদেনের পরিমাণের নির্ভুলতা, মূল্যের নির্ভুলতা ইত্যাদি।
self.precision_info = self.exchange_mid.get_precision() # 获取精度信息
self.price_precision = self.precision_info['price_precision'] # 价格精度
self.amount_precision = self.precision_info['amount_precision'] # 交易量精度
ক্রস-ট্রেডিং কৌশলের মূল বিষয় হল ক্রস-ট্রেডিং অর্ডারের একটি অভিধান তৈরি করা, যার মধ্যে ক্রয়-বিক্রয় মূল্য এবং পরিমাণ অন্তর্ভুক্ত। কোডটি মধ্যম মূল্য গণনা করে ক্রস-ট্রেডিং অর্ডারের অভিধান তৈরি করে।
def make_duiqiao_dict(self, trade_amount):
mid_price = self.mid_price # 中间价
trade_price = round(mid_price, self.price_precision) # 精准交易价格
trade_dict = {
'trade_price': trade_price,
'amount': trade_amount
}
return trade_dict
ক্রস-ট্রেডিং অর্ডারের উৎপাদিত অভিধান অনুসারে, ক্রস-ট্রেডিং লেনদেন সম্পাদিত হয়।create_orderপদ্ধতি, একই সাথে ক্রয় অর্ডার এবং বিক্রয় অর্ডার দিন।
def make_trade_by_dict(self, trade_dict):
if self.position_amount > trade_dict['amount'] and self.can_buy_amount > trade_dict['amount']:
buy_id = self.exchange_mid.create_order('buy', trade_dict['trade_price'], trade_dict['amount']) # 挂买单
sell_id = self.exchange_mid.create_order('sell', trade_dict['trade_price'], trade_dict['amount']) # 挂卖单
self.traded_pairs['dui_qiao'].append({
'buy_id': buy_id, 'sell_id': sell_id, 'init_time': time.time(), 'amount': trade_dict['amount']
})
নিয়মিতভাবে অর্ডারের অবস্থা পরীক্ষা করুন এবং অসমাপ্ত অর্ডারগুলি প্রক্রিয়া করুন।GetOrderপদ্ধতি, অর্ডার স্ট্যাটাস পান এবং অর্ডার স্ট্যাটাসের উপর ভিত্তি করে অর্ডার বাতিল করবেন কিনা তা সিদ্ধান্ত নিন। নক অর্ডারের প্রসেসিং লজিকে মূলত নিম্নলিখিত ধাপগুলি অন্তর্ভুক্ত থাকে:
অর্ডার স্ট্যাটাস পান:
অর্ডার স্ট্যাটাস রায়:
0(ORDER_STATE_PENDING): সম্পন্ন হয়নি (অর্ডার মুলতুবি)।1(ORDER_STATE_CLOSED): সম্পন্ন (সম্পূর্ণ লেনদেন)।2(ORDER_STATE_CANCELED): প্রত্যাহার করা হয়েছে।3(ORDER_STATE_UNKNOWN): অবস্থা অজানা।অর্ডার স্ট্যাটাস প্রক্রিয়াকরণ:
0), তারপর ভোটগ্রহণের সময় অনুসারে (current_time % 5 == 0) অর্ডার বাতিল করার সিদ্ধান্ত নেয়।1), এবং অন্য একটি অর্ডার সম্পূর্ণ না হয়ে (স্থিতি হল0), তারপর ভোটগ্রহণের সময়ের উপর ভিত্তি করে অসম্পূর্ণ অর্ডারটি বাতিল করার সিদ্ধান্ত নিন।1), লেনদেনের পরিমাণ আপডেট করা হয় এবং অর্ডারটি রেকর্ড থেকে সরিয়ে ফেলা হয়।0আসলে তা না1, এটি অজানা অবস্থা হিসাবে রেকর্ড করা হয় এবং লগ করা হয়।রেকর্ড আপডেট করুন:
এই প্রবন্ধে উপস্থাপিত ভলিউম-বুস্টিং কৌশলটি মূলত ট্রেডিং কাঠামোর স্থাপত্য নকশা শেখার জন্য ব্যবহৃত হয় এবং এর প্রকৃত প্রয়োগ মূল্য সীমিত। পাঠকরা যদি প্রকৃত বাজার তৈরির কৌশলগুলিতে আগ্রহী হন, তাহলে আমরা পরে আরও ব্যবহারিক কৌশল বিষয়বস্তু উপস্থাপন করব:
১. বাজার তৈরির কৌশল
২. গতিশীল বাজার তৈরির কৌশল
৩. বহু-স্তরের বাজার তৈরির কৌশল
এই কৌশলগুলি প্রকৃত মুনাফার যুক্তি এবং ঝুঁকি ব্যবস্থাপনার উপর আরও বেশি মনোযোগ দেবে, যা পরিমাণগত ব্যবসায়ীদের জন্য আরও মূল্যবান রেফারেন্স প্রদান করবে।
ওয়াশ ট্রেডিং কৌশলটি এক্সচেঞ্জের প্রণোদনা নীতির উপর নির্ভর করে। যদি নীতি পরিবর্তন হয়, তাহলে কৌশলটি অবৈধ হয়ে যেতে পারে। অতএব, কৌশলটিকে নীতিগত পরিবর্তনগুলির সাথে মানিয়ে নিতে সক্ষম হতে হবে, যেমন ফি হারের গতিশীল পর্যবেক্ষণ বা একক নির্ভরতার ঝুঁকি কমাতে একাধিক লাভের মডেল প্রবর্তন করা। এছাড়াও, ওয়াশ ট্রেডিং কৌশলটিকে বাজারের হেরফের হিসাবে বিবেচনা করা যেতে পারে এবং নিয়ন্ত্রক ঝুঁকির মুখোমুখি হতে পারে। প্রকৃত প্রয়োগে, কৌশলটির সম্মতি নিশ্চিত করতে এবং নিয়ন্ত্রক সমস্যার কারণে ক্ষতি এড়াতে ব্যবসায়ীদের প্রাসঙ্গিক আইন ও প্রবিধানের প্রতি গভীর মনোযোগ দিতে হবে।
আমি আশা করি পাঠকরা তাদের নিজস্ব ট্রেডিং ধারণা এবং বাজার বোঝার উপর ভিত্তি করে, মৌলিক কাঠামো সম্পর্কে তাদের বোধগম্যতার উপর ভিত্তি করে তাদের কৌশলগুলিকে আরও উন্নত এবং উন্নত করতে পারবেন। পরিমাণগত ট্রেডিংয়ের আকর্ষণ ক্রমাগত শেখা, অনুশীলন এবং উন্নতির মধ্যে নিহিত। পরিমাণগত ট্রেডিংয়ের পথে আপনাদের সকলের ক্রমাগত অগ্রগতি কামনা করছি!
”`python import time, json
class MidClass: def init(self, exchange_instance): “’ 初始化交易所中间层
Args:
exchange_instance: FMZ的交易所结构
'''
self.init_timestamp = time.time() # 记录初始化时间
self.exchange = exchange_instance # 保存交易所对象
self.exchange_name = self.exchange.GetName() # 获取交易所名称
self.trading_pair = self.exchange.GetCurrency() # 获取交易对名称(如 BTC_USDT)
def get_precision(self):
'''
获取交易对的精度信息
Returns:
返回包含精度信息的字典,失败时返回 None
'''
symbol_code = self.exchange.GetCurrency()
ticker = self.exchange.GetTicker(symbol_code) # 回测系统需要
exchange_info = self.exchange.GetMarkets()
data = exchange_info.get(symbol_code)
if not data:
Log("获取市场信息失败", GetLastError())
return None
# 获取该交易对的精度信息
self.precision_info = {
'tick_size': data['TickSize'], # 价格精度
'amount_size': data['AmountSize'], # 数量精度
'price_precision': data['PricePrecision'], # 价格小数位精度
'amount_precision': data['AmountPrecision'], # 数量小数位精度
'min_qty': data['MinQty'], # 最小下单数量
'max_qty': data['MaxQty'] # 最大下单数量
}
return self.precision_info
def get_account(self):
'''
获取账户信息
Returns:
获取信息成功返回 True,获取信息失败返回 False
'''
self.balance = '---' # 账户余额
self.amount = '---' # 账户持仓量
self.frozen_balance = '---' # 冻结余额
self.frozen_stocks = '---' # 冻结持仓量
self.init_balance = None
self.init_stocks = None
self.init_equity = None
try:
account_info = self.exchange.GetAccount() # 获取账户信息
self.balance = account_info['Balance'] # 更新账户余额
self.amount = account_info['Stocks'] # 更新持仓量
self.frozen_balance = account_info['FrozenBalance'] # 更新冻结余额
self.frozen_stocks = account_info['FrozenStocks'] # 更新冻结持仓量
self.equity = self.balance + self.frozen_balance + (self.amount + self.frozen_stocks) * self.last_price
if not self.init_balance or not self.init_stocks or not self.init_equity:
if _G("init_balance") and _G("init_balance") > 0 and _G("init_stocks") and _G("init_stocks") > 0:
self.init_balance = round(_G("init_balance"), 2)
self.init_stocks = round(_G("init_stocks"), 2)
self.init_equity = round(_G("init_equity"), 2)
else:
self.init_balance = round(self.balance + self.frozen_balance, 2)
self.init_stocks = self.amount + self.frozen_stocks
self.init_equity = round(self.init_balance + (self.init_stocks * self.last_price), 2)
_G("init_balance", self.init_balance)
_G("init_stocks", self.init_stocks)
_G("init_equity", self.init_equity)
Log('获取初始eqity', self.init_equity)
self.p