রিসোর্স লোড হচ্ছে... লোডিং...

উচ্চ ফ্রিকোয়েন্সি ট্রেডিং কৌশল বিশ্লেষণ - পেনি জাম্প

লেখক:এফএমজেড-লিডিয়া, তৈরিঃ ২০২৩-১১-০৭ ১০ঃ৪৪ঃ২০, আপডেটঃ ২০২৪-০১-০১ ১২ঃ১৯ঃ৪৩

img

উচ্চ ফ্রিকোয়েন্সি ট্রেডিং একটি চ্যালেঞ্জিং এবং প্রতিযোগিতামূলক ক্ষেত্র যা দ্রুত বাণিজ্য সম্পাদন এবং বাজারের মাইক্রোস্ট্রাকচারের সংবেদনশীল অন্তর্দৃষ্টিগুলির উপর নির্ভর করে। একটি উল্লেখযোগ্য কৌশল হ'ল পেনি জাম্প, যা ছোট তবে ঘন ঘন মুনাফা অর্জনের জন্য বাজারে হাতি শোষণে মনোনিবেশ করে। এই নিবন্ধে, আমরা পেনি জাম্প কৌশলটি কীভাবে কাজ করে তা বিশদভাবে ব্যাখ্যা করব, এর কোডের বিশদ বিশদে গভীরভাবে গভীরভাবে, যাতে নতুনরা এটি কীভাবে কাজ করে তা বুঝতে পারে।

পেনি জাম্প কৌশল বোঝা

স্টক মার্কেটে, হাতি সাধারণত সেই প্রাতিষ্ঠানিক বিনিয়োগকারীদের বোঝায় যারা বিপুল সংখ্যক শেয়ার কিনতে বা বিক্রি করতে চায় তবে বাজারের মূল্যে বাণিজ্য করতে ইচ্ছুক নয়। পরিবর্তে, তারা তাদের উদ্দেশ্যগুলি নির্দেশ করতে বাজারে প্রচুর পরিমাণে সীমা অর্ডার, অর্থাৎ অপেক্ষমান অর্ডারগুলি ঝুলতে পছন্দ করে। এই আচরণটি বাজারে ব্যাপক মনোযোগ আকর্ষণ করেছে, কারণ বড় লেনদেনের বাজারে উল্লেখযোগ্য প্রভাব থাকতে পারে।

উদাহরণস্বরূপ, ধরুন একটি স্টক মার্কেটের প্রাথমিক গভীরতা ছিল এইরকমঃ ২০০.০১ ডলার x ১.০৩ ডলার.২০০. তারপর একটি হাতি প্রবেশ করে এবং ৩০০০ শেয়ারের জন্য ১.০১ ডলার প্রতিতে একটি ক্রয় অর্ডার দেয়। এই সময়ে, মার্কেটের গভীরতা ৩,২০০.০১ ডলার x ১.০৩ ডলার.২০০ তে পরিবর্তন হবে। এই পদক্ষেপটি একটি হাতি চালু করার মতো, যা বাজারের অন্যান্য অংশগ্রহণকারীদের ফোকাস হয়ে যায়।

  • প্রতিযোগিতামূলক বাজার উচ্চ ফ্রিকোয়েন্সি ট্রেডারদের জন্য, তাদের মুনাফা মূলত বাজারের মাইক্রোস্ট্রাকচার বিশ্লেষণ থেকে আসে অন্য ব্যবসায়ীদের অভিপ্রায় নিয়ে জল্পনা করার জন্য। একবার একটি বড় খেলোয়াড় উপস্থিত হলে, উচ্চ ফ্রিকোয়েন্সি ব্যবসায়ীরা ক্ষুদ্র মূল্যের ওঠানামা ক্যাপচার করার জন্য দ্রুত অবস্থান স্থাপন করবে। তাদের লক্ষ্য স্বল্প সময়ের মধ্যে ঘন ঘন বাণিজ্য করা এবং ছোট তবে সমষ্টিগত মুনাফা জমে থাকা।

  • হাতির দ্বন্দ্ব যদিও হাতিরা বাজারে বড় আকারে কাজ করতে চায়, তাদের কর্মগুলি তাদের ট্রেডিং অভিপ্রায়গুলিও প্রকাশ করে, তাদের উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীদের লক্ষ্য করে। উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীরা সময়ের আগে অবস্থান প্রতিষ্ঠার চেষ্টা করে এবং তারপরে মূল্যের ওঠানামা থেকে লাভবান হয়। বাজারে হাতির উপস্থিতি প্রতিযোগিতামূলক বাজারে প্রতিক্রিয়া সৃষ্টি করতে পারে, যার ফলে তাদের ট্রেডিং কৌশলগুলি প্রভাবিত হয়।

  • বাজারে প্রতারণা প্রকৃতপক্ষে, বড় প্রাতিষ্ঠানিক বিনিয়োগকারীরা সাধারণত বাজারে প্রচুর পরিমাণে ক্রয় বা বিক্রয় আদেশ দেয় না, কারণ এই জাতীয় আচরণ বাজারের অন্যান্য অংশগ্রহণকারীদের প্রতিরোধ ব্যবস্থা গ্রহণ বা এমনকি বাজারকে পরিচালনা করতে পারে। অতএব, তারা বিভ্রম তৈরি করার কৌশল গ্রহণ করতে পারে, ক্ষেত্রটিতে উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীদের আকর্ষণ করতে পারে এবং তারপরে দামের ওঠানামা থেকে লাভ অর্জনের জন্য দ্রুত বিক্রি বা কিনতে পারে।

