পূর্ববর্তী নিবন্ধে, আমরা সি ++ ভাষা, মৌলিক ব্যাকরণ এবং কৌশল কাঠামোর প্রবর্তন থেকে ট্রেডিং কৌশল বাস্তবায়নের ভিত্তি ব্যাখ্যা করেছি। এই নিবন্ধে, আমরা পূর্ববর্তী অংশটি চালিয়ে যাব এবং ধাপে ধাপে একটি কার্যকর পরিমাণগত ট্রেডিং কৌশল বাস্তবায়ন করব।
প্রযুক্তিগত বিশ্লেষণে সর্বাধিক ব্যবহৃত সূচকগুলির মধ্যে একটি, কেডিজে, বিশ্বজুড়ে বেশিরভাগ ব্যবসায়ীরা স্বীকৃত ছিল। কেডিজে এর পুরো নাম
কেডিজে পরিসংখ্যানগত তত্ত্বের উপর ভিত্তি করে তৈরি করা হয়েছিল, সাম্প্রতিক 9 কে লাইনের সর্বোচ্চ, সর্বনিম্ন এবং বন্ধের মূল্যের অনুপাত দ্বারা একটি এলোমেলো মান (আরএসভি) গণনা করা হয়েছিল। তারপরে চলমান গড় অনুসারে কে মান, ডি মান এবং জে মান গণনা করা হয়েছিল এবং দামের প্রবণতা বিচার করার জন্য একটি গ্রাফ আঁকা হয়েছিল।
গতির ধারণা, শক্তির সূচক এবং চলমান গড়ের সুবিধাগুলি একত্রিত করে, আমরা সাধারণ পরিসরের গতি থেকে স্টক মূল্যের পরিবর্তনের মাত্রা পরিমাপ করি। যখন কে মান ডি মানের চেয়ে বড় হয়, তখন এটি নির্দেশ করে যে স্টক মূল্য বর্তমানে একটি ঊর্ধ্বমুখী প্রবণতায় রয়েছে। অতএব, যখন কে লাইনটি ডি লাইনটি নীচে থেকে উপরের দিকে অতিক্রম করে, তখন স্টক কেনার সময়। বিপরীতভাবে, যখন কে মানটি ডি মানের চেয়ে কম হয়, তখন এটি নির্দেশ করে যে স্টক মার্কেট বর্তমানে একটি নিম্নমুখী প্রবণতায় রয়েছে। অতএব, যখন কে লাইনটি ডি লাইনটি উপরে থেকে নীচে অতিক্রম করে, তখন স্টক বিক্রি করার সময়।
কেডিজে সূচক গণনা জটিল। প্রথমে এলোমেলো মান (আরএসভি) গণনা করা হয়, এবং তারপরে কে মান, ডি মান এবং জে মান গণনা করা হয়। এর গণনার পদ্ধতি নিম্নরূপঃ
RSV = (বন্ধের মূল্য - N সময়ের সর্বনিম্ন মূল্য) / (N চক্রের সর্বোচ্চ মূল্য - N চক্রের সর্বনিম্ন মূল্য) * 100
K মান = N চক্রের গড় RSV
D মান = N চক্রের গড় K
J মান = 3 * K মান -2 * D মান
void main(){ // the program starts from this main function
while (true){ // enter the loop
auto ct = exchange.SetContractType(symblo); //set the contract type
auto r = exchange.GetRecords(); // get the K line array
auto arr = TA.KDJ(r, 9, 3, 3); // calculate the KDJ indicator
auto k = arr[0]arr[0].size() - 2]; // get the previous k line KDJ indicator K value
auto d = arr[1]arr[1].size() - 2]; // get the previous k line KDJ indicator D value
auto j = arr[2]arr[2].size() - 2]; // get the previous k line KDJ indicator J value
}
}
KDJ ব্যবহার করার অনেক উপায় আছে, যা একা বা অন্যান্য সূচকগুলির সাথে একত্রে ব্যবহার করা যেতে পারে। এই নিবন্ধে আমরা এটিকে সবচেয়ে সহজ উপায়ে ব্যবহার করব, যা হলঃ যদি K মানটি D মানের চেয়ে বড় হয়, আমরা বিশ্বাস করি যে ক্রয় ক্ষমতা শক্তিশালী হচ্ছে, একটি উত্থান বাজারের তরঙ্গ গঠিত হয়েছে, এবং খোলার দীর্ঘ অবস্থান সংকেত উত্পন্ন হয়; যদি K মানটি D মানের চেয়ে কম হয়, আমরা বিশ্বাস করি যে বিক্রয় ক্ষমতা শক্তিশালী হচ্ছে, এবং একটি পতনের প্রবণতার তরঙ্গ গঠন করা হয়েছে, খোলার শর্ট অবস্থান সংকেত উত্পন্ন হয়।
পজিশন খোলার পর যদি D মান উপরে থেকে নিচে যায়, তাহলে আমরা বিশ্বাস করি যে ক্রয় ক্ষমতা দুর্বল হচ্ছে, অথবা বিক্রয় ক্ষমতা শক্তিশালী হচ্ছে, এবং বন্ধ লং পজিশনের সংকেত উৎপন্ন হয়; যদি শর্ট পজিশন খোলা হয়, তাহলে D মান নিচে থেকে উপরে যায়, আমরা বিশ্বাস করি যে বিক্রয় শক্তি দুর্বল হচ্ছে, অথবা ক্রয় ক্ষমতা শক্তিশালী হচ্ছে, এবং শর্ট পজিশনের সংকেত উৎপন্ন হয়।
লং পজিশন খোলাঃ যদি কোন পজিশন না থাকে এবং K মান D মানের চেয়ে বড় হয়
শর্ট পজিশনঃ যদি কোনও পজিশন না থাকে এবং K মান D মানের চেয়ে কম হয়
লং পজিশন বন্ধ করাঃ যদি লং পজিশন ধরে রাখা থাকে এবং D মানটি পারমিটার K লাইনের D মানের চেয়ে কম হয়
বন্ধ করা শর্ট পজিশনঃ যদি শর্ট পজিশন ধরে রাখা থাকে এবং D মান পূর্ববর্তী K লাইনের D মানের চেয়ে বড় হয়
কোডের সাথে একটি কৌশল বাস্তবায়নের প্রথম ধাপ হল প্রথমে আমাদের কোন তথ্যের প্রয়োজন তা বিবেচনা করা? কোন API এর মাধ্যমে পেতে হবে? আমরা তথ্য পাওয়ার পরে, ট্রেডিং লজিক কিভাবে গণনা করব? পরবর্তী, অর্ডার স্থাপন করার কোন উপায়? অবশেষে, আসুন এটি ধাপে ধাপে বাস্তবায়ন করিঃ
তথাকথিত কৌশল স্থাপত্য পুরো কৌশলটি ডিজাইন করার উপায়। নীচে দেখানো হয়েছে, স্থাপত্যটি দুটি ফাংশন নিয়ে গঠিতঃ একটি হ'ল প্রধান ফাংশন, প্রোগ্রামটি মূল ফাংশন থেকে শুরু হয় এবং এর ফাংশনটি কৌশল যৌক্তিকতার মূল বিষয়গুলি মোকাবেলা করা। যেমনঃ এক্সচেঞ্জের সাথে সংযোগটি ঠিক আছে কিনা তা বিচার করা, অপ্রয়োজনীয় লগ তথ্য ফিল্টার করা, কৌশল যৌক্তিক কোরগুলির এক্সিকিউশন সময় ব্যবধান নিয়ন্ত্রণ করা; এবং অন্যটি হ'ল অনটিক ফাংশন, এই ফাংশনে, মূলত কৌশল যৌক্তিকতা রয়েছেঃ কাঁচা ডেটা পান, ডেটা গণনা করুন, অর্ডার দিন এবং আরও অনেক কিছু।
bool onTick(){ // onTick function
// strategy logic
}
void main(){ // program starts from here
while (true){ // enter the loop
if (exchange.IO("status") == 0) // if the connection with the exchange if not stable.
sleep(1000); // pause for 1 second
continue; // skip this loop, enter the next loop
}
if(!onTick()){ // if the connection with the exchange is stable, enter this if loop, start executing the onTick function
sleep(1000); // pause for 1 second
}
}
}
উপরের কোডটি সি ++ কৌশল ফ্রেমওয়ার্ক যা এফএমজেড কোয়ান্ট প্ল্যাটফর্ম সরঞ্জামগুলি দ্বারা তৈরি করা হয়েছে। এটি একটি স্থির কোডিং ফর্ম্যাট, সমস্ত ট্রেডিং লজিক লাইন 2 থেকে শুরু হয় এবং অন্য কোথাও কোনও পরিবর্তন করা হয় না। এছাড়াও, আপনি যদি অভিজ্ঞ হন তবে আপনি আপনার প্রয়োজন অনুসারে বৈশিষ্ট্যগুলি যুক্ত বা সংশোধন করতে পারেন।
আপনি ট্রেডিং ক্লাস লাইব্রেরিকে একটি কার্যকরী মডিউল হিসাবে ভাবতে পারেন। একটি ট্রেডিং ক্লাস লাইব্রেরি ব্যবহারের সুবিধা হ'ল এটি আপনাকে কৌশল লজিক লেখার দিকে মনোনিবেশ করতে দেয়। উদাহরণস্বরূপ, যখন আমরা ট্রেডিং ক্লাস লাইব্রেরি ব্যবহার করি, একটি অবস্থান খোলার বা বন্ধ করার জন্য, আমরা সরাসরি ট্রেডিং ক্লাস লাইব্রেরির এপিআই ইন্টারফেস ব্যবহার করতে পারি; তবে যদি আমরা ট্রেডিং ক্লাস লাইব্রেরি ব্যবহার না করি, তবে আমাদের অবস্থান খোলার সময় বাজার মূল্য পেতে হবে। অকার্যকর আদেশ এবং প্রত্যাহারের আদেশ ইস্যু বিবেচনা করতে হবে, ইত্যাদি।
বিভিন্ন কাঁচা ডেটা ট্রেডিং লজিকের একটি গুরুত্বপূর্ণ অংশ। আমাদের কী ধরণের ডেটা দরকার? আমাদের কৌশল ট্রেডিং লজিক থেকে, আমাদের প্রথমে কে-লাইন ডেটা পেতে হবে। মূল কে-লাইন ডেটা দিয়ে, আমরা কেডিজে সূচক গণনা করতে পারি এবং অবশেষে অর্ডার দেওয়ার সিদ্ধান্ত নিতে কে-মান এবং ডি-মানের মধ্যে সম্পর্ক তুলনা করতে পারি। সুতরাং আসুন এই ডেটাগুলি পাই।
প্রথমত, আমরা K-লাইন অ্যারে পেতে হবে, কারণ K-লাইন অ্যারে KDJ সূচক গণনা করতে ব্যবহার করা হবে. নিম্নরূপঃ
double position = 0; // position status parameter, the default is 0
bool onTick(string symbol){ // onTick function, all strategy logic are in this function
auto ct = exchange.SetContractType(symbol); // set the contract type and trading variety
if(ct == false){ // if the setting contract type and trading variety is not successful
return false; // return false
}
auto r = exchange.GetRecords(); // get the k-line array
if(!r.Valid || r.size() < 10){ // if getting the k-line array or the number of k-line is less than 10
return false; // return false
}
}
void main(){ // program starts from here
while (true){ // enter the loop
if (exchange.IO("status") == 0) // if the connection with the exchange if not stable.
sleep(1000); // pause for 1 second
continue; // skip this loop, enter the next loop
}
if(!onTick("this_week")){ // if the connection with the exchange is stable, enter this if loop, start executing the onTick function
sleep(1000); // pause for 1 second
}
}
}
উপরে যেমন দেখানো হয়েছে:
লাইন ১ঃ অবস্থান স্থিতি পেতে ব্যবহৃত একটি ভেরিয়েবল সংজ্ঞায়িত করে।
লাইন 3 থেকে 12: একটি onTick ফাংশন সংজ্ঞায়িত করা হয়, এবং এই ফাংশন একটি পরামিতি সঙ্গে বহন। এই প্যারামিটার ট্রেডিং বিভিন্ন, এই ক্ষেত্রে, সাপ্তাহিক k-লাইন ব্যবহার করে পাস করা হয়।
লাইন 14 থেকে 24: একটি প্রধান ফাংশন নির্ধারণ করুন যা অ-কৌশলগত লজিক পরিচালনা করে। একমাত্র জিনিস যা পরিবর্তন করা যেতে পারে তা হল লাইন 20 এ চুক্তি কোড
আসুন onTick ফাংশন উপর ফোকাস এবং এটি কিভাবে K-লাইন তথ্য পায় দেখুনঃ
লাইন ৪ থেকে ৭: চুক্তির ধরন এবং ট্রেডিংয়ের ধরন নির্ধারণ করুন, যদি চুক্তির ধরন এবং ট্রেডিংয়ের ধরন নির্ধারণ সফল না হয়, তাহলে মিথ্যা ফেরত দিন
লাইন ৮ঃ একটি কে-লাইন অ্যারে পান, যা একটি ফিক্সড ফরম্যাট।
9 থেকে 11 লাইনঃ K রেখার দৈর্ঘ্য ফিল্টার করুন, কারণ আমরা KDJ সূচক গণনা করতে যে প্যারামিটারটি ব্যবহার করি তা 9। যখন K রেখার সংখ্যা 9 এর চেয়ে কম হয়, তখন KDJ সূচক গণনা করা অসম্ভব। সুতরাং এখানে আমরা K রেখার দৈর্ঘ্য ফিল্টার করতে চাই। যদি K রেখা 10 এর চেয়ে কম হয় তবে কেবল সরাসরি মিথ্যা ফেরত দিন এবং পরবর্তী K রেখার জন্য অপেক্ষা করুন।
এরপরে, আমাদের কেডিজে সূচকের কে এবং ডি মান গণনা করতে হবে। প্রথমে কেডিজে সূচকগুলির একটি অ্যারে পেতে হবে এবং এই অ্যারে থেকে কে মান এবং ডি মান পেতে হবে। এফএমজেড কোয়ান্ট প্ল্যাটফর্মে, কেডিজে এর অ্যারে পাওয়া খুব সহজ, কেবল কেডিজে এর এপিআই কল করুন, অসুবিধাটি কে এবং ডি মানের মান পাওয়া, কারণ কেডিজে অ্যারে একটি দ্বি-মাত্রিক অ্যারে।
দ্বি-মাত্রিক অ্যারে আসলে বোঝা সহজ, যা অ্যারের একটি অ্যারে, প্রাপ্ত ক্রমগুলি হ'লঃ প্রথমে অ্যারেতে নির্দিষ্ট অ্যারেটি পান, এবং তারপরে নির্দিষ্ট অ্যারে থেকে নির্দিষ্ট উপাদানটি পান, যেমন নীচে দেখানো হয়েছেঃ
#include <iostream>
using namespace std;
int main(){
int hour [3][2] = {{100, 50}, {66, 88}, {10, 90}};
cout << hours[0][0]; // get the hours array first elements of first element, the result is 100
cout << hours[0][1]; // get the hours array first elements of second element, the result is 50
cout << hours[1][0]; // get the hours array second elements of first element, the result is 66
return(0);
}
নিম্নলিখিত হিসাবে, 12 তম লাইন সরাসরি FMZ Quant এর API ব্যবহার করে KDJ সূচকগুলির একটি অ্যারে পেতে, যা একটি দ্বি-মাত্রিক অ্যারেঃ arr = [[K মান, K মান, K মান...], [D মান, D মান, D মান...], [J মান, J মান, J মান...]]
১৩ নং রেখাটি হল পূর্ববর্তী K রেখার k মান পাওয়া, K মানটি arr[0], তারপর arr[0], arr[0].size() থেকে penultimate উপাদানটি পাওয়া যায় যা অ্যারের দৈর্ঘ্য অর্জনের জন্য ব্যবহার করা যেতে পারে arr[0], arr[0].size() - ২ হল অ্যারের দ্বিতীয় শেষ উপাদান, এটি একসাথে রাখা হয়ঃ স্বয়ংক্রিয় k = arr [0] [arr [0].size () - ২ ]; লাইন 14 এবং 15 একই গণনা।
double position = 0; // position status parameter, the default is 0
bool onTick(string symbol){ // onTick function, all strategy logic are in this function
auto ct = exchange.SetContractType(symbol); // set the contract type and trading variety
if(ct == false){ // if the setting contract type and trading variety is not successful
return false; // return false
}
auto r = exchange.GetRecords(); // get the k-line array
if(!r.Valid || r.size() < 10){ // if getting the k-line array or the number of k-line is less than 10
return false; // return false
}
auto arr = TA.KDJ(r, 9, 3, 3); // calculate the KDJ indicator
auto k = arr[0][arr[0].size() - 2]; // get the K value of the previous K line
auto d = arr[1][arr[1].size() - 2]; // get the D value of the previous K line
auto dPre = arr[1][arr[1].size() - 3]; // get the D value of the second last of the K line
}
void main(){ // program starts from here
while (true){ // enter the loop
if (exchange.IO("status") == 0) // if the connection with the exchange if not stable.
sleep(1000); // pause for 1 second
continue; // skip this loop, enter the next loop
}
if(!onTick("this_week")){ // if the connection with the exchange is stable, enter this if loop, start executing the onTick function
sleep(1000); // pause for 1 second
}
}
}
উপরের তথ্য দিয়ে, আমরা এখন ট্রেডিং লজিক এবং অর্ডার দেওয়ার অংশ লিখতে পারি। এটি খুব সহজ, সর্বাধিক ব্যবহৃত হয়
double position = 0; // position status parameter, the default is 0
bool onTick(string symbol){ // onTick function, all strategy logic are in this function
auto ct = exchange.SetContractType(symbol); // set the contract type and trading variety
if(ct == false){ // if the setting contract type and trading variety is not successful
return false; // return false
}
auto r = exchange.GetRecords(); // get the k-line array
if(!r.Valid || r.size() < 10){ // if getting the k-line array or the number of k-line is less than 10
return false; // return false
}
auto arr = TA.KDJ(r, 9, 3, 3); // calculate the KDJ indicator
auto k = arr[0][arr[0].size() - 2]; // get the K value of the previous K line
auto d = arr[1][arr[1].size() - 2]; // get the D value of the previous K line
auto dPre = arr[1][arr[1].size() - 3]; // get the D value of the second last of the K line
string action; // define a string variable action
// if currently holding long position, and the previous K line's D value is less than the second last k line's D value, close all position
// if currently holding short position, and the previous K line's D value is greater than the second last k line's D value, close all position
if((d < dPre && position > 0) || (d > dPre && position <0)){
action = "cover";
}else if (k > d && position <= 0){ // if the previous K line's K value is greater than the previous K line's D value, and there are no long positions
action = "buy"; // set the variable action to "buy"
}else if (k < d && position >= 0){ // if the previous K line's K value is less than the previous K line's D value, and there are no short positions
action = "sell"; // set the variable action to "sell"
}
if (action.size() > 0){ // if there are placing order instruction
position = ext::Trade(action, symbol, 1); // calling the C++ trading class library, placing orders according the direction of variable "action". and also renew the position status.
}
return true; // return true
}
}
void main(){ // program starts from here
while (true){ // enter the loop
if (exchange.IO("status") == 0) // if the connection with the exchange if not stable.
sleep(1000); // pause for 1 second
continue; // skip this loop, enter the next loop
}
if(!onTick("this_week")){ // if the connection with the exchange is stable, enter this if loop, start executing the onTick function
sleep(1000); // pause for 1 second
}
}
}
উপরের কোডে, লাইন 19 থেকে 28 হল ট্রেডিং লজিক এবং অর্ডার দেওয়ার জন্য কোড। তবে এর আগে, আমাদের একটি স্ট্রিং ভেরিয়েবল "অ্যাকশন" সংজ্ঞায়িত করতে হবে 16 লাইনে, যা অর্ডারের কর্ম নির্ধারণে সহায়তা করতে ব্যবহৃত হয়।
লাইন 19 থেকে লাইন 21 হলঃ যদি বর্তমানে লং পজিশন ধরে রাখা হয়, এবং পূর্ববর্তী K লাইন
লাইন 21 থেকে লাইন 25 হলঃ লং এবং শর্ট পজিশন খোলার শর্তাবলী। যখন শর্তটি সত্য হয়, তখন
লাইন ২৬ থেকে লাইন ২৮ এ প্লেসিং অর্ডার লজিকটি কার্যকর করা হয়। প্রথমত, স্ট্রিং ভেরিয়েবল
এখানে দুটি বিষয় উল্লেখ করা দরকার:
বর্তমান কে-লাইন শর্ত প্রতিষ্ঠিত হওয়ার সাথে সাথে কৌশল যুক্তি লিখতে চেষ্টা করুন (কিন্তু প্রয়োজনীয় নয়), তারপরে পরবর্তী কে-লাইনে অর্ডার স্থাপন করুন। অথবা পূর্ববর্তী কে-লাইন শর্ত প্রতিষ্ঠিত হয়, বর্তমান কে-লাইনে অর্ডার স্থাপন করে, এইভাবে, ব্যাকটেস্টের ফলাফল এবং প্রকৃত বাজারের পারফরম্যান্স খুব বেশি আলাদা নয়। এভাবে না লেখা ঠিক, তবে কৌশল যুক্তিটি সঠিক কিনা তা মনোযোগ দিন।
সাধারণভাবে, বন্ধ পজিশনের যুক্তি খোলা পজিশনের যুক্তির সামনে লিখতে হবে। এর উদ্দেশ্য হ'ল কৌশল যুক্তিটি আপনার প্রত্যাশা পূরণ করার চেষ্টা করা। উদাহরণস্বরূপ, যদি কৌশল যুক্তিটি কেবল এমন পরিস্থিতি পূরণ করে যেখানে এটি একটি অবস্থান বন্ধ করার পরে বিপরীত দিকের ট্রেডিং করার প্রয়োজন হয়, এই ধরণের পরিস্থিতির নিয়মটি হ'ল প্রথমে অবস্থানটি বন্ধ করা এবং তারপরে নতুন অবস্থানটি খুলতে হবে। যদি আমরা খোলার অবস্থানের যুক্তির সামনে বন্ধ পজিশনের যুক্তি লিখি তবে এটি এই নিয়মটি পুরোপুরি পূরণ করবে।
উপরে আমরা শিখেছি কিভাবে কেডিজে প্রযুক্তিগত সূচক বিশ্লেষণ করতে হয় এবং এটিকে একটি সম্পূর্ণ পরিমাণগত ট্রেডিং কৌশলতে রূপান্তর করতে হয়। এর মধ্যে রয়েছেঃ কৌশল ভূমিকা, কেডিজে সূচক গণনার পদ্ধতি, কৌশল যুক্তি, ট্রেডিং শর্তাদি, কৌশল কোড বাস্তবায়ন ইত্যাদি। এই কৌশল কেসের মাধ্যমে, আমরা কেবলমাত্র এফএমজেড কোয়ান্ট প্ল্যাটফর্মে সি ++ প্রোগ্রামিং পদ্ধতির সাথে পরিচিত হই না, তবে বিভিন্ন কৌশলগুলিও এই বিভাগের ক্ষেত্রে অনুসারে অভিযোজিত হতে পারে।
একটি পরিমাণগত ট্রেডিং কৌশল অর্জনের জন্য আমাদের নিজস্ব বিষয়গত ট্রেডিং অভিজ্ঞতা বা সিস্টেম সংক্ষিপ্ত করা হয়, এবং তারপর পৃথকভাবে প্রয়োজনীয় কাঁচা তথ্য পেতে, এবং কৌশল যুক্তি জন্য প্রয়োজনীয় তথ্য গণনা, এবং অবশেষে ট্রেডিং বাস্তবায়ন অর্ডার স্থাপন এপিআই কল। এটা বলা যেতে পারে যে সবচেয়ে সহজ পরিমাণগত ট্রেডিং কৌশল এই পদক্ষেপ অনুযায়ী বাস্তবায়িত হয়!
এখন পর্যন্ত, এই সিরিজের কৌশল লেখার টিউটোরিয়ালটি শেষ হয়ে গেছে, আমি বিশ্বাস করি যে আপনি যদি আপনাকে এখানে নিয়ে যাওয়া ধাপে ধাপে টিউটোরিয়ালটি অনুসরণ করেন তবে আপনি অনেক কিছু অর্জন করবেন। যে কোনও ক্ষেত্রে, পরিমাণগত ট্রেডিং বেসিক কোর্সের দৃষ্টিকোণ থেকে, দীর্ঘ পথটি অর্ধেকেরও বেশি চলে গেছে। শেষ অধ্যায়ে, আমরা আপনাকে শিখিয়ে দেব কীভাবে এফএমজেড কুইন্ট ব্যাকটেস্টিং ট্রেডিং সরঞ্জামগুলি ব্যবহার করবেন, এবং কীভাবে ব্যাকটেস্টিংয়ে গর্তগুলি এড়ানো যায় এবং বাস্তব বাজারের ট্রেডিংয়ের জন্য চূড়ান্ত প্রস্তুতি নেওয়া যায়। যদিও এটি সামগ্রীর একটি ছোট অংশ, তবে এটি পরিমাণগত ট্রেডিংয়ের জগতে প্রবেশের ক্ষেত্রে একটি বড় পদক্ষেপ!
FMZ Quant প্ল্যাটফর্মে C++ ভাষা ব্যবহার করে KDJ সূচক অ্যালগরিদম বাস্তবায়নের চেষ্টা করুন।
এই বিভাগের জ্ঞান ব্যবহার করে একটি সিসিআই সূচক কৌশল তৈরি করার চেষ্টা করুন।