গত কয়েকদিনে, আমি টেলিগ্রাম গ্রুপ ব্যবহারকারীদের কাছ থেকে কিছু ব্যক্তিগত বার্তা পেয়েছি, তারা রেফারেন্সের জন্য নতুন শেয়ার কৌশল সাবস্ক্রাইব করার একটি নকশা উদাহরণ আছে আশা করি। কখনও কখনও, তারা নতুন শেয়ার সাবস্ক্রাইব করতে চান যখন এক্সচেঞ্জ নতুন মুদ্রা অবতরণ, তাই এই নিবন্ধে, আমরা নতুন শেয়ার সাবস্ক্রাইব করার জন্য একটি সহজ সরঞ্জাম কৌশল ডিজাইন করব।
উদাহরণস্বরূপ, বর্তমানে, একটি এক্সচেঞ্জ এবং একটি ট্রেডিং জোড়াঃ XXX_USDT, এখনও এক্সচেঞ্জে তালিকাভুক্ত করা হয়নি। তবে এটি শীঘ্রই তালিকাভুক্ত হবে। আমাদের একটি প্রোগ্রামের সাথে এই এক্সচেঞ্জের XXX_USDT বাজারটি অনুসরণ করতে হবে। একবার ট্রেডিং জোড়া তালিকাভুক্ত হয়ে গেলে, এটি বাণিজ্য করা যেতে পারে। আমরা 10 টি সীমিত মূল্য ক্রয়ের অর্ডার জারি করি, পরিমাণ নির্দিষ্ট করি এবং নতুন মুদ্রা সাবস্ক্রাইব করার অর্ডার তালিকাভুক্ত করি। আপনি যদি তাদের সফলভাবে কিনতে পারেন তবে আপনি কাজটি সম্পূর্ণ করতে পারেন। যদি না হয় তবে আপনি সমস্ত অর্ডার বন্ধ না হওয়া পর্যন্ত এটি তালিকাভুক্ত করতে পারেন এবং আপনি মুদ্রা কিনতে পারেন।
প্রয়োজনীয়তা খুবই সহজ, কিন্তু যারা ডিজিটাল মুদ্রার বাজারে প্রোগ্রামিং এর কোন জ্ঞান রাখে না, তারা হয়তো শুরু করতে পারবে না, তাই আসুন এটি বাস্তবায়ন শুরু করি।
কৌশল পরামিতি সংজ্ঞাঃ
এখানে আমরা এই ৭টি প্যারামিটারকে অর্ডার দেওয়ার মতো অপারেশন নিয়ন্ত্রণের জন্য সংজ্ঞায়িত করি।
কোড বাস্তবায়নঃ
function pendingOrders(ordersNum, price, amount, deltaPrice, deltaAmount) {
var routineOrders = []
var ordersIDs = []
for (var i = 0 ; i < ordersNum ; i++) {
var routine = exchange.Go("Buy", price + i * deltaPrice, amount + i * deltaAmount)
routineOrders.push(routine)
Sleep(ApiReqInterval)
}
for (var i = 0 ; i < routineOrders.length ; i++) {
var orderId = routineOrders[i].wait()
if (orderId) {
ordersIDs.push(orderId)
Log("placed an order successfully", orderId)
}
}
return ordersIDs
}
function main() {
if (symbol == "null" || pendingPrice == -1 || pendingAmount == -1 || pendingPrice == -1 || deltaPrice == -1 || deltaAmount == -1) {
throw "Parameter setting error"
}
exchange.SetCurrency(symbol)
// Block error messages
SetErrorFilter("GetDepth")
while (true) {
var msg = ""
var depth = exchange.GetDepth()
if (!depth || (depth.Bids.length == 0 && depth.Asks.length == 0)) {
// No depth
msg = "No depth data, wait!"
Sleep(500)
} else {
// Obtain depth
Log("Place orders concurrently!")
var ordersIDs = pendingOrders(ordersNum, pendingPrice, pendingAmount, deltaPrice, deltaAmount)
while (true) {
var orders = _C(exchange.GetOrders)
if (orders.length == 0) {
Log("The current number of pending orders is 0, and the operation is stopped")
return
}
var tbl = {
type: "table",
title: "The current pending orders",
cols: ["id", "price", "amount"],
rows: []
}
_.each(orders, function(order) {
tbl.rows.push([order.Id, order.Price, order.Amount])
})
LogStatus(_D(), "\n`" + JSON.stringify(tbl) + "`")
Sleep(500)
}
}
LogStatus(_D(), msg)
}
}
কৌশলটি এক্সচেঞ্জ এপিআই এবং অর্ডার বুক ইন্টারফেসটি পরীক্ষা করে। একবার অর্ডার বুকের ডেটা পাওয়া গেলে, কৌশলটি একই সাথে অর্ডারগুলি স্থানান্তর করতে এক্সচেঞ্জ.গো ফাংশনটি ব্যবহার করবে। অর্ডার স্থাপন করার পরে, বর্তমান মুলতুবি অর্ডারের স্থিতি বিজ্ঞপ্তিযুক্তভাবে পরীক্ষা করা হবে। কৌশলটি আসলে পরীক্ষা করা হয়নি, এখানে কেবল একটি কোড ডিজাইন রেফারেন্স রয়েছে। যদি আপনি আগ্রহী হন তবে আপনি এটিতে ফাংশনগুলি সংশোধন বা যুক্ত করতে পারেন।
সম্পূর্ণ কৌশলঃhttps://www.fmz.com/strategy/358383