পেনি জাম্প কৌশলটির মূল ধারণা

পেনি জাম্প কৌশলটির মূল ধারণাটি হ'ল একবার বড় খেলোয়াড় বাজারে উপস্থিত হলে এবং একটি নির্দিষ্ট মূল্যকে সমর্থন করে (যেমন $ 1.01), উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীরা দ্রুত তাদের বিডটি এক সেন্ট বাড়িয়ে তুলবে, উদাহরণস্বরূপ, $ 1.02 এ। এর কারণ হ'ল উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীরা বুঝতে পারে যে কোনও বড় খেলোয়াড়ের উপস্থিতির অর্থ এই মূল্য স্তরে শক্তিশালী ক্রয় সমর্থন রয়েছে, তাই তারা দাম বৃদ্ধির আশায় ঘনিষ্ঠভাবে অনুসরণ করার চেষ্টা করে। যখন দামটি প্রকৃতপক্ষে $ 1.03 x $ 1.05-এ বৃদ্ধি পায়, উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীরা দ্রুত বিক্রি করতে পারে এবং $ 0.01 মুনাফা অর্জন করতে পারে।

শুধু তাই নয়, উচ্চ-ফ্রিকোয়েন্সি ট্রেডাররা ক্রয়ের পরে মুনাফা অর্জন করতে পারে, এমনকি যদি দাম না বেড়ে যায়, কারণ তারা জানে যে বড় খেলোয়াড়টি বেস মূল্যকে সমর্থন করেছে; সুতরাং তারা দ্রুত এই বড় খেলোয়াড়কে তাদের স্টক বিক্রি করতে পারে এবং ক্ষুদ্রতর সালিশ লাভ করতে পারে।

পেনি জাম্প কৌশল কোড বিশ্লেষণ

কৌশল উৎস কোডঃ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
};

এই কোডটি কাউন্টার নামে একটি বস্তু শুরু করে, যা একটি কৌশল ট্রেডিং পরিসংখ্যান তথ্য ট্র্যাক করতে ব্যবহৃত হয়। বিশেষত এটিতে তিনটি বৈশিষ্ট্য রয়েছেঃ

  • i: লেনদেনের মোট সংখ্যা।
  • w: সফল লেনদেনের সংখ্যা।
  • f: ব্যর্থ লেনদেনের সংখ্যা।

