এম ভাষার সাথে শুরু করা
এম ভাষা কি? তথাকথিত এম ভাষা হল প্রোগ্রাম্যাটিক ফাংশনগুলির একটি সেট যা প্রাথমিক স্টক ট্রেডিং প্রযুক্তিগত সূচক থেকে প্রসারিত হয়। অ্যালগরিদমকে একটি একক ফাংশনে আবৃত করে, ব্যবহারকারীকে কেবল কৌশল যুক্তি বাস্তবায়নের জন্য
এটি "ছোট ব্যাকরণ, বড় ফাংশন" এর নির্মাণ মোড গ্রহণ করে, যা প্রোগ্রামিং দক্ষতা ব্যাপকভাবে উন্নত করে। অন্যান্য ভাষায় 100 টিরও বেশি বাক্যের কৌশল লেখার এম ভাষায় মাত্র কয়েকটি লাইনে সংকলন করা যেতে পারে। আর্থিক পরিসংখ্যান ফাংশন লাইব্রেরি এবং তথ্য কাঠামো FMZ কোয়ান্ট সরঞ্জামের সাথে একত্রে কিছু জটিল ট্রেডিং লজিক সমর্থন করতে পারে।
এই বিভাগের মূল জ্ঞানগুলি দ্রুত বুঝতে আপনাকে সহায়তা করার জন্য, এফএমজেড কোয়ান্ট এম ভাষাটি প্রবর্তনের আগে, আসুন প্রথমে এই বিভাগের নামের ধারণার প্রাথমিক বোঝার জন্য। আমরা এখনও দীর্ঘমেয়াদী 50-দিনের চলমান গড় এবং স্বল্পমেয়াদী 10-দিনের চলমান গড়কে বেসিক কেস হিসাবে ব্যবহার করব এবং পূর্ববর্তী অধ্যায়ে উল্লিখিত সম্পূর্ণ কৌশল কেসটি পর্যালোচনা করবঃ
খোলা লং পজিশনঃ যদি বর্তমানে কোনও পজিশন না থাকে এবং বন্ধের মূল্য স্বল্পমেয়াদী চলমান গড়ের চেয়ে বেশি হয় এবং বন্ধের মূল্য দীর্ঘমেয়াদী চলমান গড়ের চেয়ে বেশি হয় এবং স্বল্পমেয়াদী চলমান গড় দীর্ঘমেয়াদী চলমান গড়ের চেয়ে বেশি হয় এবং দীর্ঘমেয়াদী চলমান গড় বাড়ছে।
খোলা শর্ট পজিশনঃ যদি বর্তমানে কোনও পজিশন না থাকে এবং বন্ধের মূল্য স্বল্পমেয়াদী চলমান গড়ের চেয়ে কম হয় এবং বন্ধের মূল্য দীর্ঘমেয়াদী চলমান গড়ের চেয়ে কম হয় এবং স্বল্পমেয়াদী চলমান গড় দীর্ঘমেয়াদী চলমান গড়ের চেয়ে কম হয় এবং দীর্ঘমেয়াদী চলমান গড় হ্রাস পাচ্ছে।
বন্ধ করা লং পজিশনঃ বর্তমানে লং পজিশন থাকলে, এবং বন্ধের মূল্য দীর্ঘমেয়াদী চলমান গড়ের চেয়ে কম, অথবা স্বল্পমেয়াদী চলমান গড় দীর্ঘমেয়াদী চলমান গড়ের চেয়ে কম, অথবা দীর্ঘমেয়াদী চলমান গড় হ্রাস পাচ্ছে।
শর্ট পজিশন বন্ধ করুনঃ যদি বর্তমান শর্ট পজিশন ধরে রাখা হয় এবং বন্ধের মূল্য দীর্ঘমেয়াদী চলমান গড়ের চেয়ে বেশি হয়, অথবা স্বল্পমেয়াদী চলমান গড় দীর্ঘমেয়াদী চলমান গড়ের চেয়ে বেশি হয়, অথবা দীর্ঘমেয়াদী চলমান গড় বাড়ছে।
আপনি যদি এটি এম ভাষায় লিখেন, তাহলে এটি হবেঃ
MA10:=MA(CLOSE,10); // Get the 10-cycle moving average of the latest K-line and save the result in variable MA10
MA50:=MA(CLOSE,50); // Get the 50-cycle moving average of the latest K-line and save the result in variable MA50
MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling
CLOSE>MA10 AND CLOSE>MA50 AND MA10>MA50 AND MA50_ISUP,BK; //open long position
CLOSE<MA10 AND CLOSE<MA50 AND MA10<MA50 AND MA50_ISUP,SK; //open short position
CLOSE<MA50 OR MA10<MA50,SP;//close long position
CLOSE>MA50 OR MA10>MA50,BP;//close short position
একটি সম্পূর্ণ ট্রেডিং কৌশল লিখতে, আপনি প্রয়োজন হবেঃ তথ্য অধিগ্রহণ, তথ্য গণনা, যৌক্তিক গণনা, এবং অর্ডার স্থাপন. উপরে দেখানো হিসাবে, সমগ্র কোড, শুধুমাত্র এক API মৌলিক তথ্য পেতে ব্যবহার করা হয়, যা প্রথম এবং দ্বিতীয় লাইনে " CLOSE " হয়; তারপর প্রথম থেকে নবম লাইন তথ্য গণনা অংশ; লাইন 11 থেকে 14 যৌক্তিক গণনা এবং অর্ডার স্থাপন অংশ।
মনে রাখবেন যে MA10, MA50, MA10_1, MA50_1, MA10_2, এবং MA50_2 ভেরিয়েবল; প্রথম থেকে নবম লাইন পর্যন্ত, " := " একটি অ্যাসাইনমেন্ট চিহ্ন, এবং অ্যাসাইনমেন্ট চিহ্নের ডানদিকে ডেটা অ্যাসাইনমেন্ট চিহ্নের বাম দিকে ভেরিয়েবলকে নির্ধারিত হয়;
মৌলিক তথ্য (খোলার মূল্য, সর্বোচ্চ মূল্য, সর্বনিম্ন মূল্য, বন্ধ মূল্য, ভলিউম) পরিমাণগত ট্রেডিং এর একটি অপরিহার্য অংশ। কৌশল সর্বশেষ মৌলিক তথ্য পেতে, আপনি শুধুমাত্র FMZ Quant এর API কল করতে হবে। আপনি ঐতিহাসিক মূল্য মৌলিক তথ্য পেতে চান, আপনি ব্যবহার করতে পারেন " REF ", যেমনঃ REF (CLOSE, 1) গতকালের বন্ধ মূল্য পেতে হয়।
ভেরিয়েবল পরিবর্তন করা যেতে পারে। একটি ভেরিয়েবলের নাম একটি কোড নাম হিসাবে বোঝা যেতে পারে। এর নাম ইংরেজি অক্ষর, সংখ্যা এবং লাইন দ্বারা সমর্থিত। তবে দৈর্ঘ্য 31 অক্ষরের মধ্যে নিয়ন্ত্রণ করা আবশ্যক। ভেরিয়েবলের নাম অন্যের সাথে পুনরাবৃত্তি করা যাবে না, প্যারামিটার নামগুলির সাথে সদৃশ করা যাবে না, ফাংশন নামগুলির সাথে পুনরাবৃত্তি করা যাবে না (এপিআই ), এবং প্রতিটি বিবৃতি একটি সেমিকোলন দিয়ে শেষ হওয়া উচিত। " // " এর পরে মন্তব্য লেখা। নীচে দেখানো হয়েছেঃ
INT:=2; //Integer type
FLOAT:=3.1; //Floating point
ISTRUE:=CLOSE>OPEN; //Boolean type
ভেরিয়েবল অ্যাসাইনমেন্ট এর অর্থ হল যে অ্যাসাইনমেন্ট সাইন এর ডানদিকে মানটি বাম দিকে ভেরিয়েবলকে দেওয়া হয়। চার ধরণের অ্যাসাইনমেন্ট রয়েছে, যা মানটি চার্টে প্রদর্শিত হয় কিনা বা প্রদর্শনের অবস্থানটি নিয়ন্ত্রণ করতে পারে। এগুলি হ'ল " ": ", " := ", " ^^ ", "... ", এবং নীচের কোড মন্তব্যগুলি তাদের অর্থ বিশদভাবে ব্যাখ্যা করে।
CC1: C; //Assign the closing price to the variable CC1 and display it in the sub-chart
CC2:=C; //Assign the closing price to variable CC2, but not display in the status bar and chart
CC3^^C; //Assign the closing price to the variable CC3 and display it in the main chart
CC4..0; //Assign the closing price to the variable CC4 and display it in the status bar, but not in the chart
এম ভাষায় বেশ কয়েকটি ডেটা প্রকার রয়েছে, যার মধ্যে সর্বাধিক সাধারণ হ'ল সংখ্যাসূচক প্রকার, স্ট্রিং প্রকার এবং বুলিয়ান প্রকার। সংখ্যাসূচক প্রকারটি পূর্ণসংখ্যা, দশমিক, ধনাত্মক এবং নেতিবাচক সংখ্যা ইত্যাদি সহ সংখ্যা, যেমনঃ ১, ২, ৩, ১.১২৩৪, ২.২৩৪৫৬...; স্ট্রিং প্রকারটি পাঠ্য হিসাবে বোঝা যায়, চীনা, ইংরেজি, সংখ্যাগুলি স্ট্রিংও হতে পারে, যেমনঃ
সম্পর্কীয় অপারেটর, নাম অনুসারে, দুটি মানের সম্পর্ক তুলনা করতে ব্যবহৃত অপারেটর। তারা সমান, বৃহত্তর, কম, বৃহত্তর বা সমান, কম বা সমান, সমান নয়, নীচে দেখানো হয়েছেঃ
CLOSE = OPEN; //when closing price equals to opening price, return 1 (true), otherwise return 0 (false)
CLOSE > OPEN; //when closing price greater than opening price, return 1 (true), otherwise return 0 (false)
CLOSE < OPEN; //when closing price less than opening price, return 1 (true), otherwise return 0 (false)
CLOSE >= OPEN; //when closing price greater than or equal to opening price, return 1 (true), otherwise return 0 (false)
CLOSE <= OPEN; //when closing price less than or equal to opening price, return 1 (true), otherwise return 0 (false)
CLOSE <> OPEN; //when closing price is not equal to opening price, return 1 (true), otherwise return 0 (false)
যৌক্তিক ক্রিয়াকলাপগুলি পৃথক বুলিয়ান প্রকারের বিবৃতিগুলিকে পুরোতে যুক্ত করতে পারে, সর্বাধিক ব্যবহৃত হয় "এবং" এবং "অথবা"। ধরুন দুটি বুলিয়ান প্রকারের মান রয়েছে,
AA:=2>1; //return true
BB:=4>3; //return true
CC:=6>5; //return true
DD:=1>2; //return false
দয়া করে মনোযোগ দিন:
" AND " হল যখন সব শর্ত
"অথবা" মানে সব শর্তে, যতক্ষণ শর্তের কোনটি
"এবং" "&&" হিসাবে লেখা যেতে পারে, এবং "অথবা" "অর্থাৎ" হিসাবে লেখা যেতে পারে।
এম ভাষায় ব্যবহৃত গাণিতিক অপারেটর ("+
AA:=1+1; //the result is 2
BB:=2-1; //the result is 1
CC:=2*1; //the result is 2
DD:=2/1; //the result is 2
যদি 100*(10-1)/(10+5) এক্সপ্রেশন থাকে, তাহলে প্রোগ্রামটি প্রথমে কোন ধাপ গণনা করে?
1, যদি এটি একই অপারেশন স্তর হয়, এটি সাধারণত বাম থেকে ডানে গণনা করা হয়। ২, যদি যোগ ও বিয়োগ, এবং গুণ ও বিভাজন থাকে, তাহলে প্রথমে গুণ ও বিভাজন গণনা করুন, তারপর যোগ ও বিয়োগ। ৩. যদি কোন ক্রেটেন্ট থাকে, তাহলে প্রথমে ক্রেটেন্টের ভিতরের অংশ গণনা করুন। 4, যদি সহজ অপারেশন আইন পূরণ করা হয়, আইন গণনা জন্য ব্যবহার করা যেতে পারে।
এম ভাষার ক্ষেত্রেও একই কথা সত্য, যেমন নিচে দেখানো হয়েছেঃ
100*(10-1)/(10+5) //the result is 60
1>2 AND (2>3 OR 3<5) //the result is false
1>2 AND 2>3 OR 3<5 //the result is true
এফএমজেড কোয়ান্ট সরঞ্জামের এম ভাষায় প্রোগ্রাম এক্সিকিউশনের দুটি মোড রয়েছে, যথা, ক্লোজিং প্রাইস মোড এবং রিয়েল-টাইম প্রাইস মোড। ক্লোজিং প্রাইস মোডের অর্থ হ'ল যখন বর্তমান কে-লাইন সংকেত প্রতিষ্ঠিত হয়, পরবর্তী কে-লাইনে অর্ডার দেওয়া হয়। বর্তমান কে-লাইন সংকেত প্রতিষ্ঠিত হওয়ার সাথে সাথে রিয়েল-টাইম মোডটি কার্যকর হয়।
যদি এটি একটি ইনট্রা-ডে ট্রেডিং কৌশল হয়, তাহলে আপনাকে "টাইম" টাইম ফাংশনটি ব্যবহার করতে হবে যখন আপনাকে শেষে অবস্থানটি বন্ধ করতে হবে। এই ফাংশনটি দ্বিতীয় চক্রের উপরে এবং দিনের চক্রের নীচে, চারটি অঙ্কের আকারে দেখানো হয়েছেঃ HHMM (1450 - 14: 50) । দ্রষ্টব্যঃ সেশনের শেষে অবস্থান বন্ধ করার শর্ত হিসাবে টাইম ফাংশনটি ব্যবহার করে, এটি সুপারিশ করা হয় যে খোলার অবস্থানের শর্তগুলি সংশ্লিষ্ট সময়সীমার সাপেক্ষে। নীচে দেখানো হয়েছেঃ
CLOSE>OPEN && TIME<1450,BK; //if it is a positive k-line and the time is less than 14:50, opening position.
TIME>=1450,CLOSEOUT; //if the time is beyond 14:50, closing all position.
এম ভাষায় দুটি ধরণের মডেল শ্রেণীবিভাগ রয়েছেঃ ফিল্টারিং মডেল এবং ফিল্টারিং মডেল। এটি আসলে খুব ভালভাবে বোঝা যায়ঃ ফিল্টারিং মডেল অবিচ্ছিন্ন খোলার বা বন্ধের সংকেত দেয়, যা অবস্থানগুলি যুক্ত এবং হ্রাস করতে ব্যবহার করা যেতে পারে। ফিল্টারিং মডেল অবিচ্ছিন্ন খোলার বা বন্ধের সংকেত দেয় না, অর্থাৎ যখন খোলার সংকেত উপস্থিত হয়, তখন পরবর্তী খোলার সংকেতটি বন্ধের সংকেত উপস্থিত না হওয়া পর্যন্ত ফিল্টার করা হবে। নন-ফিল্টারিং মডেলের আদেশটি হ'লঃ খোলা অবস্থান - বন্ধ অবস্থান - খোলা অবস্থান - বন্ধ অবস্থান - খোলা অবস্থান...
উপরে এম ভাষার দ্রুত শুরু বিষয়বস্তু, এখন আপনি এখন আপনার নিজের ট্রেডিং কৌশল প্রোগ্রাম করতে পারেন. আপনি যদি একটি আরো জটিল এক লিখতে প্রয়োজন, আপনি FMZ Quant প্ল্যাটফর্মের এম ভাষা এপিআই ডকুমেন্টেশন পড়ুন, অথবা সরাসরি অফিসিয়াল গ্রাহক সেবা আপনার জন্য এটি লিখতে পরামর্শ করতে পারেন.
ইনট্রা ডে ট্রেডিংও একটি জনপ্রিয় ট্রেডিং মোড। এই পদ্ধতি রাতারাতি অবস্থান ধরে রাখে না। অতএব, এটি বাজারের অস্থিরতার কম ঝুঁকির সাপেক্ষে। একবার অনুপযুক্ত বাজারের পরিস্থিতি দেখা দিলে, এটি সময়মতো সামঞ্জস্য করা যেতে পারে। পরবর্তী বিভাগে, আমরা আপনাকে একটি কার্যকর ইনট্রা ডে ট্রেডিং কৌশল লিখতে নিয়ে যাব।