টিক কি? উদাহরণস্বরূপ, লেনদেনের ডেটা একটি নদী হিসাবে কল্পনা করা যেতে পারে, এবং টিক নদীর একটি বিভাগের ডেটা। দেশীয় ফিউচারগুলির সূক্ষ্মতম গ্রানুলারিটি প্রতি সেকেন্ডে দ্বিগুণ। অন্য কথায়, দেশীয় ফিউচারগুলি 500 মিলিসেকেন্ডে এক টিক পর্যন্ত প্রেরণ করে।
বেশিরভাগ দেশীয় (এই নিবন্ধে চীনের কথা বলা হচ্ছে) সফটওয়্যার কিভাবে টিক পায়?
তারপর প্রায়ই 500 মিলিসেকেন্ডের মধ্যে একের বেশি লেনদেন হয়, এবং এটিতে নির্দিষ্ট পরিস্থিতি সম্পূর্ণরূপে একটি ব্ল্যাক বক্স। বিশেষ করে কমোডিটি ফিউচারগুলির উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং কৌশলতে, টিক বাজারের গ্রহণের গতি কৌশলটির লাভজনকতার উপর নির্ধারণী প্রভাব ফেলে।
বাজারের বেশিরভাগ ট্রেডিং ফ্রেমওয়ার্ক একটি কলব্যাক মোড ব্যবহার করে, যার অর্থ আদর্শ পরিস্থিতিতে সর্বোচ্চ 500 মিলিসেকেন্ডে একটি টিক রয়েছে। বার / অন টিকের বাস্তব পরিস্থিতিতে, টিক মিস না করা ভাল। কেন? কারণ আপনাকে অনবার / অন টিক ফাংশনে পুরো কোড লজিকের সাথে মোকাবিলা করতে হবে, যা অনেক সময় ব্যয় করে। আপনি এটি চান বা না চান, আপনার কৌশল লজিকটি অবশ্যই বাধাগ্রস্ত হতে হবে, আপনাকে স্টেট আইডল ব্যবহার করতে হবে, যেমনঃ
আরও উন্নত প্রক্রিয়া
এফএমজেড পরিমাণগত ট্রেডিং প্ল্যাটফর্ম এই পিছনের কলব্যাক প্রক্রিয়াটি গ্রহণ করে না, তবে মূল ফাংশন প্রক্রিয়াটি গ্রহণ করে যা কৌশল যুক্তিকে বাধা দেয় না, ব্যবহারকারীদের কৌশল প্রবাহকে আরও প্রাকৃতিকভাবে নিয়ন্ত্রণ করতে দেয়। কৌশলটির অন্তর্নিহিত স্তর হিসাবে সি ++ এবং গোলং ব্যবহার করে, কৌশলটির উপরের স্তরটি যৌক্তিক সমস্যাগুলি পরিচালনা করতে জাভাস্ক্রিপ্ট / পাইথন ব্যবহার করে। ইভেন্ট ট্রিগার প্রক্রিয়াটির সাথে একত্রিত, কৌশলটি প্রথমবারের মতো দ্রুত গতিতে বাজার প্রক্রিয়া করতেও ব্যবহার করা যেতে পারে।
আপনি যদি এটি নিউরাল নেটওয়ার্ক প্রশিক্ষণের জন্য ব্যবহার না করেন তবে স্ক্রিপ্টিং ভাষাটি ধীর বলে বলবেন না, এমনকি যদি এটি ছিল তবে এটি জিট হট সংকলন যুক্ত করার পরে যে কোনও অনুষ্ঠানে ব্যবহার করা যেতে পারে। এন্ট্রি-লেভেল কৌশলটি এখানে লেখা নেই, এবং ফিউচার উচ্চ-ফ্রিকোয়েন্সি টিকের সংশ্লেষণ সম্পর্কে কথা বলুন। উদাহরণস্বরূপ, আমরা যদি কোনও ফিউচার সংস্থার সাথে সংযোগ করি তবে আমরা কেবল এই ফিউচার সংস্থার বাজারটি গ্রহণ করতে পারি। আমাদের গ্রহণের গতি এবং গুণমান আমাদের নিজস্ব নেটওয়ার্কের সাথে সম্পর্কিত, এবং ফিউচার সংস্থার ফ্রন্ট-এন্ড মেশিনের লোডের সাথেও সম্পর্কিত।
সুতরাং, আমরা কীভাবে আরও সঠিক ফিউচার টিক ডেটা দ্রুত পেতে পারি? এফএমজেড কোয়ান্টের কৌশল মডেলের অধীনে, আপনি সহজেই বিভিন্ন ফিউচার সংস্থার অ্যাকাউন্ট পরিচালনা করতে পারেন এবং দ্রুততম গতিতে অর্ডার প্রক্রিয়া করার জন্য তাদের দামগুলি একত্রিত করতে পারেন। স্বাভাবিক পরিস্থিতিতে, আমরা ফিউচার সংস্থা থেকে প্রতি সেকেন্ডে দুটি টিক পেতে পারি, তবে মার্কেটকে একত্রিত করার প্রযুক্তির মাধ্যমে, উদাহরণস্বরূপ MA801 গ্রহণ করে, আমরা প্রতি সেকেন্ডে ছয়বার পর্যন্ত এবং পুনরাবৃত্তি ছাড়াই একটি টিক পেতে পারি।
কোড ডেমো
এই কোডটি শুধুমাত্র বাস্তব বাজারে ব্যবহার করা যেতে পারে এবং ব্যাকটেস্ট করা যাবে না। যদি আপনি FMZ Quant প্ল্যাটফর্মে এটি ব্যবহার না করেন, আপনি শুধুমাত্র নীতিটি উল্লেখ করতে পারেন। এক্সচেঞ্জ যোগ করার সময়, বাজারের সমান্তরাল ফিউশন প্রসেসিং সম্পাদন করার জন্য অনেক ফিউচার কোম্পানি যুক্ত করা যেতে পারে। এখানে দুটি এক্সচেঞ্জ যুক্ত করুনঃ
কোডটি নিম্নরূপঃ
ডেমো প্রভাব
উপরে দেখানো হয়েছে, 21:24:44 এ, প্রথম ফিউচার কোম্পানির ডেটা দ্বিতীয়টির চেয়ে আগে রয়েছে। দুটি ফিউচার কোম্পানি যুক্ত করা প্রভাব দেখাতে পারে, যদি আপনি একসাথে একত্রিত হওয়ার জন্য 5 টিরও বেশি ফিউচার কোম্পানি যুক্ত করেন, তবে আপনার মূলত টিক মিস করার কোনও সম্ভাবনা নেই; যদি আপনি একটি উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং কৌশল বিকাশ করছেন, আপনি একটি খুব গুরুত্বপূর্ণ এবং সিদ্ধান্তমূলক পদক্ষেপ সমাধান করেছেন, যথা টিক গ্রহণের গতি এবং স্থিতিশীলতা।
সম্পূর্ণ কোড পেতেঃ
function main() {
log("Prepare to connect to the exchange and subscribe to the market")
//step 1:All futures front-end machines are starting to subscribe to the variety
_.each(exchanges, function(e){
/*Waiting to connect to the exchange. The strategy is running without
interruption, and it is not the logic of the event callback. */
while(!e.IO("status"))Sleep(1000);
/*Use _C function to troubleshoot network errors. If subscribe to the market just
after connecting to exchanges, there may be a CTP unprepared error. */
_C(e.SetContractType, "MA801")
/*Switch the market receiving mode to the immediate return mode instead of the
event trigger mode. Refer to the API documentation on FMZ website. */
e.IO("mode", 0)
})
Log("start fusing the data")
//step 2: the important part begins
var preVolume = 0
while (true) {
var ts = new Date().getTime()
//Return if any exchanges occur tick event
var ret = exchange.IO("wait_any")
//Reset Volume at the right time
if (ret.Nano/1000000 - ts > 60000) {
preVolume = 0
}
//Target the exchange where the event occurred
var e = exchanges[ret.Index]
//Get ticker, because of switching mode as return before, so here is the updated market, and GetTicker won't fail
//Only the Tick with increasing volume is displayed. It no need to compare actual process, just process it.
var ticker = e.GetTicker()
if (ticker.Volume >= preVolume){
Log(ret,ticker.Last, ticker.Volume)
preVolume = ticker.Volume
}
}
}