উচ্চ ফ্রিকোয়েন্সি ট্রেডিং একটি চ্যালেঞ্জিং এবং প্রতিযোগিতামূলক ক্ষেত্র যা দ্রুত বাণিজ্য সম্পাদন এবং বাজারের মাইক্রোস্ট্রাকচারের সংবেদনশীল অন্তর্দৃষ্টিগুলির উপর নির্ভর করে। একটি উল্লেখযোগ্য কৌশল হ'ল পেনি জাম্প, যা ছোট তবে ঘন ঘন মুনাফা অর্জনের জন্য বাজারে
স্টক মার্কেটে,
উদাহরণস্বরূপ, ধরুন একটি স্টক মার্কেটের প্রাথমিক গভীরতা ছিল এইরকমঃ ২০০.০১ ডলার x ১.০৩ ডলার.২০০. তারপর একটি হাতি প্রবেশ করে এবং ৩০০০ শেয়ারের জন্য ১.০১ ডলার প্রতিতে একটি ক্রয় অর্ডার দেয়। এই সময়ে, মার্কেটের গভীরতা ৩,২০০.০১ ডলার x ১.০৩ ডলার.২০০ তে পরিবর্তন হবে। এই পদক্ষেপটি একটি হাতি চালু করার মতো, যা বাজারের অন্যান্য অংশগ্রহণকারীদের ফোকাস হয়ে যায়।
প্রতিযোগিতামূলক বাজার উচ্চ ফ্রিকোয়েন্সি ট্রেডারদের জন্য, তাদের মুনাফা মূলত বাজারের মাইক্রোস্ট্রাকচার বিশ্লেষণ থেকে আসে অন্য ব্যবসায়ীদের অভিপ্রায় নিয়ে জল্পনা করার জন্য। একবার একটি বড় খেলোয়াড় উপস্থিত হলে, উচ্চ ফ্রিকোয়েন্সি ব্যবসায়ীরা ক্ষুদ্র মূল্যের ওঠানামা ক্যাপচার করার জন্য দ্রুত অবস্থান স্থাপন করবে। তাদের লক্ষ্য স্বল্প সময়ের মধ্যে ঘন ঘন বাণিজ্য করা এবং ছোট তবে সমষ্টিগত মুনাফা জমে থাকা।
হাতির দ্বন্দ্ব যদিও হাতিরা বাজারে বড় আকারে কাজ করতে চায়, তাদের কর্মগুলি তাদের ট্রেডিং অভিপ্রায়গুলিও প্রকাশ করে, তাদের উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীদের লক্ষ্য করে। উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীরা সময়ের আগে অবস্থান প্রতিষ্ঠার চেষ্টা করে এবং তারপরে মূল্যের ওঠানামা থেকে লাভবান হয়। বাজারে হাতির উপস্থিতি প্রতিযোগিতামূলক বাজারে প্রতিক্রিয়া সৃষ্টি করতে পারে, যার ফলে তাদের ট্রেডিং কৌশলগুলি প্রভাবিত হয়।
বাজারে প্রতারণা প্রকৃতপক্ষে, বড় প্রাতিষ্ঠানিক বিনিয়োগকারীরা সাধারণত বাজারে প্রচুর পরিমাণে ক্রয় বা বিক্রয় আদেশ দেয় না, কারণ এই জাতীয় আচরণ বাজারের অন্যান্য অংশগ্রহণকারীদের প্রতিরোধ ব্যবস্থা গ্রহণ বা এমনকি বাজারকে পরিচালনা করতে পারে। অতএব, তারা বিভ্রম তৈরি করার কৌশল গ্রহণ করতে পারে, ক্ষেত্রটিতে উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীদের আকর্ষণ করতে পারে এবং তারপরে দামের ওঠানামা থেকে লাভ অর্জনের জন্য দ্রুত বিক্রি বা কিনতে পারে।
পেনি জাম্প কৌশলটির মূল ধারণাটি হ'ল একবার
শুধু তাই নয়, উচ্চ-ফ্রিকোয়েন্সি ট্রেডাররা ক্রয়ের পরে মুনাফা অর্জন করতে পারে, এমনকি যদি দাম না বেড়ে যায়, কারণ তারা জানে যে বড় খেলোয়াড়টি বেস মূল্যকে সমর্থন করেছে; সুতরাং তারা দ্রুত এই বড় খেলোয়াড়কে তাদের স্টক বিক্রি করতে পারে এবং ক্ষুদ্রতর সালিশ লাভ করতে পারে।
কৌশল উৎস কোডঃhttps://www.fmz.com/strategy/358
উপরে প্রদত্ত কৌশল কোড একটি উদাহরণ, পেনি জাম্প কৌশল বাস্তবায়নের জন্য ব্যবহৃত হয়। নীচে কোডের একটি বিস্তারিত ব্যাখ্যা রয়েছে, যা নতুনদের এটি কীভাবে কাজ করে তা বুঝতে সক্ষম করেঃ
var Counter = {
i: 0,
w: 0,
f: 0
};
// Variables
var InitAccount = null;
function CancelAll() {
while (true) {
var orders = _C(exchange.GetOrders);
if (orders.length == 0) {
break;
}
for (var i = 0; i < orders.length; i++) {
exchange.CancelOrder(orders[i].Id);
}
Sleep(Interval);
}
}
function updateStatus(msg) {
LogStatus("Number of debugging sessions:", Counter.i, "succeeded:", Counter.w, "failed:", Counter.f, "\n"+msg+"#0000ff\n"+new Date());
}
function main() {
if (DisableLog) {
EnableLog(false);
}
CancelAll();
InitAccount = _C(exchange.GetAccount);
Log(InitAccount);
var i = 0;
var locks = 0;
while (true) {
Sleep(Interval);
var depth = _C(exchange.GetDepth);
if (depth.Asks.length === 0 || depth.Bids.length === 0) {
continue;
}
updateStatus("Searching within the elephant... Buy one: " + depth.Bids[0].Price + ", Sell one:" + depth.Asks[0].Price + ", Lock times: " + locks);
var askPrice = 0;
for (i = 0; i < depth.Asks.length; i++) {
if (depth.Asks[i].Amount >= Lot) {
askPrice = depth.Asks[i].Price;
break;
}
}
if (askPrice === 0) {
continue;
}
var elephant = null;
// skip Bids[0]
for (i = 1; i < depth.Bids.length; i++) {
if ((askPrice - depth.Bids[i].Price) > ElephantSpace) {
break;
}
if (depth.Bids[i].Amount >= ElephantAmount) {
elephant = depth.Bids[i];
break;
}
}
if (!elephant) {
locks = 0;
continue;
}
locks++;
if (locks < LockCount) {
continue;
}
locks = 0;
updateStatus("Debug the elephant... The elephant is in gear " + i + ", " + JSON.stringify(elephant));
exchange.Buy(elephant.Price + PennyTick, Lot, "Bids[" + i + "]", elephant);
var ts = new Date().getTime();
while (true) {
Sleep(CheckInterval);
var orders = _C(exchange.GetOrders);
if (orders.length == 0) {
break;
}
if ((new Date().getTime() - ts) > WaitInterval) {
for (var i = 0; i < orders.length; i++) {
exchange.CancelOrder(orders[i].Id);
}
}
}
var account = _C(exchange.GetAccount);
var opAmount = _N(account.Stocks - InitAccount.Stocks);
if (opAmount < 0.001) {
Counter.f++;
Counter.i++;
continue;
}
updateStatus("Successful payment: " + opAmount +", Start taking action...");
exchange.Sell(elephant.Price + (PennyTick * ProfitTick), opAmount);
var success = true;
while (true) {
var depth = _C(exchange.GetDepth);
if (depth.Bids.length > 0 && depth.Bids[0].Price <= (elephant.Price-(STTick*PennyTick))) {
success = false;
updateStatus("Didn't get it, start to stop loss, currently buying one: " + depth.Bids[0].Price);
CancelAll();
account = _C(exchange.GetAccount);
var opAmount = _N(account.Stocks - InitAccount.Stocks);
if (opAmount < 0.001) {
break;
}
exchange.Sell(depth.Bids[0].Price, opAmount);
}
var orders = _C(exchange.GetOrders);
if (orders.length === 0) {
break;
}
Sleep(CheckInterval);
}
if (success) {
Counter.w++;
} else {
Counter.f++;
}
Counter.i++;
var account = _C(exchange.GetAccount);
LogProfit(account.Balance - InitAccount.Balance, account);
}
}
আমি আপনার দেওয়া কৌশল কোড লাইন দ্বারা লাইন বিশ্লেষণ করা হবে আপনি তার অপারেশন বিস্তারিতভাবে বুঝতে সাহায্য করার জন্য.
var Counter = {
i: 0,
w: 0,
f: 0
};
এই কোডটি কাউন্টার নামে একটি বস্তু শুরু করে, যা একটি কৌশল ট্রেডিং পরিসংখ্যান তথ্য ট্র্যাক করতে ব্যবহৃত হয়। বিশেষত এটিতে তিনটি বৈশিষ্ট্য রয়েছেঃ
কৌশল বাস্তবায়নের প্রক্রিয়া চলাকালীন এই বৈশিষ্ট্যগুলি রেকর্ড এবং আপডেট করা হবে।
var InitAccount = null;
কোডের এই লাইনটি InitAccount নামে একটি ভেরিয়েবল শুরু করে, যা কৌশলটি কার্যকর করা শুরু করার সময় অ্যাকাউন্টের তথ্য সংরক্ষণ করবে।
function CancelAll() {
while (true) {
var orders = _C(exchange.GetOrders);
if (orders.length == 0) {
break;
}
for (var i = 0; i < orders.length; i++) {
exchange.CancelOrder(orders[i].Id);
}
Sleep(Interval);
}
}
এটি একটি ফাংশন নামকCancelAll()
, এর উদ্দেশ্য হল বাজারে সমস্ত অপ্রত্যাশিত অর্ডার বাতিল করা। আসুন এর কার্যাবলী ধাপে ধাপে ব্যাখ্যা করিঃ
while (true)
: এটি একটি অসীম লুপ, এটি চলতে থাকবে যতক্ষণ না কোন অসম্পূর্ণ অর্ডার নেই।var orders = _C(exchange.GetOrders)
: এই কোড লাইনটি exchange.GetOrders ফাংশনটি ব্যবহার করে বর্তমান অ্যাকাউন্টে থাকা সমস্ত অপেক্ষমান অর্ডারগুলি পুনরুদ্ধার করে এবং সেগুলি অর্ডার ভেরিয়েবলটিতে সংরক্ষণ করে।if (orders.length == 0)
: এই কোডের লাইনটি কোন অসম্পূর্ণ আদেশের জন্য পরীক্ষা করে। যদি অর্ডার অ্যারের দৈর্ঘ্য 0 হয় তবে এর অর্থ কোন অসম্পূর্ণ আদেশ নেই এবং লুপটি বিরতি পাবে (ব্রেক) ।for (var i = 0; i < orders.length; i++)
: এটি একটি ফর লুপ যা সমস্ত অসম্পূর্ণ আদেশের মাধ্যমে পুনরাবৃত্তি করে।exchange.CancelOrder(orders[i].Id)
: এই কোড লাইনে exchange.CancelOrder ((() ফাংশন ব্যবহার করা হয় যাতে প্রতিটি অর্ডারকে তার আইডি দিয়ে বাতিল করা যায়।Sleep(Interval)
: এই কোড লাইনটি একটি নির্দিষ্ট সময়ের জন্য (মিলিসেকেন্ডে) বিরতি দিয়ে একটি অপেক্ষা সময় প্রবর্তন করে, যাতে অর্ডার বাতিলের অপারেশনটি খুব ঘন ঘন না হয়।এই কোড লাইনে একটি নির্দিষ্ট সময়ের জন্য (মিলিসেকেন্ডে) বিরতিতে অপেক্ষা করার সময়সীমা প্রবর্তন করা হয়, যাতে অর্ডার বাতিলের অপারেশনটি খুব ঘন ঘন না হয়।
function updateStatus(msg) {
LogStatus("Number of debugging sessions:", Counter.i, "succeeded:", Counter.w, "failed:", Counter.f, "\n" + msg + "#0000ff\n" + new Date());
}
এটি একটি ফাংশন নামকupdateStatus(msg)
, যা লেনদেনের স্থিতির তথ্য আপডেট এবং রেকর্ড করতে ব্যবহৃত হয়। এটি একটি এমএসজি প্যারামিটার গ্রহণ করে, যা সাধারণত বর্তমান বাজারের অবস্থা সম্পর্কে তথ্য ধারণ করে। ফাংশনের নির্দিষ্ট ক্রিয়াকলাপগুলির মধ্যে রয়েছেঃ
ব্যবহার করেLogStatus()
কৌশল কার্যকর করার সময় স্ট্যাটাস বারে প্রদর্শিত তথ্য রেকর্ড করার ফাংশন। এটি বাণিজ্য গণনা, সফল গণনা এবং ব্যর্থতার গণনা সম্পর্কে পাঠ্য প্রদর্শন করে।
দ্যmsg
প্যারামিটারটি সংযোজন করা হয়েছে, যা বাজারের বর্তমান অবস্থা সম্পর্কে তথ্য রয়েছে।
বর্তমান টাইমস্ট্যাম্প (new Date()
) সময় সংক্রান্ত তথ্য প্রদর্শনের জন্য সংযোজন করা হয়েছে।
এই ফাংশনটির উদ্দেশ্য কৌশল বাস্তবায়নের সময় পর্যবেক্ষণ এবং বিশ্লেষণের জন্য লেনদেনের স্থিতির তথ্য রেকর্ড এবং আপডেট করা।
function main() {
if (DisableLog) {
EnableLog(false);
}
CancelAll();
InitAccount = _C(exchange.GetAccount);
Log(InitAccount);
var i = 0;
var locks = 0;
while (true) {
Sleep(Interval);
var depth = _C(exchange.GetDepth);
if (depth.Asks.length === 0 || depth.Bids.length === 0) {
continue;
}
updateStatus("Searching within the elephant... Buy one: " + depth.Bids[0].Price + ", Sell one:" + depth.Asks[0].Price + ", Lock times: " + locks);
var askPrice = 0;
for (i = 0; i < depth.Asks.length; i++) {
if (depth.Asks[i].Amount >= Lot) {
askPrice = depth.Asks[i].Price;
break;
}
}
if (askPrice === 0) {
continue;
}
var elephant = null;
// skip Bids[0]
for (i = 1; i < depth.Bids.length; i++) {
if ((askPrice - depth.Bids[i].Price) > ElephantSpace) {
break;
}
if (depth.Bids[i].Amount >= ElephantAmount) {
elephant = depth.Bids[i];
break;
}
}
if (!elephant) {
locks = 0;
continue;
}
locks++;
if (locks < LockCount) {
continue;
}
locks = 0;
updateStatus("Debug the elephant... The elephant is in gear " + i + ", " + JSON.stringify(elephant));
exchange.Buy(elephant.Price + PennyTick, Lot, "Bids[" + i + "]", elephant);
var ts = new Date().getTime();
while (true) {
Sleep(CheckInterval);
var orders = _C(exchange.GetOrders);
if (orders.length == 0) {
break;
}
if ((new Date().getTime() - ts) > WaitInterval) {
for (var i = 0; i < orders.length; i++) {
exchange.CancelOrder(orders[i].Id);
}
}
}
var account = _C(exchange.GetAccount);
var opAmount = _N(account.Stocks - InitAccount.Stocks);
if (opAmount < 0.001) {
Counter.f++;
Counter.i++;
continue;
}
updateStatus("Successful payment: " + opAmount +", Start taking action...");
exchange.Sell(elephant.Price + (PennyTick * ProfitTick), opAmount);
var success = true;
while (true) {
var depth = _C(exchange.GetDepth);
if (depth.Bids.length > 0 && depth.Bids[0].Price <= (elephant.Price-(STTick*PennyTick))) {
success = false;
updateStatus("Didn't get it, start to stop loss, currently buying one: " + depth.Bids[0].Price);
CancelAll();
account = _C(exchange.GetAccount);
var opAmount = _N(account.Stocks - InitAccount.Stocks);
if (opAmount < 0.001) {
break;
}
exchange.Sell(depth.Bids[0].Price, opAmount);
}
var orders = _C(exchange.GetOrders);
if (orders.length === 0) {
break;
}
Sleep(CheckInterval);
}
if (success) {
Counter.w++;
} else {
Counter.f++;
}
Counter.i++;
var account = _C(exchange.GetAccount);
LogProfit(account.Balance - InitAccount.Balance, account);
}
}
এটি প্রধান কার্য সম্পাদন ফাংশনmain()
এর মূল যুক্তিটি এখানে তুলে ধরা হল। এর কার্যক্রমগুলি লাইন দ্বারা লাইন ব্যাখ্যা করা যাকঃ
if (DisableLog)
: এই কোড লাইনটি DisableLog ভেরিয়েবলটি সত্য কিনা তা পরীক্ষা করে এবং যদি তা হয় তবে এটি লগ রেকর্ডিং অক্ষম করবে। এটি নিশ্চিত করার জন্য যে অপ্রয়োজনীয় লগগুলি কৌশল দ্বারা রেকর্ড করা হয় না।
CancelAll()
: পূর্বে ব্যাখ্যা করা CancelAll( ফাংশনটি কল করুন যাতে কোন অসম্পূর্ণ অর্ডার না থাকে।
InitAccount = _C(exchange.GetAccount)
: এই কোড লাইনটি বর্তমান অ্যাকাউন্টের তথ্য পুনরুদ্ধার করে এবং এটি InitAccount ভেরিয়েবলটিতে সংরক্ষণ করে। কৌশলটি কার্যকর হওয়ার সময় এটি অ্যাকাউন্টের অবস্থা রেকর্ড করতে ব্যবহৃত হবে।
var i = 0;
এবংvar locks = 0;
: দুটি ভেরিয়েবল, i এবং locks, যা পরবর্তী কৌশল যুক্তি ব্যবহার করা হবে শুরু করুন।
while (true)
: এটি একটি অসীম লুপ, যা মূলত কৌশলগুলির অবিচ্ছিন্ন সম্পাদনের জন্য ব্যবহৃত হয়।
এরপরে, আমরা মূল কৌশলগত যৌক্তিকতা ব্যাখ্যা করবwhile (true)
লুপ লাইন দ্বারা লাইন.
while (true) {
Sleep(Interval);
var depth = _C(exchange.GetDepth);
if (depth.Asks.length === 0 || depth.Bids.length === 0) {
continue;
}
updateStatus("Searching within the elephant... Buy one: " + depth.Bids[0].Price + ", Sell one:" + depth.Asks[0].Price + ", Lock times: " + locks);
Sleep(Interval)
: এই কোড লাইনটি কৌশলটির এক্সিকিউশন ফ্রিকোয়েন্সি নিয়ন্ত্রণ করার জন্য কৌশলটিকে একটি নির্দিষ্ট সময়ের জন্য ঘুমাতে দেয়। ইন্টারভাল প্যারামিটার ঘুমের ব্যবধান (মিলিসেকেন্ডে) সংজ্ঞায়িত করে।
var depth = _C(exchange.GetDepth)
: বর্তমান বাজারের গভীরতার তথ্য, বিক্রয় আদেশ এবং ক্রয় আদেশের দাম এবং পরিমাণ সহ। এই তথ্য গভীরতা ভেরিয়েবলটিতে সংরক্ষণ করা হবে।
if (depth.Asks.length === 0 || depth.Bids.length === 0)
: এই কোড লাইনটি বাজারের গভীরতার তথ্য পরীক্ষা করে, নিশ্চিত করে যে বিক্রয় আদেশ এবং ক্রয় আদেশ উভয়ই বিদ্যমান। যদি তাদের মধ্যে একটির অস্তিত্ব না থাকে তবে এটি নির্দেশ করে যে বাজারে পর্যাপ্ত ট্রেডিং তথ্য নাও থাকতে পারে, তাই কৌশলটি অপেক্ষা করতে থাকবে।
updateStatus("Searching within the elephant... Buy one: " + depth.Bids[0].Price + ", Sell one:" + depth.Asks[0].Price + ", Lock times: " + locks)
: এই কোড লাইনটি আপডেট স্ট্যাটাস ফাংশনকে কৌশলটির অবস্থা তথ্য আপডেট করতে কল করে। এটি সর্বোচ্চ বিড মূল্য, সর্বনিম্ন জিজ্ঞাসা মূল্য এবং পূর্বে লক করা সময় (লক) সহ বর্তমান বাজারের অবস্থা রেকর্ড করে।
var askPrice = 0;
for (i = 0; i < depth.Asks.length; i++) {
if (depth.Asks[i].Amount >= Lot) {
askPrice = depth.Asks[i].Price;
break;
}
}
if (askPrice === 0) {
continue;
}
var elephant = null;
var askPrice = 0;
: askPrice ভেরিয়েবলটি শুরু করুন, এটি শর্তগুলি পূরণ করে বিক্রয় আদেশের মূল্য সংরক্ষণ করতে ব্যবহৃত হবে।
for (i = 0; i < depth.Asks.length; i++)
: এটি একটি ফর লুপ যা বাজারের বিক্রয় আদেশের মূল্য এবং পরিমাণের তথ্য অতিক্রম করতে ব্যবহৃত হয়।
if (depth.Asks[i].Amount >= Lot)
: লুপে, প্রতিটি বিক্রয় অর্ডারের পরিমাণ নির্দিষ্ট লটের চেয়ে বেশি বা সমান কিনা তা পরীক্ষা করুন (হ্যান্ড কাউন্ট) । যদি তা হয় তবে সেই বিক্রয় অর্ডারের দামটি askPrice এ সংরক্ষণ করুন এবং লুপটি শেষ করুন।
if (askPrice === 0)
: যদি কোন বিক্রয় আদেশ পাওয়া না যায় যা শর্ত পূরণ করে (askPrice এখনও 0), কৌশলটি অপেক্ষা করতে থাকবে এবং পরবর্তী ক্রিয়াকলাপগুলি এড়িয়ে যাবে।
var elephant = null;
: ইলিফ্যান্ট ভেরিয়েবলটি শুরু করুন, এটি
for (i = 1; i < depth.Bids.length; i++) {
if ((askPrice - depth.Bids[i].Price) > ElephantSpace) {
break;
}
if (depth.Bids[i].Amount >= ElephantAmount) {
elephant = depth.Bids[i];
break;
}
}
if (!elephant) {
locks = 0;
continue;
}
locks++;
if (locks < LockCount) {
continue;
}
locks = 0;
প্রথম ক্রয় অর্ডার (বোর্ডস[০]) এড়িয়ে গিয়ে বাজার ক্রয় অর্ডারের মূল্য এবং পরিমাণের তথ্য অনুসরণ করুন।
if ((askPrice - depth.Bids[i].Price) > ElephantSpace)
: বর্তমান বিড মূল্য এবং askPrice এর মধ্যে ফাঁকটি ElephantSpace এর চেয়ে বড় কিনা তা পরীক্ষা করুন। যদি তা হয় তবে এটি ইঙ্গিত দেয় যে এটি
if (depth.Bids[i].Amount >= ElephantAmount)
: বর্তমান ক্রয় অর্ডারের পরিমাণ ElephantAmount এর চেয়ে বড় বা সমান কিনা তা পরীক্ষা করুন। যদি তাই হয়, elephant ভেরিয়েবলের মধ্যে ক্রয় অর্ডার তথ্য সংরক্ষণ করুন।
if (!elephant)
: যদি
locks++
: যদি
if (locks < LockCount)
: লক সময় সংখ্যা প্রয়োজনীয়তা পূরণ করেছে কিনা তা পরীক্ষা করুন (LockCount) । যদি তা না হয়, অপেক্ষা চালিয়ে যান।
updateStatus("Debug the elephant... The elephant is in gear " + i + ", " + JSON.stringify(elephant));
exchange.Buy(elephant.Price + PennyTick, Lot, "Bids[" + i + "]", elephant);
var ts = new Date().getTime();
while (true) {
Sleep(CheckInterval);
var orders = _C(exchange.GetOrders);
if (orders.length == 0) {
break;
}
if ((new Date().getTime() - ts) > WaitInterval) {
for (var i = 0; i < orders.length; i++) {
exchange.CancelOrder(orders[i].Id);
}
}
}
updateStatus("Debug the elephant... The elephant is in gear " + i + ", " + JSON.stringify(elephant))
:
exchange.Buy(elephant.Price + PennyTick, Lot, "Bids[" + i + "]", elephant)
: এক্সচেঞ্জ.কুপ ফাংশনটি ব্যবহার করুন পাওয়া
var ts = new Date().getTime()
: সময়ের ব্যবধানের পরবর্তী গণনার জন্য বর্তমান সময়ের টাইমস্ট্যাম্প পান।
while (true)
: একটি নতুন অসীম লুপ প্রবেশ করান, যা
Sleep(CheckInterval)
: অর্ডার স্ট্যাটাস চেক করার ফ্রিকোয়েন্সি নিয়ন্ত্রণ করার জন্য কৌশলটি কিছুক্ষণের জন্য ঘুমিয়ে থাকে।
var orders = _C(exchange.GetOrders)
: বর্তমান অ্যাকাউন্টের সমস্ত অর্ডার তথ্য পান।
if (orders.length == 0)
: কোন অপূর্ণ অর্ডার আছে কিনা পরীক্ষা করুন, যদি না, লুপ বিরতি।
(new Date().getTime() - ts) > WaitInterval
: বর্তমান সময় এবং যখন
for (var i = 0; i < orders.length; i++)
: সমস্ত অসম্পূর্ণ অর্ডার মাধ্যমে অতিক্রম করুন.
exchange.CancelOrder(orders[i].Id)
: প্রতিটা অসম্পূর্ণ অর্ডার বাতিল করতে exchange.CancelOrder ফাংশন ব্যবহার করুন।
var account = _C(exchange.GetAccount);
var opAmount = _N(account.Stocks - InitAccount.Stocks);
if (opAmount < 0.001) {
Counter.f++;
Counter.i++;
continue;
}
updateStatus("Successful payment: " + opAmount + ", Start taking action...");
exchange.Sell(elephant.Price + (PennyTick * ProfitTick), opAmount);
var success = true;
while (true) {
var depth = _C(exchange.GetDepth);
if (depth.Bids.length > 0 && depth.Bids[0].Price <= (elephant.Price - (STTick * PennyTick))) {
success = false;
updateStatus("Didn't get it, start to stop loss, currently buying one: " + depth.Bids[0].Price);
CancelAll();
account = _C(exchange.GetAccount);
var opAmount = _N(account.Stocks - InitAccount.Stocks);
if (opAmount < 0.001) {
break;
}
exchange.Sell(depth.Bids[0].Price, opAmount);
}
var orders = _C(exchange.GetOrders);
if (orders.length === 0) {
break;
}
Sleep(CheckInterval);
}
if (success) {
Counter.w++;
} else {
Counter.f++;
}
Counter.i++;
var account = _C(exchange.GetAccount);
LogProfit(account.Balance - InitAccount.Balance, account);
}
var account = _C(exchange.GetAccount)
: কারেন্ট অ্যাকাউন্টের তথ্য পান।
var opAmount = _N(account.Stocks - InitAccount.Stocks)
updateStatus("Successful payment: " + opAmount + ", Start taking action...")
:
exchange.Sell(elephant.Price + (PennyTick * ProfitTick), opAmount)
: সফলভাবে কেনা
একটি নতুন অসীম লুপ প্রবেশ করান, বিক্রয় আদেশের জন্য অপেক্ষা করার জন্য ব্যবহৃত।
var depth = _C(exchange.GetDepth)
: বাজারের গভীর তথ্য সংগ্রহ করুন।
if (depth.Bids.length > 0 && depth.Bids[0].Price <= (elephant.Price - (STTick * PennyTick)))
: বাজার গভীরতার তথ্য পরীক্ষা করুন, যদি বাজার মূল্য ইতিমধ্যে স্টপ-লস স্তরে পড়ে থাকে, তাহলে স্টপ-লস অপারেশনটি চালান।
CancelAll()
: পজিশন ঝুঁকি এড়ানোর জন্য সমস্ত অসম্পূর্ণ অর্ডার বাতিল করতে CancelAll( ফাংশনটি কল করুন।
if (opAmount < 0.001)
: ক্রয়ের পরিমাণ আবার পরীক্ষা করুন, যদি এটি 0.001 এর কম হয়, এটি ক্রয় ব্যর্থ হয়েছে, লুপ থেকে বেরিয়ে আসে।
exchange.Sell(depth.Bids[0].Price, opAmount)
: স্টপ লস অপারেশন চালান, বর্তমান বাজারের সর্বনিম্ন মূল্যে অবশিষ্ট সম্পদ বিক্রি করুন।
অবশেষে, লেনদেন সফল হয়েছে কি না তার উপর ভিত্তি করে সফল এবং ব্যর্থ লেনদেনের সংখ্যা আপডেট করুন এবং ট্রেডিং মুনাফা রেকর্ড করুন।
এটি পুরো কৌশলটির লাইন-বাই-লাইন ব্যাখ্যা। এই কৌশলটির মূল ধারণাটি হ'ল বাজারে
সাধারণভাবে, এই কৌশলটি একটি উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং কৌশল যা বাজারের গভীরতার তথ্য ব্যবহার করে বড় বড় ক্রয় আদেশগুলি সনাক্ত করতে এবং স্বল্প সময়ের মধ্যে ক্রয় এবং বিক্রয় লেনদেন সম্পাদন করতে লক্ষ্য করে। এটিতে বাজারের ধ্রুবক পর্যবেক্ষণ এবং দ্রুত ছোট মুনাফা অর্জনের জন্য ক্রয় এবং বিক্রয় ক্রিয়াকলাপের সম্পাদন প্রয়োজন। তবে এটি একটি উচ্চ ঝুঁকিপূর্ণ কৌশল, কারণ এটিতে উল্লেখযোগ্য ক্ষতি এড়াতে ঝুঁকি ব্যবস্থাপনা এবং স্টপ-লস প্রক্রিয়া বিবেচনা করার সময় বাজারের ওঠানামাগুলিতে দ্রুত প্রতিক্রিয়া প্রয়োজন।
অনুগ্রহ করে মনে রাখবেন যে কৌশলটি নির্দিষ্ট বাজার এবং ট্রেডিং প্ল্যাটফর্মের উপর ভিত্তি করে। বিভিন্ন বাজার এবং এক্সচেঞ্জের জন্য, উপযুক্ত সমন্বয় এবং অপ্টিমাইজেশান প্রয়োজন হতে পারে। ব্যবহারিক প্রয়োগে, বিনিয়োগকারীদের তাদের বিনিয়োগের লক্ষ্য এবং ঝুঁকি সহনশীলতার সাথে সামঞ্জস্যপূর্ণ তা নিশ্চিত করার জন্য কৌশলটির কার্যকারিতা সাবধানে পরীক্ষা এবং মূল্যায়ন করতে হবে।
আপনি যখন কৌশলটি চালিয়ে যাবেন, এটি বারবার নিম্নলিখিত অপারেশনগুলি সম্পাদন করবেঃ
প্রথমত, কৌশলটি বিক্রয় আদেশ এবং ক্রয়ের আদেশের বর্তমান পরিস্থিতি বোঝার জন্য বাজারের গভীর তথ্য পরীক্ষা করবে।
এরপরে, কৌশলটি মানদণ্ডগুলি পূরণ করে এমন বিক্রয় আদেশগুলি খুঁজে বের করার চেষ্টা করবে, বিশেষত লটের চেয়ে বেশি বা সমান পরিমাণে বিক্রয় আদেশগুলি। যদি একটি যোগ্য বিক্রয় অর্ডার পাওয়া যায় তবে বিক্রয় আদেশের দাম askPrice হিসাবে রেকর্ড করা হবে।
তারপর, কৌশলটি
যদি পর্যাপ্ত সংখ্যক
সমগ্র কৌশলটি যতটা সম্ভব
পেনি জাম্প কৌশলটি উচ্চ-ফ্রিকোয়েন্সি ট্রেডিংয়ের একটি সাধারণ উদাহরণ, যা বাজারের অংশগ্রহণকারীদের মধ্যে সূক্ষ্ম খেলা এবং প্রতিযোগিতা প্রদর্শন করে। এই কৌশলটি ক্রিপ্টোকারেন্সি বাজারে বিশেষত বিশিষ্ট কারণ এর বড় ওঠানামা, যেখানে প্রাতিষ্ঠানিক বিনিয়োগকারী এবং উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীরা সবাই দ্রুত মুনাফা অর্জন করছে। তবে এটি বাজারে চ্যালেঞ্জের সাথেও পূর্ণ করে তোলে, প্রতিযোগিতামূলক সুবিধা বজায় রাখতে কৌশলগুলির ধ্রুবক অভিযোজন এবং সমন্বয় প্রয়োজন। এই তীব্র প্রতিযোগিতামূলক বিশ্বে, কেবলমাত্র সেই ব্যবসায়ীরা যারা বাজারের মাইক্রোস্ট্রাকচারটি উপলব্ধি করতে এবং দ্রুত প্রতিক্রিয়া জানাতে ভাল তারা সাফল্য অর্জন করতে পারে।