কৌশল বাস্তবায়নের প্রক্রিয়া চলাকালীন এই বৈশিষ্ট্যগুলি রেকর্ড এবং আপডেট করা হবে।

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 এর চেয়ে বড় কিনা তা পরীক্ষা করুন। যদি তা হয় তবে এটি ইঙ্গিত দেয় যে এটি elephant থেকে যথেষ্ট দূরে এবং কৌশলটি আর অনুসন্ধান চালিয়ে যাবে না।

  • if (depth.Bids[i].Amount >= ElephantAmount): বর্তমান ক্রয় অর্ডারের পরিমাণ ElephantAmount এর চেয়ে বড় বা সমান কিনা তা পরীক্ষা করুন। যদি তাই হয়, elephant ভেরিয়েবলের মধ্যে ক্রয় অর্ডার তথ্য সংরক্ষণ করুন।

  • if (!elephant): যদি হাতি পাওয়া না যায়, লক গণনা 0 এ পুনরায় সেট করুন এবং অপেক্ষা চালিয়ে যান।

  • 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)): হাতি এর গিয়ার অবস্থান এবং সম্পর্কিত তথ্য সহ কৌশলটির বর্তমান অবস্থা রেকর্ড করতে updateStatus ফাংশনটি কল করুন। এটি কৌশলটির স্থিতি বারে প্রদর্শিত হবে।

  • 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: বর্তমান সময় এবং যখন elephant কেনা হয়েছিল তার মধ্যে সময়ের ব্যবধান গণনা করুন। যদি এটি 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) হাতি কেনার পর অ্যাকাউন্ট সম্পদ পরিবর্তন গণনা করুন। যদি পরিবর্তন 0.001 কম হয়, এটি ক্রয় ব্যর্থ হয়েছে যে ইঙ্গিত, ব্যর্থতা সংখ্যা বৃদ্ধি এবং পরবর্তী লুপ অবিরত।

  • 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): স্টপ লস অপারেশন চালান, বর্তমান বাজারের সর্বনিম্ন মূল্যে অবশিষ্ট সম্পদ বিক্রি করুন।

অবশেষে, লেনদেন সফল হয়েছে কি না তার উপর ভিত্তি করে সফল এবং ব্যর্থ লেনদেনের সংখ্যা আপডেট করুন এবং ট্রেডিং মুনাফা রেকর্ড করুন।

এটি পুরো কৌশলটির লাইন-বাই-লাইন ব্যাখ্যা। এই কৌশলটির মূল ধারণাটি হ'ল বাজারে হাতি (বড় কিনার অর্ডার) খুঁজে পাওয়া, ছোট লাভ অর্জনের জন্য সেগুলি কেনা এবং বিক্রি করা। এতে কৌশলটি সামঞ্জস্য করার জন্য লট, ত্রুটি পুনরায় চেষ্টা ব্যবধান (অন্তর), হাতি পরিমাণ, হাতি স্থান ইত্যাদির মতো বেশ কয়েকটি গুরুত্বপূর্ণ পরামিতি অন্তর্ভুক্ত রয়েছে।

সাধারণভাবে, এই কৌশলটি একটি উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং কৌশল যা বাজারের গভীরতার তথ্য ব্যবহার করে বড় বড় ক্রয় আদেশগুলি সনাক্ত করতে এবং স্বল্প সময়ের মধ্যে ক্রয় এবং বিক্রয় লেনদেন সম্পাদন করতে লক্ষ্য করে। এটিতে বাজারের ধ্রুবক পর্যবেক্ষণ এবং দ্রুত ছোট মুনাফা অর্জনের জন্য ক্রয় এবং বিক্রয় ক্রিয়াকলাপের সম্পাদন প্রয়োজন। তবে এটি একটি উচ্চ ঝুঁকিপূর্ণ কৌশল, কারণ এটিতে উল্লেখযোগ্য ক্ষতি এড়াতে ঝুঁকি ব্যবস্থাপনা এবং স্টপ-লস প্রক্রিয়া বিবেচনা করার সময় বাজারের ওঠানামাগুলিতে দ্রুত প্রতিক্রিয়া প্রয়োজন।

