পূর্ববর্তী নিবন্ধে, আমরা প্রোগ্রাম্যাটিক ট্রেডিং স্ক্রিপ্ট সম্পর্কে কথা বলেছি। আসলে, ট্রেডিং কৌশলটি একটি ট্রেডিং স্ক্রিপ্ট প্রোগ্রাম। নিবন্ধটি মূলত ট্রেডিং স্ক্রিপ্ট প্রোগ্রামের জন্য একটি হার্ডওয়্যার ক্যারিয়ারের প্রয়োজনীয়তা সম্পর্কে আলোচনা করে (যেখানে প্রোগ্রামটি চালিত হয়), এবং স্ক্রিপ্ট ট্রেডিং প্রোগ্রামটি কোন ধরণের কম্পিউটার প্রোগ্রামিং ভাষায় লেখা যেতে পারে (এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে ব্যবহৃত তিনটি প্রোগ্রামিং ভাষা তালিকাভুক্ত রয়েছে। অবশ্যই, আপনি প্রোগ্রাম্যাটিক ট্রেডিংয়ের কৌশলগুলি বাস্তবায়নের জন্য যে কোনও প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন) । এই নিবন্ধে, আমরা ক্রিপ্টোকারেন্সির পরিমাণ নির্ধারণ এবং এটি সম্পর্কে শিখতে থাকি।
ট্রেডিং কৌশল প্রকার প্রোগ্রামযুক্ত ট্রেডিং এবং পরিমাণগত ট্রেডিংয়ের নতুনদের বিভিন্ন ট্রেন্ড কৌশল, সালিশ কৌশল, উচ্চ-ফ্রিকোয়েন্সি কৌশল, গ্রিড কৌশল ইত্যাদির মতো পদগুলি দ্বারা বিভ্রান্ত হতে পারে। আসলে, প্রোগ্রামযুক্ত ট্রেডিং এবং পরিমাণগত ট্রেডিংয়ের সাধারণ ধরণের কৌশলগুলি কেবল কয়েকটি দিক।
উপরের বিষয়গুলি ট্রেডিং কৌশলগুলির দৃষ্টিকোণ থেকে বিভক্ত করা হয়েছে। এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে কৌশল নকশার দৃষ্টিকোণ থেকে কৌশলগুলিও বিভক্ত করা যেতে পারেঃ
এক্সচেঞ্জ এপিআই ইন্টারফেস
কিভাবে প্রোগ্রাম্যাটিক ট্রেডিং স্ক্রিপ্ট এক্সচেঞ্জ অ্যাকাউন্ট পরিচালনা করে? এটি এক্সচেঞ্জ দ্বারা খোলা API ইন্টারফেসের মাধ্যমে।
সুতরাং কোন ধরনের ইন্টারফেস এক্সচেঞ্জের জন্য উন্মুক্ত? পূর্ববর্তী নিবন্ধে, আমরা
যাচাইকরণের প্রয়োজন নেই এমন ইন্টারফেস
সাধারণত API KEY
(আপনি যদি এপিআই কীটি ভুলে যান তবে আপনি পূর্ববর্তী নিবন্ধে ফিরে যেতে পারেন) এই ধরণের ইন্টারফেসটি সাধারণভাবে বাজার ইন্টারফেস, যেমন গভীর বাজার মূল্য অনুসন্ধান, কে-লাইন ডেটা অনুসন্ধান, তহবিলের হার অনুসন্ধান, ট্রেডিং জাত সম্পর্কে তথ্য অনুসন্ধান, এক্সচেঞ্জ সার্ভারের টাইমস্ট্যাম্প অনুসন্ধান ইত্যাদি।
সহজভাবে বলতে গেলে, আপনার অ্যাকাউন্টের সাথে সম্পর্কহীন ইন্টারফেসটি মোটামুটিভাবে একটি পাবলিক ইন্টারফেস হিসাবে নির্ধারণ করা যেতে পারে (কোনও যাচাইকরণের প্রয়োজন নেই)
এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে, যখন একটি যাচাইকৃত এপিআই ফাংশন কল করা হয় (এক্সচেঞ্জের যাচাইকৃত ইন্টারফেস, পাবলিক ইন্টারফেসকে ইনক্যাপসুলার করে), এমনকি যদি এপিআই কী কনফিগারেশনটি ভুল হয়, ইন্টারফেস দ্বারা ফেরত দেওয়া ডেটা স্বাভাবিকভাবে প্রাপ্ত করা যেতে পারে (নিশ্চিতকরণের কারণে) ।
যাচাইকরণ প্রয়োজন এমন ইন্টারফেস সহজভাবে বলতে গেলে, এটি ইন্টারফেস যা যাচাই করা দরকার (এপিআই কী এর মাধ্যমে), এই ধরণের ইন্টারফেসটিকে একটি ব্যক্তিগত ইন্টারফেস বলা হয়। এটি সাধারণত আপনার অ্যাকাউন্টের কিছু ক্রিয়াকলাপ বা তথ্যের সাথে সম্পর্কিত, যেমন অ্যাকাউন্টের সম্পদ অনুসন্ধান করা, অ্যাকাউন্টের অবস্থান অনুসন্ধান করা, মুলতুবি অর্ডার অনুসন্ধান করা, স্থানান্তর অনুসন্ধান করা, মুদ্রা স্থানান্তর করা, লিভারেজ সামঞ্জস্য করা, অবস্থান মোড সেট করা ইত্যাদি। এই সমস্ত অপারেশন যাচাই করা আবশ্যক। এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে, যাচাই করা দরকার এমন এপিআই ফাংশনটি কল করার সময় (ইনক্যাপসুলেটেড এক্সচেঞ্জের জন্য যাচাই করা দরকার এমন ইন্টারফেস, ব্যক্তিগত ইন্টারফেস), যদি এপিআই কীটি ভুলভাবে কনফিগার করা থাকে তবে ইন্টারফেসটি কল করার সময় একটি ত্রুটি রিপোর্ট করা হবে এবং একটি শূন্য মান ফেরত দেওয়া হবে।
তাহলে এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে এই ইন্টারফেসগুলো কিভাবে ব্যবহার করা হয়?
এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম এক্সচেঞ্জ আচরণ এবং ইন্টারফেসগুলিকে ধারাবাহিক সংজ্ঞা দিয়ে আবৃত করে (যেমন কে-লাইন ইন্টারফেস, গভীর বাজার ইন্টারফেস, বর্তমান সম্পদ অনুসন্ধান ইন্টারফেস, অর্ডার ইন্টারফেস, অর্ডার বাতিলকরণ ইন্টারফেস ইত্যাদি), এই ইন্টারফেসগুলিকে এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম এপিআই ফাংশন বলা হয় এবং এটি এপিআই ডকুমেন্টেশন থেকে অ্যাক্সেস করা যায় (https://www.fmz.com/api).
তাহলে FMZ কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে বিভিন্ন আচরণ এবং সংজ্ঞা সহ কিছু এক্সচেঞ্জ ইন্টারফেস কিভাবে ব্যবহার করা হয়?
এই এক্সচেঞ্জ ইন্টারফেসগুলির মধ্যে রয়েছেঃ সম্পদ স্থানান্তর, শর্তসাপেক্ষ অর্ডার, ব্যাচ অর্ডার স্থাপন, ব্যাচ অর্ডার বাতিলকরণ, অর্ডার সংশোধন ইত্যাদি। কিছু এক্সচেঞ্জের এই ইন্টারফেস রয়েছে, কিছু নেই এবং তাদের ফাংশন এবং ব্যবহারের বিবরণগুলি বেশ আলাদা হতে পারে, তাই এই ইন্টারফেসগুলি ব্যাচের মাধ্যমে অ্যাক্সেস করা যেতে পারেexchange.IO
এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে ফাংশন (বিস্তারিত তথ্যের জন্য, দয়া করে এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম এপিআই ডকুমেন্টেশন দেখুনঃhttps://www.fmz.com/api#exchange.io..এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের কৌশল স্কোয়ারে কিছু ব্যবহারিক আইও উদাহরণ কৌশল রয়েছে।
FMZ কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের API ডকুমেন্টের সমস্ত API ফাংশন কি নেটওয়ার্ক অনুরোধ তৈরি করে?
প্রথম এবং সর্বাগ্রে, এক্সচেঞ্জের এপিআই ইন্টারফেসের অ্যাক্সেস ফ্রিকোয়েন্সি সীমাবদ্ধতা রয়েছে (যেমন প্রতি সেকেন্ডে 5 বার), এবং অ্যাক্সেসটি খুব ঘন ঘন হতে পারে না, অন্যথায় এটি একটি http 429 ত্রুটি রিপোর্ট করবে, এবং অ্যাক্সেস অস্বীকার করা হবে (বেশিরভাগ এক্সচেঞ্জ 429 রিপোর্ট করে) । ইনভেন্টর পরিমাণগত ট্রেডিং প্ল্যাটফর্মে এনক্যাপসেলড এক্সচেঞ্জ ইন্টারফেস কল করার জন্য একই সীমাবদ্ধতা রয়েছে, তবে এফএমজেড ট্রেডিং কোয়ান্ট প্ল্যাটফর্মে নেটওয়ার্ক অনুরোধ উত্পন্ন না করে এমন এপিআই ফাংশনগুলিতে কোনও সীমাবদ্ধতা নেই। এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের সমস্ত এপিআই ফাংশন নেটওয়ার্ক অনুরোধ তৈরি করবে না। তাদের মধ্যে কিছু কেবলমাত্র কিছু স্থানীয় সেটিংস পরিবর্তন করে, যেমন বর্তমান ট্রেডিং জোড়া সেট করা, চুক্তি কোড সেট করা, সূচক গণনা ফাংশন এবং এক্সচেঞ্জ অবজেক্টের নাম পাওয়া ইত্যাদি। সাধারণভাবে, ফাংশনের উদ্দেশ্য থেকে নেটওয়ার্ক অনুরোধ ঘটে কিনা তা বিচার করা যেতে পারে। যতক্ষণ বিনিময় ডেটা, বিনিময় অ্যাকাউন্টের ক্রিয়াকলাপ ইত্যাদি উত্পন্ন নেটওয়ার্ক অনুরোধ, এই ইন্টারফেসগুলিকে কলিং ফ্রিকোয়েন্সিতে মনোযোগ দিতে হবে।
আসুন FMZ কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে API ফাংশন ব্যবহার করার সময় কিছু সাধারণ সমস্যা এবং অভিজ্ঞতা সম্পর্কে কথা বলি
ত্রুটি সহনশীলতা এটি সবচেয়ে সাধারণ ত্রুটি, যা অসংখ্য নতুনদের কষ্ট দিয়েছে। কৌশল ব্যাকটেস্টিং এর সবকিছুই প্রায়শই স্বাভাবিক হয়, কেন আসল বটটি কিছুক্ষণের জন্য চালিত হয় (যে কোনও সময় ট্রিগার হতে পারে) এবং তারপরে ব্যর্থ হয়?
একটি কৌশল লেখার সময়, আমাদের সকলের ইন্টারফেসের দ্বারা ফিরে আসা ডেটা বিচার এবং যাচাই করা দরকার। উদাহরণস্বরূপ, এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে পাওয়ার জন্য বাজার মূল্য কোডের লাইন (নিজের দ্বারা সরাসরি এক্সচেঞ্জ ইন্টারফেসে অ্যাক্সেস করার জন্য একটি প্রোগ্রাম লেখার মতোই):var ticker = exchange. GetTicker()
, যদি আমরা ব্যবহার করতে হবেLast
(শেষ মূল্য) তথ্যticker
পরিবর্তনশীল (GetTicker ফাংশন দ্বারা ফিরে গঠন পড়ুন), আমরা ব্যবহার করতে হবেvar newPrice = ticker.Last
এই ধরনের তথ্য পেতে (newPrice কি? new: latest, Price: price, yes! সব একসাথে!GetTicker()
ফাংশন স্বাভাবিক ডেটা ফিরে আসে, এটা ঠিক আছে, কিন্তু যদি একটি অনুরোধ টাইমআউট, নেটওয়ার্ক ত্রুটি, এক্সচেঞ্জ নেটওয়ার্ক তারের টান, তারের কাটা হয়, বাচ্চা বৈদ্যুতিক সুইচ টান, ইত্যাদি... এটা কারণ হবেGetTicker()
ফাংশন ফিরেnull
এই সময়ে, এর মূল্যticker
হয়null
, এবং যদি আমি তার অ্যাক্সেস করতে যানLast
, একটি প্রোগ্রাম ব্যতিক্রম ঘটবে এবং কৌশল প্রোগ্রাম বন্ধ করা হবে.
এটা মনে হয় যে ইন্টারফেস কল ব্যর্থতা (GetTicker কল ব্যর্থ এবং null ফেরত) কৌশলnull
ইন্টারফেস কল ব্যর্থতার ত্রুটি রিপোর্ট প্রকৃত বট বন্ধের কারণ হবে না (উত্তেজনা) ।
তাহলে আসল বটের অস্বাভাবিক থামানো এড়াতে আমরা কি করতে পারি?
উত্তর হল ইন্টারফেস দ্বারা ফেরত তথ্য ত্রুটি-সহনশীল প্রক্রিয়াকরণ সঞ্চালন. এটা খুব সহজ, শুধু ফিরে তথ্য হয় কিনা বিচারnull
(জাভাস্ক্রিপ্ট ভাষা একটি উদাহরণ, অন্যান্য ভাষা সাধারণত একই)
বর্ণনার জন্য একটি সংক্ষিপ্ত কোড সেগমেন্ট লিখুন (এটি কেবল একটি বর্ণনা, আপনি এটি সরাসরি চালাতে পারবেন না!
var ticker = exchange.GetTicker()
if (ticker) {
var newPrice = ticker.Last
Log("Print the latest price:", newPrice)
} else {
// The data is null, there will be no problem if no operation is performed
}
শুধুGetTicker
ইন্টারফেসটি ত্রুটি সহনশীল হতে হবে, কিন্তু নেটওয়ার্ক অনুরোধগুলির সাথে ইন্টারফেসটি ফেরত মানের জন্য ত্রুটি সহনশীল হতে হবে (যদি আপনি ফাংশনের ফেরত মান ব্যবহার করেন)
অনেক ত্রুটি সহনশীল পদ্ধতি আছে, আপনি ব্যবহার করতে পারেন_C()
ফাংশন (এফএমজেড এপিআই ডকুমেন্টেশন দেখুন) লিখতে ত্রুটি সহনশীল ফাংশন এবং নিজের দ্বারা ত্রুটি সহনশীল প্রক্রিয়া এবং যুক্তি ডিজাইন করুন।
আর এর ব্যবহারের ক্ষেত্রে_C()
ফাংশন, অনেক শিক্ষানবিস এটি ভুলভাবে ব্যবহার করে।_C()
ফাংশন একটি ফাংশন রেফারেন্স, একটি ফাংশন কল নয়।_C(funcName, param1, param2)
, কলটি সঠিক, funcName বন্ধনী ছাড়াই, এবং param1 এবং param2 হল ফাংশন funcName-এ পাস করার পরামিতি।_C(funcName(param1, param2))
, কলটি ভুল, সাধারণত নতুনদের দ্বারা লেখা হয় যারা FMZ API ডকুমেন্টেশনটি গুরুত্ব সহকারে পড়েন না।
স্পট মার্কেটের অর্ডার ক্রয়ের পরিমাণ
স্পট মার্কেট অর্ডার ক্রয় অর্ডারের অর্ডার পরিমাণও নতুনদের দ্বারা ভুল করা সহজ, যেমনটি পূর্ববর্তী নিবন্ধে উল্লেখ করা হয়েছে, স্পট মার্কেট অর্ডার ক্রয় অর্ডারের অর্ডার পরিমাণ সাধারণত পরিমাণ (খুব কম এক্সচেঞ্জের অন্যান্য সেটিংস থাকতে পারে, সাধারণত, এই বিশেষ এক্সচেঞ্জ সেটিংস এফএমজেড এফএমজেড এপিআই নথিতে ব্যাখ্যা করা হবে), উদাহরণস্বরূপ আমি পরীক্ষার জন্য ওকেএক্স ভি 5 ডেমো ব্যবহার করিঃ
ট্রেডিং জুটি নিম্নরূপ নির্ধারণ করা হয়ঃLTC_USDT
function main() {
exchange.IO("simulate", true) // Switch to the demo of OKEX exchange
exchange.Buy(-1, 1) // The price is -1, indicating that the order placed is a market order, and the quantity is 1, indicating that the order amount is 1USDT
}
যেহেতু এক্সচেঞ্জগুলিতে সাধারণত অর্ডারের পরিমাণের উপর একটি সীমা থাকে, সীমার চেয়ে ছোট অর্ডারগুলি স্থাপন করা হবে না (উদাহরণস্বরূপ, সফলভাবে স্থাপন করার আগে বাইনারেন্স স্পটের প্রতিটি অর্ডারের জন্য 5USDT এর বেশি প্রয়োজন) । অতএব, আপনি যদি এইরকম একটি অর্ডার দেন তবে এটি একটি ত্রুটি রিপোর্ট করবেঃ
Error Buy(-1, 1): map[code:1 data:[map[clOrdId: ordId: sCode:51020 sMsg:Order amount should be greater than the min available amount. tag:]] msg:]
ভবিষ্যতে অর্ডার দেওয়ার দিকনির্দেশনা ফিউচার কৌশল তৈরি করার সময়, অর্ডার দেওয়ার দিকটি প্রায়শই নতুনদের দ্বারা ভুল করা হয়, যা সমস্যার দিকে পরিচালিত করে। উদাহরণস্বরূপ এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে কৌশল লিখুন। আসুন প্রথমে এপিআই ডকুমেন্টেশনের বর্ণনাটি দেখিঃhttps://www.fmz.com/api#exchange.setdirection...
যেহেতু অর্ডার ফাংশন শুধুমাত্রBuy
, Sell
যাইহোক, ফিউচার (অবশ্যই, স্পট সঙ্গে কোন সমস্যা নেই, স্পট শুধুমাত্র কেনা এবং বিক্রি করা হয়) খোলা দীর্ঘ, বন্ধ দীর্ঘ, খোলা সংক্ষিপ্ত এবং বন্ধ সংক্ষিপ্ত দিক আছে, তাই এটা স্পষ্ট যে কিনুন / বিক্রয় অনেক দিক অপারেশন প্রকাশ করতে পারবেন না। এই সময়ে ফাংশন প্রবর্তন করা প্রয়োজনexchange.SetDirection()
, যা ফিউচার ট্রেডিংয়ের দিকনির্দেশনা নির্ধারণ করে।
এফএমজেডে,exchange.SetDirection("buy")
(প্রথম দিক সেট করুন)exchange.Buy
, এর মানে হল যে অর্ডারটি একটি লং পজিশন খোলার অর্ডার।
আর এভাবেই:exchange.SetDirection("sell")
এর সাথে ব্যবহার করা হয়exchange.Sell
, এর মানে হল যে অর্ডারটি একটি শর্ট পজিশন খোলার অর্ডার।exchange.SetDirection("closebuy")
এর সাথে ব্যবহার করা হয়exchange.Sell
, এর মানে হল যে অর্ডারটি একটি লং পজিশন বন্ধ করার অর্ডার।exchange.SetDirection("closesell")
এর সাথে ব্যবহার করা হয়exchange.Buy
, এর মানে হল যে অর্ডারটি একটি শর্ট পজিশন বন্ধ করার অর্ডার।
নতুনরা সাধারণতexchange.SetDirection("sell")
সাথেexchange.Buy
তারপর একটি ত্রুটি রিপোর্ট করা হয় (ব্যাক টেস্টিং একটি ত্রুটি রিপোর্ট করতে পারে না, কিন্তু এটি স্পষ্টতই একটি যৌক্তিক ত্রুটি, আবেশ-সংযম ব্যাধি সহ্য করতে পারে না...).
নতুনদের দ্বারা করা আরেকটি সাধারণ ভুল
function main() {
exchange.SetContractType("quarter") // Set the current contract as a quarterly contract
exchange.SetDirection("sell")
var id = exchange.Sell(-1, 1)
Log("See my market order is placed and the transaction is completed, there is a position", exchange.GetPosition())
exchange.SetDirection("closebuy") // closebuy is used in conjunction with Sell, yes~
exchange.Sell(-1, 1)
}
এখানে আপনি জিজ্ঞাসা করতে পারেনঃ
লগ আউটপুট, লেনদেনের তথ্য প্রদর্শন
প্রোগ্রামযুক্ত এবং পরিমাণগত ট্রেডিং কৌশলগুলির নকশা মানব-কম্পিউটার মিথস্ক্রিয়া নকশার সাথে অবিচ্ছেদ্য, যেমন print
.
জাভাস্ক্রিপ্ট ব্যবহারconsole.log
.
গোলং ব্যবহারfmt.Println()
.
সি++ ব্যবহারcout
আসুন FMZ প্ল্যাটফর্মে তথ্য প্রদর্শন সম্পর্কে কথা বলি, FMZ Quant Trading Platform-এ, দুটি প্রধান জায়গা রয়েছে যেখানে তথ্য প্রদর্শিত হয়।
অবস্থা কলাম আসল বট চালানোর পরে, আসল বট পৃষ্ঠাটি চিত্রটিতে দেখানো হয়েছেঃ
ডিসপ্লে অংশটি হল স্থিতি কলামের তথ্য। স্থিতি কলামটি মূলত কিছু রিয়েল-টাইম পরিবর্তন ডেটা প্রদর্শন করতে ব্যবহৃত হয় (কারণ রিয়েল-টাইম পরিবর্তনগুলি রিয়েল-টাইমে পর্যবেক্ষণ করা দরকার এবং এটি প্রতিবার লগ হিসাবে মুদ্রণ করা যায় না, এই ধরণের ডেটা স্থিতি কলামে প্রদর্শিত হতে পারে। লগটি প্রচুর সদৃশ এবং অর্থহীন ডেটা পুনরাবৃত্তি করবে, যদি প্রতিটি লগ মুদ্রণ করা হয় তবে ক্যোয়ারীটি প্রভাবিত করবে) ।
স্ট্যাটাস কলামে প্রদর্শিত ডেটাLogStatus
বিস্তারিত জানার জন্য, দয়া করে FMZ API ডকুমেন্টেশন দেখুন।
লগ কলাম এছাড়াও বাস্তব বট পৃষ্ঠায় disalyed, চিত্র দেখানো হয়েছেঃ
প্রদর্শন অংশটি হল লগ কলাম। লগ কলামটি মূলত নির্দিষ্ট সময়ে নির্দিষ্ট ডেটা স্থায়ীভাবে রেকর্ড করতে বা নির্দিষ্ট সময়ে একটি নির্দিষ্ট কৌশলটির ক্রিয়াকলাপ রেকর্ড করতে ব্যবহৃত হয়। বিভিন্ন ধরণের লগ রয়েছেঃ
সাধারণ লগ, এফএমজেডের কৌশলগুলি কৌশল লগটিতে আউটপুট এবং মুদ্রণের জন্য লগ ফাংশনটি গ্রহণ করে।
অর্ডার লগ, ব্যবহারexchange.Sell
/exchange.Buy
in FMZ
বাতিলকরণ লগ,exchange.CancelOrder
FMZ
ত্রুটি লগ, যখন এফএমজেডে কৌশলটি চলছে, তখন নেটওয়ার্ক অনুরোধ করে এমন ইন্টারফেসে একটি কল ত্রুটি ঘটে, একটি ব্যতিক্রম ছুঁড়ে ফেলা হয় (যেমন ছুঁড়ে ফেলার বিবৃতি), ত্রুটি লগটি স্বয়ংক্রিয়ভাবে লগটিতে আউটপুট হয়।
এফএমজেডের এপিআই ফাংশন, ফাংশনগুলি যা লগ আউটপুট যেমন লগ ((...), এক্সচেঞ্জ.কুপন ((মূল্য, পরিমাণ), এক্সচেঞ্জ.বাতিল করুনঅর্ডার ((আইডি), ইত্যাদি তৈরি করতে পারে, এগুলি প্রয়োজনীয় পরামিতিগুলির পরে কিছু অতিরিক্ত আউটপুট পরামিতি অনুসরণ করতে পারে, যেমনঃ বিনিময়। বাতিল করুনঅর্ডার ((অর্ডার[জে]।আইডি, অর্ডার[জে]), এটি অর্ডার অর্ডার[জে] বাতিল হওয়ার সময় অর্ডার তথ্য আউটপুট করতে।
function main() {
Log("data1", "data2", "data3", "...")
var data2 = 200
var id = exchange.Sell(100000, 0.1, "Attached data1", data2, "...")
exchange.CancelOrder(id, "Attached data1", data2, "...")
LogProfit(100, "Attached data1", data2, "...")
}
সূচক ফাংশন ব্যবহার
সূচক ফাংশন সম্পর্কে কথা বলার আগে, আসুন প্রথমে বুঝতে পারি যে একটি সূচক কী। সহজভাবে বলতে গেলে, এটি একটি রেখা, যেমন চলমান গড়, এমএসিডি এবং এটিআর।
প্রশ্ন: এই সূচকগুলো কোথা থেকে এসেছে?
উঃ অবশ্যই এটি গণনা করা হয়।
প্রশ্ন: হিসাবের ভিত্তি কি?
উঃ কে-লাইন ডেটা ভিত্তিক গণনা।
প্রশ্ন: একটা উদাহরণ দাও?
উত্তরঃ সরলতম সূচক চলমান গড় সূচককে উদাহরণ হিসাবে নিলে, আমরা যদি দৈনিক কে-লাইন (যেমন, একটি ধনাত্মক বা নেতিবাচক রেখা একটি দিনকে উপস্থাপন করে) ডেটা সূচক হিসাবে সূচক গণনার জন্য ব্যবহার করি। চলমান গড় সূচক পরামিতি 10 হয়, তবে গণনা করা চলমান গড় সূচকটি 10 দিনের চলমান গড়।
প্রশ্ন: যদি K-লাইন BAR এর সংখ্যা 10 এর কম হয় তবে চলমান গড়ের সূচকটি গণনা করা যেতে পারে?
উত্তরঃ শুধুমাত্র চলমান গড় সূচক গণনা করা যাবে না, কিন্তু কোন সূচক কার্যকর সূচক মান গণনা করতে পারবেন না যখন K-লাইন তথ্য BAR সংখ্যা সূচক সময়ের পরামিতি পূরণ করে না, এবং গণনা অ্যারে এর সংশ্লিষ্ট অবস্থান ফাঁকা মান দিয়ে ভরা হবে, উদাহরণস্বরূপ,JavaScript
ভাষা কৌশল প্রদর্শন করা হবেnull
গণনা করা সূচক তথ্য মুদ্রণ করার সময়।
এটা ঘটে যে কৌশল বর্গক্ষেত্রে একটি টিউটোরিয়াল উদাহরণ আছেঃhttps://www.fmz.com/strategy/125770ব্যাকটেস্ট টিউটোরিয়ালের উদাহরণ কৌশল, আমরা ব্যাকটেস্টিং সিস্টেম এবং 10-অবধি চলমান গড় দ্বারা উত্পন্ন চার্ট দেখতে পারেনঃ
কৌশল কাস্টম অঙ্কন, আঁকা K-লাইন পাশাপাশি চলন্ত গড় চার্ট.
প্রশ্ন: যদি আমি ১০ ঘণ্টার চলমান গড় চাই? উত্তরঃ ঘণ্টার সময়কালের সাথে কে-লাইন ডেটা ব্যবহার করা ঠিক হবে।
সাধারণ ভাষায়, আমরা যে K-লাইনটি দেখি তা হল একটি অ্যারে যা আমরা ডিজিটালাইজ করার পরে (আপনি যদি অ্যারের ধারণাটি না বুঝতে পারেন তবে আপনি বাইডুকে জিজ্ঞাসা করতে পারেন), যার প্রতিটি উপাদান একটি K-লাইন কলাম, যা ক্রম অনুসারে সাজানো হয়েছে, অ্যারের প্রথম উপাদানটি বর্তমান সময় থেকে সবচেয়ে দূরে, এবং অ্যারের শেষ উপাদানটি বর্তমান সময়ের নিকটতম। সাধারণত, কে-লাইন ডেটার শেষ বারটি বর্তমান সময়ের বার, যা রিয়েল টাইমে পরিবর্তিত হয় এবং এটি অসম্পূর্ণ (আপনি একটি এক্সচেঞ্জ পৃষ্ঠায় লগ ইন করে পরিবর্তনগুলি পর্যবেক্ষণ করতে পারেন এবং কে-লাইনটি পর্যবেক্ষণ করতে পারেন) । গণনা করা সূচকগুলিও কে-লাইন বারগুলির সাথে মিলে যায়। উপরের উদাহরণে, আমরা দেখতে পাচ্ছি যে একটি সূচক মান একটি কে-লাইন বারের সাথে মিলে যায়। নোট করুন যে শেষ কে-লাইন বারটি রিয়েল টাইমে পরিবর্তিত হয় এবং গণনা করা সূচকটিও কে-লাইন বারের পরিবর্তনের সাথে পরিবর্তিত হবে।
এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে, আমরা টিএ লাইব্রেরি (এফএমজেড প্ল্যাটফর্ম দ্বারা বাস্তবায়িত লাইব্রেরি, ডকারের সাথে সংহত, এবং বিভিন্ন ভাষা সরাসরি ব্যবহার করা যেতে পারে) বা তালিব লাইব্রেরি (পুরানো তালিব সূচক লাইব্রেরি, জেএস, সি ++ সংহতকরণ, পাইথন আপনার নিজের দ্বারা ইনস্টল করা দরকার) ব্যবহার করতে পারি। উদাহরণস্বরূপ, উপরের উদাহরণে চলমান গড় গণনা করার জন্যঃ TA লাইব্রেরি ব্যবহার করুনঃ
function main() {
var records = exchange.GetRecords()
var ma = TA.MA(records, 10)
Log(ma) // print moving average
}
তালিব লাইব্রেরি ব্যবহার করুন:
function main() {
var records = exchange.GetRecords()
var ma = talib.MA(records, 10)
Log(ma) // print moving average
}
গণনা করা সূচক তথ্য মা একটি অ্যারে, এবং প্রতিটি উপাদান K-লাইন অ্যারে (রেকর্ড) এক-এক, অর্থাৎ,ma[ma.length -1]
এর সাথে মিলে যায়records[records.length - 1]
ইত্যাদি।
অন্যান্য জটিল সূচকগুলির ক্ষেত্রেও একই কথা প্রযোজ্য এবং আমাদের MACD এর মতো সূচকগুলিতে মনোযোগ দিতে হবে।
var macd = TA.MACD(records) // In this way, only the K-line data is passed in, not the indicator parameters. The indicator parameters use the default values, and the same goes for other indicator functions.
এই সময়ে, পরিবর্তনশীল macd একটি দ্বি-মাত্রিক অ্যারে (আপনি Baidu জিজ্ঞাসা করতে পারেন যদি আপনি ধারণা বুঝতে না পারেন) । একটি দ্বি-মাত্রিক অ্যারে কেবল একটি অ্যারে, এবং এর প্রতিটি উপাদানও একটি অ্যারে। প্রশ্ন: কেন MACD সূচক তথ্য একটি দ্বি-মাত্রিক অ্যারে? উত্তরঃ কারণ ম্যাকড সূচকটি দুটি লাইন (ডিফ লাইন, ডিএ লাইন) এবং ভলিউম বারগুলির একটি সেট দিয়ে গঠিত (ম্যাকড ভলিউম বার, আসলে এই ভলিউম বার ডেটাগুলিও একটি লাইন হিসাবে বিবেচনা করা যেতে পারে) । সুতরাং ম্যাকড ভেরিয়েবলকে বিভক্ত করা যেতে পারেঃ
var dif = macd[0]
var dea = macd[1]
var macdColumn = macd[2]
এখানে একটি রেডিমেড টিউটোরিয়ালের উদাহরণও রয়েছে, যদি আগ্রহী হন, আপনি এখানে অধ্যয়ন করতে পারেনঃhttps://www.fmz.com/strategy/151972