আমরা ট্রেডিং কৌশল নির্মাণের জন্য ভিজ্যুয়ালাইজেশন মডিউল শিখেছি - প্রথম পরিচিত, এবং আমরা ভিজ্যুয়াল মডিউল নির্মাণ এবং splicing একটি ধারণাগত বোঝার আছে, এরপরে, অন্যান্য মডিউলগুলি ব্যবহার করা শিখতে সহজ। আরো জটিল কিছু ফাংশন একত্রিত করা সম্ভব।
পূর্ববর্তী লার্নিং এবং টেস্টিংয়ে, আমরা বেশ কয়েকটি
এগুলো এখানে পুনরাবৃত্তি করা হবে না।
রোবট ট্রেডিং ব্যবহার করার জন্য কৌশল লেখার সময়, আপনি একের বেশি এক্সচেঞ্জ অবজেক্ট যুক্ত করতে পারেন, যেমন হেজিং কৌশল। অথবা আপনাকে বাজারটি অ্যাক্সেস করতে এক্সচেঞ্জ অবজেক্টগুলি অতিক্রম করতে হবে (অধ্যয়ন মানে একের পর এক এক্সচেঞ্জ অবজেক্টগুলি দেখার অর্থ) । এখানেই এক্সচেঞ্জের সংখ্যা জানতে মডিউলটি কাজ শুরু করে।
আমরা একটি সহজ কাঠামোর মধ্যে বর্তমানে কনফিগার করা এক্সচেঞ্জ সংখ্যা মুদ্রণ করতে পারেনঃ
আসলে, এটা এমন একটি জাভাস্ক্রিপ্ট কৌশল কোড কল করার মতঃ
function main () {
Log(exchanges.length)
}
আসুন এই যৌথ মডিউলের চলমান ফলাফলগুলি একবার দেখে নেওয়া যাকঃ
আমরা দেখতে পাচ্ছি যে আমরা তিনটি এক্সচেঞ্জ অবজেক্ট যুক্ত করেছি, যা তিনটি ভিন্ন এক্সচেঞ্জ অ্যাকাউন্টের প্রতিনিধিত্ব করে, এবং ব্যাকটেস্ট লগের আউটপুট ফলাফল 3।
যখন তিনটি এক্সচেঞ্জ অবজেক্ট যুক্ত করা হয়, তখন ড্রপ-ডাউন বক্স তিনটি বিকল্প প্রদর্শন করবে। লুপ টাইপের একটি লুপ মডিউল আগে থেকেই শিখুন।
একটি শর্ত বিচার মডিউল আগে থেকেই শিখুনঃ
বিচার শর্তাবলী নিম্নরূপ লেখা যেতে পারেঃ
আমরা লুপ মডিউল ব্যবহার করি যোগ করা এক্সচেঞ্জ নামগুলি অতিক্রম করতে। বর্তমান লুপের সংখ্যাটি মুদ্রণ করা এক্সচেঞ্জের নামের সাথে মিলেছে কিনা তা বিচার করতে আমরা শর্ত বিচার মডিউলটি ব্যবহার করি।
ব্যাকটেস্ট অপারেশনের ফলাফলঃ
যেমন জাভাস্ক্রিপ্ট কৌশল কোডঃ
function main () {
for (var i = 1 ; i <= exchanges.length ; i++) {
if (i == 1) {
Log(exchanges[0].GetName())
} else if (i == 2) {
Log(exchanges[1].GetName())
} else {
Log(exchanges[2].GetName())
}
}
}
একটি সহজ উদাহরণ হ'ল বর্তমানে সেট করা প্রথম এক্সচেঞ্জ অবজেক্টের ট্রেডিং জোড়া পাওয়া এবং এটি পাঠ্য পরিবর্তনশীলকে বরাদ্দ করা (পূর্বেই পরিবর্তনশীল বিভাগে তৈরি করা) ।
ব্যাকটেস্টিং এর ফলাফল:
আপনি যদি জাভাস্ক্রিপ্ট কৌশল কোড কল করেনঃ
function main () {
var text = exchange.GetCurrency()
Log(text)
}
এই মডিউলটি অর্ডার অপারেশন জন্য খুব গুরুত্বপূর্ণ। প্রথম টেনন (গভীর) অবস্থান একটি মূল্য পরিবর্তনশীল সঙ্গে এম্বেড করা হয়, যা অর্ডার মূল্য নির্দিষ্ট করতে ব্যবহৃত হয়। আপনি সরাসরি একটি নির্দিষ্ট মান লিখতে পারেন। দ্বিতীয় টেনন (কনকভ) অবস্থানটি অর্ডার পরিমাণ ভেরিয়েবলের সাথে এম্বেড করা হয়, যা অর্ডার পরিমাণ নির্দিষ্ট করতে ব্যবহৃত হয়।
উদাহরণস্বরূপ, আমরা বর্তমান টিক মার্কেটের তথ্যের সর্বশেষ মূল্যের উপর ভিত্তি করে 10 ইউয়ান স্লাইডিং মূল্য যোগ করে একটি ক্রয় অর্ডার স্থাপন করার একটি উদাহরণ স্প্লাইস করি, অর্ডার পরিমাণ 0.1 মুদ্রায় সেট করা হয় এবং অর্ডার আইডি মুদ্রণ করি।
ব্যাকটেস্ট অপারেশনের ফলাফলঃ
যেমন নিচের জাভাস্ক্রিপ্ট কৌশল কোডঃ
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
Log(id)
}
এই মডিউলটি বর্তমান ট্রেডিং জোড়ার অসম্পূর্ণ অবস্থায় থাকা সমস্ত অপেক্ষমান অর্ডার ফেরত দেবে। এটি একটি তালিকা কাঠামো (অ্যারে) ফেরত দেয়, যা তালিকা প্রকার মডিউল (ট্র্যাভার্সাল অপারেশন ইত্যাদি) দ্বারা প্রক্রিয়া করা যেতে পারে।
উদাহরণস্বরূপ, আমরা উপরের উদাহরণ অর্ডার মডিউলটি [1] সামান্য সংশোধন করেছি, এবং অর্ডার দেওয়ার সময় যোগ করা 10 ইউয়ান মূল্যকে বিয়োগ 10 ইউয়ানে পরিবর্তন করেছি। অর্ডারটি অবিলম্বে বন্ধ হবে না, তবে এটি লেনদেনের গভীরতায় স্থাপন করা হবে (যেমন, এক কিনুন, দুটি কিনুন, এন-তে একটি নির্দিষ্ট স্তর কিনুন), এইভাবে, অর্ডারটি অপেক্ষমান অর্ডারগুলির অবস্থায় থাকবে।
তারপর আমরা
ব্যাকটেস্টিং দেখায় যে:
ক্রয় আদেশের দাম সেই সময়ের সর্বশেষ মূল্যের তুলনায় ১০ ইউয়ান কম ছিল, তাই তা অবিলম্বে পূরণ করা হবে না। তারপর অর্ডারটি পেন্ডিং লেনদেনের অবস্থায় পেয়ে নিন, এবং এটি প্রিন্ট করুন। অবশেষে, প্রোগ্রামটি বন্ধ করার জন্য একটি ব্যতিক্রম করা হয়।
সমগ্র একত্রিত মডিউল জাভাস্ক্রিপ্ট কৌশল একটি কল মতঃ
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
Log(exchange.GetOrders())
throw "stop"
}
এই মডিউলটি অর্ডার বাতিল করতে ব্যবহৃত হয়।
কৌশল লেখার সময় এমন অনেকগুলি দৃশ্যকল্প রয়েছে যা এই ধরনের ক্রিয়াকলাপের প্রয়োজনঃ
সমস্ত চলমান আদেশ বাতিল করুন।
সন্দেহ নেই যে
প্রথমত, সব আদেশ বাতিল পরীক্ষা করার জন্য, এটি একটি আদেশ স্থাপন করা সুস্পষ্ট নয়। আমরা 2 আদেশ স্থাপন শুরু, তাদের দাম এবং পরিমাণ দুটি আদেশ পার্থক্য করতে ভিন্ন।
ট্রাভার্সালের সময়, প্রতিটি অর্ডার পুনরুদ্ধার করা হয় ভেরিয়েবল মডিউল অর্ডারে একটি মান বরাদ্দ করা হয় (ভেরিয়েবল মডিউল টাইপে তৈরি করা হয়, নীচে দেখানো হয়েছে:)
অর্ডার আইডি বের করুন, এটি
ব্যাকটেস্ট অপারেশনঃ
জাভাস্ক্রিপ্ট কৌশল বর্ণনা ব্যবহার করুনঃ
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
Log(id2)
var orders = exchange.GetOrders()
Log(orders)
for (var i in orders) {
var order = orders[i]
Log(exchange.CancelOrder(order.Id))
}
}
মডিউলটির টেনন (কনকভ) অবস্থান একটি অর্ডার আইডি ভেরিয়েবল মডিউলের সাথে সংযুক্ত এবং অর্ডার বিবরণ ফেরত দেওয়া যেতে পারে।
চালানোর পর যে অর্ডারটি ফিরে এসেছে তা লক্ষ্য করুনঃ
উদাহরণে চলমান ফলাফলগুলির সাথে তুলনা করা হলে [5], এটি পাওয়া যায় যে মুদ্রিত অর্ডারটি বন্ধনী ছাড়াই একটি পৃথক অর্ডার তথ্য। কারণ উদাহরণ [5] একটি তালিকা ফেরত দেয়, কিন্তু এই উদাহরণ একটি পৃথক আদেশ তথ্য ফেরত দেয় (মডিউল দ্বারা পাস টেনন অবস্থান উপর আইডি পরিবর্তনশীল মডিউল উপর ভিত্তি করে প্রাপ্ত) ।
উপরের উদাহরণটি জাভাস্ক্রিপ্ট কৌশল কার্যকর করার অনুরূপঃ
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(exchange.GetOrder(id))
}
আমরা উপরের মডিউলগুলো একের পর এক শিখব এবং আমরা টেস্ট এক্সচেঞ্জকে কমোডিটি ফিউচার হিসেবে সেট করব।
ব্যাকটেস্টিং সেটিংসঃ
নিম্নলিখিত উদাহরণটি সেটিংসের উপর ভিত্তি করে ব্যাকটেস্ট সম্পাদন করে।
কমোডিটি ফিউচারগুলির খোলার সময় এবং বন্ধের সময় থাকে। যখন বাজার বন্ধ থাকে, তখন এটি সংযুক্ত করা যায় না।
যখন এক্সচেঞ্জের অবজেক্টটি ফিউচার এক্সচেঞ্জ হিসাবে কনফিগার করা হয়, যদি এক্সচেঞ্জটি একটি চুক্তি স্থাপন না করে এবং সরাসরি বাজার তথ্য পায়, তাহলে একটি ত্রুটি রিপোর্ট করা হবে।
আমরা চুক্তিটি MA909 হিসাবে নির্ধারণ করেছি, বর্তমানে মেথানলের প্রধান চুক্তি।
এইভাবে, MA909 চুক্তির বর্তমান টিক বাজারে সর্বশেষ মূল্য মূল্য পাওয়া যায়।
অর্ডার সম্পাদন মডিউলে
অর্ডারের দিকনির্দেশনা নির্দিষ্ট করতে হবে, কারণ ফিউচারগুলোতে আছেঃ ক্রয়ঃ খোলা লং পজিশন বিক্রয়ঃ খোলা শর্ট পজিশন closebuy: দীর্ঘ পজিশন বন্ধ করা close-sell: শর্ট পজিশন বন্ধ করা চারটি দিক (কোমোডিটি ফিউচারগুলির জন্য আরও দুটি দিক রয়েছেঃ আজ দীর্ঘ পজিশন বন্ধ করার জন্য closebuy_today এবং আজ শর্ট পজিশন বন্ধ করার জন্য closesell_today) ।
উদাহরণস্বরূপ, যদি অর্ডার মডিউলটি
ব্যাকটেস্টিং ডিসপ্লেঃ
যেমন জাভাস্ক্রিপ্ট কৌশল কোডঃ
function main () {
while (true) {
if (exchange.IO("status")) {
exchange.SetContractType("MA909")
Log(exchange.GetTicker().Last)
exchange.SetDirection("buy")
Log(exchange.Buy(1000, 1))
throw "stop"
} else {
Log("The commodity futures front-end processor is not connected")
}
Sleep(1000)
}
}
ডিজিটাল মুদ্রার ফিউচার ব্যবহার মূলত উপরে [8] এ পণ্যের ফিউচারের সাথে একই
এটি ডিজিটাল মুদ্রার ফিউচারগুলির লিভারেজ সেট করতে ব্যবহৃত হয়।
#Note: Backtesting is not supported.
যেমন জাভাস্ক্রিপ্ট কৌশলঃ
function main () {
exchange.SetMarginLevel(10)
}
ভিজ্যুয়ালাইজেশন কৌশলগুলির উদাহরণঃ
https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318আরও কৌশল জানতে দয়া করে দেখুনঃhttps://www.fmz.com/square
এই সিরিজের অন্যান্য প্রবন্ধ