অনুগ্রহ করে মনে রাখবেন যে কৌশলটি নির্দিষ্ট বাজার এবং ট্রেডিং প্ল্যাটফর্মের উপর ভিত্তি করে। বিভিন্ন বাজার এবং এক্সচেঞ্জের জন্য, উপযুক্ত সমন্বয় এবং অপ্টিমাইজেশান প্রয়োজন হতে পারে। ব্যবহারিক প্রয়োগে, বিনিয়োগকারীদের তাদের বিনিয়োগের লক্ষ্য এবং ঝুঁকি সহনশীলতার সাথে সামঞ্জস্যপূর্ণ তা নিশ্চিত করার জন্য কৌশলটির কার্যকারিতা সাবধানে পরীক্ষা এবং মূল্যায়ন করতে হবে।

আপনি যখন কৌশলটি চালিয়ে যাবেন, এটি বারবার নিম্নলিখিত অপারেশনগুলি সম্পাদন করবেঃ

  1. প্রথমত, কৌশলটি বিক্রয় আদেশ এবং ক্রয়ের আদেশের বর্তমান পরিস্থিতি বোঝার জন্য বাজারের গভীর তথ্য পরীক্ষা করবে।

  2. এরপরে, কৌশলটি মানদণ্ডগুলি পূরণ করে এমন বিক্রয় আদেশগুলি খুঁজে বের করার চেষ্টা করবে, বিশেষত লটের চেয়ে বেশি বা সমান পরিমাণে বিক্রয় আদেশগুলি। যদি একটি যোগ্য বিক্রয় অর্ডার পাওয়া যায় তবে বিক্রয় আদেশের দাম askPrice হিসাবে রেকর্ড করা হবে।

  3. তারপর, কৌশলটি হাতি (বড় পরিমাণে ক্রয় আদেশ) অনুসন্ধান চালিয়ে যাবে। এটি বাজারের ক্রয় আদেশগুলি অতিক্রম করবে, প্রথমটি (সাধারণত সর্বোচ্চ মূল্যের ক্রয় আদেশ) এড়িয়ে যাবে। যদি এটি হাতি খুঁজে পায় যা মানদণ্ড পূরণ করে, এটি হাতি সম্পর্কে তথ্য রেকর্ড করবে এবং লকগুলি বাড়িয়ে তুলবে।

  4. যদি পর্যাপ্ত সংখ্যক হাতি পরপর পাওয়া যায় (লককাউন্ট প্যারামিটার দ্বারা নিয়ন্ত্রিত), কৌশলটি আরও নিম্নলিখিত ক্রিয়াকলাপগুলি সম্পাদন করবেঃ

  • হাতি এর গিয়ার এবং সংশ্লিষ্ট তথ্য রেকর্ড করার জন্য updateStatus ফাংশনটি কল করুন।
  • এক্সচেঞ্জ.কুপ ফাংশন ব্যবহার করে একটি elephant কিনুন, elephant.Price + PennyTick এর ক্রয় মূল্য এবং লটের পরিমাণ সহ।
  • ক্রয় আদেশের জন্য অপেক্ষা করার জন্য একটি নতুন অসীম লুপ শুরু করুন।
  • অর্ডার স্ট্যাটাস চেক করুন, যদি সম্পন্ন হয়, লুপ থেকে বেরিয়ে আসুন।
  • যদি অপেক্ষা সময় নির্ধারিত সময়সীমা অতিক্রম করে (WaitInterval), তাহলে সমস্ত অসম্পূর্ণ অর্ডার বাতিল করুন।
  • সফল ক্রয়ের পরে অ্যাকাউন্ট সম্পদ পরিবর্তন গণনা করুন। যদি পরিবর্তন 0.001 এর চেয়ে কম হয়, এটি ক্রয় ব্যর্থ হয়েছে তা নির্দেশ করে; ব্যর্থতার সংখ্যা বৃদ্ধি করুন এবং পরবর্তী লুপ চালিয়ে যান।
  • হাতি কেনার সফলতা সম্পর্কে তথ্য রেকর্ড করুন, ক্রয়কৃত পরিমাণ সহ।
  1. এরপরে, কৌশলটি একটি নতুন অসীম লুপে প্রবেশ করতে থাকবে, বিক্রয় ক্রিয়াকলাপের সম্পাদনের জন্য অপেক্ষা করছে। এই লুপে, এটি নিম্নলিখিত ক্রিয়াকলাপগুলি সম্পাদন করবেঃ
  • বাজারের গভীরতার তথ্য সংগ্রহ করুন, বাজার মূল্য ইতিমধ্যে স্টপ-লস স্তরে পৌঁছেছে কিনা তা পরীক্ষা করুন।
  • যদি বাজার মূল্য স্টপ লস স্তরের নিচে পড়ে যায়, তাহলে স্টপ লস অপারেশন করা হবে, অর্থাৎ অবশিষ্ট সম্পদ বিক্রি করা হবে।
  • পজিশন ঝুঁকি কমাতে সমস্ত অসম্পূর্ণ অর্ডার বাতিল করতে CancelAll ফাংশনটি কল করুন।
  • একটি সফল ক্রয়ের পরে অ্যাকাউন্টের সম্পদ পরিবর্তন পুনরায় পরীক্ষা করুন। যদি পরিবর্তন 0.001 এর চেয়ে কম হয় তবে এটি নির্দেশ করে যে ক্রয় ব্যর্থ হয়েছে এবং লুপ থেকে বেরিয়ে আসে।
  • অবশেষে, লেনদেনটি সফল হয়েছে কি না তা রেকর্ড করুন এবং লেনদেনের ফলাফলের ভিত্তিতে সাফল্য এবং ব্যর্থতার সংখ্যা আপডেট করুন।

সমগ্র কৌশলটি যতটা সম্ভব হাতি ধরতে এবং ছোট মুনাফা অর্জনের জন্য উপরোক্ত ক্রিয়াকলাপগুলি অবিচ্ছিন্নভাবে সম্পাদন করে। এটি একটি উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং কৌশল যা বাজারের পরিবর্তনের দ্রুত প্রতিক্রিয়া প্রয়োজন, পাশাপাশি মূলধন সুরক্ষার জন্য ঝুঁকি ব্যবস্থাপনা এবং স্টপ-লস প্রক্রিয়াগুলি বিবেচনা করে। বিনিয়োগকারীদের এই কৌশলটি ব্যবহার করা সাবধানে বিবেচনা করা উচিত, বিশেষত অত্যন্ত অস্থির বাজারে।

সংক্ষিপ্তসার

পেনি জাম্প কৌশলটি উচ্চ-ফ্রিকোয়েন্সি ট্রেডিংয়ের একটি সাধারণ উদাহরণ, যা বাজারের অংশগ্রহণকারীদের মধ্যে সূক্ষ্ম খেলা এবং প্রতিযোগিতা প্রদর্শন করে। এই কৌশলটি ক্রিপ্টোকারেন্সি বাজারে বিশেষত বিশিষ্ট কারণ এর বড় ওঠানামা, যেখানে প্রাতিষ্ঠানিক বিনিয়োগকারী এবং উচ্চ-ফ্রিকোয়েন্সি ব্যবসায়ীরা সবাই দ্রুত মুনাফা অর্জন করছে। তবে এটি বাজারে চ্যালেঞ্জের সাথেও পূর্ণ করে তোলে, প্রতিযোগিতামূলক সুবিধা বজায় রাখতে কৌশলগুলির ধ্রুবক অভিযোজন এবং সমন্বয় প্রয়োজন। এই তীব্র প্রতিযোগিতামূলক বিশ্বে, কেবলমাত্র সেই ব্যবসায়ীরা যারা বাজারের মাইক্রোস্ট্রাকচারটি উপলব্ধি করতে এবং দ্রুত প্রতিক্রিয়া জানাতে ভাল তারা সাফল্য অর্জন করতে পারে।


আরো