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

লেখক:ছোট্ট স্বপ্ন, সৃষ্টিঃ ২০২৩-১১-০৩ 17:36:56, আপডেটঃ ২০২৩-১১-০৩ 22:19:32

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("调戏次数:", Counter.i, "成功:", Counter.w, "失败:", 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("搜索大象中.... 买一: " + depth.Bids[0].Price + ",  卖一:" + depth.Asks[0].Price + ", 锁定次数: " + 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("调戏大象中....大象在第" + 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("买单得手: " + opAmount +", 开始出手...");
        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("没有得手, 开始止损, 当前买一: " + 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函数获取当前账户所有挂出的订单,并将它们存储在orders变量中。
  • if (orders.length == 0): এই কোডের লাইনটি অসমাপ্ত অর্ডার আছে কিনা তা পরীক্ষা করে। যদি orders অ্যারের দৈর্ঘ্য 0 হয় তবে এর অর্থ হল যে অসমাপ্ত অর্ডার নেই, লুপটি বিরতি পাবে।
  • for (var i = 0; i < orders.length; i++): এটি একটি ফর লুপ, যা সমস্ত অসম্পূর্ণ অর্ডার জুড়ে চলে।
  • exchange.CancelOrder(orders[i].Id): এই কোড লাইনটি exchange.CancelOrder () ফাংশন ব্যবহার করে অর্ডারের আইডি দিয়ে প্রতিটি অর্ডার বাতিল করে।
  • Sleep(Interval): এই কোডের লাইনটি একটি অপেক্ষা চক্র চালু করে, যা একটি নির্দিষ্ট সময়ের জন্য অপেক্ষা করে (মিলিসেকেন্ডের একক হিসাবে) যাতে অর্ডার বাতিল করার অপারেশনটি খুব বেশি ঘন ঘন না হয় তা নিশ্চিত করে।

এই ফাংশনটির উদ্দেশ্য হল নিশ্চিত করা যে প্রধান নীতিটি কার্যকর হওয়ার আগে কোন অসম্পূর্ণ অর্ডার নেই, যাতে প্রধান নীতির কার্যকরকরণে হস্তক্ষেপ করা এড়ানো যায়।

function updateStatus(msg) {
    LogStatus("调戏次数:", Counter.i, "成功:", Counter.w, "失败:", Counter.f, "\n" + msg + "#0000ff\n" + new Date());
}

এটি একটি নামকরণupdateStatus(msg)একটি ফাংশন যা লেনদেনের স্থিতির তথ্য আপডেট করে এবং এটি রেকর্ড করে। এটি একটি 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("搜索大象中.... 买一: " + depth.Bids[0].Price + ",  卖一:" + depth.Asks[0].Price + ", 锁定次数: " + 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("调戏大象中....大象在第" + 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("买单得手: " + opAmount +", 开始出手...");
        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("没有得手, 开始止损, 当前买一: " + 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): এই কোডটি ডিসএবললগ ভেরিয়েবলটি সত্য কিনা তা পরীক্ষা করে এবং যদি তাই হয় তবে লগ রেকর্ডিংকে অক্ষম করে দেয়। এটি নিশ্চিত করার জন্য যে নীতিটি অপ্রয়োজনীয় লগ রেকর্ড করবে না।

  • 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("搜索大象中.... 买一: " + depth.Bids[0].Price + ",  卖一:" + depth.Asks[0].Price + ", 锁定次数: " + locks);
  • Sleep(Interval): এই কোড লাইনটি নীতির কার্যকারিতা নিয়ন্ত্রণের জন্য একটি নির্দিষ্ট সময়ের জন্য নিষ্ক্রিয় করে দেয়। Interval পরামিতিটি নিষ্ক্রিয় সময়ের ব্যবধানকে সংজ্ঞায়িত করে ((মিলিসেকেন্ডে) ।) ।

  • var depth = _C(exchange.GetDepth): বর্তমান বাজার গভীরতার তথ্য, বিক্রয় এবং ক্রয়ের আদেশের দাম এবং পরিমাণ সহ। এই তথ্য গভীরতার ভেরিয়েবলগুলিতে সংরক্ষণ করা হবে।

  • if (depth.Asks.length === 0 || depth.Bids.length === 0): এই কোড লাইনটি বাজারের গভীরতার তথ্য পরীক্ষা করে এবং নিশ্চিত করে যে বিক্রয় ও ক্রয় উভয়ই বিদ্যমান। যদি এর মধ্যে একটির অস্তিত্ব না থাকে তবে এটি বোঝায় যে বাজারে পর্যাপ্ত লেনদেনের তথ্য নাও থাকতে পারে, তবে কৌশলটি অপেক্ষা করতে থাকবে।

  • updateStatus("搜索大象中.... 买一: " + depth.Bids[0].Price + ", 卖一:" + depth.Asks[0].Price + ", 锁定次数: " + locks): এই কোড লাইনটি update Status ফাংশনকে কল করে, নীতির আপডেটের অবস্থা সম্পর্কে তথ্য দেয়। এটি বর্তমান বাজারের অবস্থা রেকর্ড করে, যার মধ্যে একটি কিনুন, একটি বিক্রি করুন, এবং আগে লক করা হয়েছে এমন সংখ্যা ((লক) ।

    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 এখনও ০), তাহলে নীতিটি অপেক্ষা করে চলবে এবং পরবর্তী অপারেশনটি এড়িয়ে যাবে।

  • 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;

বাজারে বিডের দাম এবং পরিমাণ সম্পর্কে তথ্য সন্ধান করুন এবং প্রথম বিডটি (Bids[0]) এড়িয়ে যান।

  • if ((askPrice - depth.Bids[i].Price) > ElephantSpace): বর্তমান মূল্য এবং জিজ্ঞাসা মূল্যের মধ্যে পার্থক্যটি ইলেফ্যান্টস্পেসের চেয়ে বড় কিনা তা পরীক্ষা করে দেখুন। যদি হ্যাঁ হয়, তবে ইলেফ্যান্টসপেসের কাছ থেকে যথেষ্ট দূরে রয়েছে এবং কৌশলটি আর অনুসন্ধান চালিয়ে যায় না।

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

  • if (!elephant): যদি পোকামাকড় পোকামাকড় না পাওয়া যায়, তাহলে লকিং সংখ্যাসূচক locks পুনরায় সেট করা হবে 0 এবং অপেক্ষা চালিয়ে যান.

locks++: যদি হাতিঘাটি পাওয়া যায় তবে লকিংয়ের সংখ্যা বাড়বে। এটি নিশ্চিত করার জন্য যে একটি সময়সীমার মধ্যে একাধিকবার হাতিঘাটির অস্তিত্ব নিশ্চিত করার পরে নীতিটি পুনরায় কার্যকর করা হবে।

  • if (locks < LockCount): লক কাউন্টের প্রয়োজনীয়তা পূরণ হয়েছে কিনা তা পরীক্ষা করে দেখুন; যদি তা না হয় তবে অপেক্ষা করুন।
    updateStatus("调戏大象中....大象在第" + 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("调戏大象中....大象在第" + i + "档, " + JSON.stringify(elephant)): আপডেট স্ট্যাটাস ফাংশনটি কল করুন, যা পলিসির বর্তমান অবস্থা রেকর্ড করে, যার মধ্যে পাওয়া পোকামাকড়ের অবস্থান এবং সম্পর্কিত তথ্য অন্তর্ভুক্ত রয়েছে। এটি পলিসির স্থিতি বারটিতে প্রদর্শিত হবে।

  • exchange.Buy(elephant.Price + PennyTick, Lot, "Bids[" + i + "]", elephant): এক্সচেঞ্জ.বয় ফাংশন ব্যবহার করে পাওয়া পোকামাকড়ের পোকামাকড় কিনুন.পরিচয়েঃ elephant.Price + PennyTick, ক্রয়ের পরিমাণঃ Lot, এবং ক্রয়ের ক্রিয়াকলাপটি "Bids[" + i + ] পোকামাকড়" হিসাবে বর্ণনা করা হয়।

  • 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("买单得手: " + opAmount + ", 开始出手...");
    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("没有得手, 开始止损, 当前买一: " + 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("买单得手: " + opAmount + ", 开始出手...")এদিকে, বাংলাদেশের বিভিন্ন অঞ্চলে, বিশেষ করে বাংলাদেশে, এ ধরনের দুর্ঘটনা ঘটেছে।

  • 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 হিসাবে রেকর্ড করা হবে।

৩। তারপর, কৌশলটি ইলিফ্যান্ট পুকুরের সন্ধান করতে থাকে (বহু সংখ্যক পেমেন্ট) ⇒ এটি বাজারের সমস্ত পেমেন্ট জুড়ে যায় এবং প্রথম পেমেন্ট (সাধারণত সর্বোচ্চ দামের পেমেন্ট) এড়িয়ে যায় ⇒ যদি যোগ্য ইলিফ্যান্ট পুকুর পাওয়া যায় তবে ইলিফ্যান্ট পুকুরের তথ্য রেকর্ড করা হবে এবং লকিংয়ের সংখ্যা বাড়ানো হবে ⇒

৪। যদি ধারাবাহিকভাবে পর্যাপ্ত সংখ্যক ইলিফ্যান্ট ইলেকট্রন পাওয়া যায় (LockCount প্যারামিটার দ্বারা নিয়ন্ত্রিত), তবে কৌশলটি নিম্নলিখিত অপারেশনগুলি আরও সম্পাদন করেঃ

  • আপডেট স্ট্যাটাস ফাংশনটি কল করুন, যা হাতির পুকুরের অবস্থান এবং সম্পর্কিত তথ্য রেকর্ড করে।
  • এক্সচেঞ্জ.বয় ফাংশন ব্যবহার করে ইলিফ্যান্ট ইলিফ্যান্ট কিনুন, দামঃ ইলিফ্যান্ট। মূল্যঃ পেনিটিক, পরিমাণঃ লট।
  • একটি নতুন অনন্ত চক্র শুরু করুন, যা ক্রয়ের আদেশের অপেক্ষায় রয়েছে।
  • অর্ডার স্থিতি পরীক্ষা করে, যদি অর্ডারটি সম্পন্ন হয় তবে লুপটি ছাড়ুন।
  • যদি অপেক্ষা সময় সেট করা অপেক্ষা সময়ের (Wait Interval) অতিক্রম করে, তাহলে সমস্ত অবশিষ্ট অর্ডার বাতিল করুন।
  • সফল ক্রয়ের পর অ্যাকাউন্টের সম্পদের পরিবর্তন গণনা করা হয়, যদি পরিবর্তন 0.001 এর চেয়ে কম হয়, তাহলে ক্রয়টি ব্যর্থ হয়, ব্যর্থতার সংখ্যা বৃদ্ধি করে এবং পরবর্তী চক্রটি চালিয়ে যায়।
  • ইলেকট্রনিক্স ডেস্কঃ ইলেকট্রনিক্স ডেস্কঃ ইলেকট্রনিক্স ডেস্কঃ ইলেকট্রনিক্স ডেস্কঃ ইলেকট্রনিক্স ডেস্কঃ

৫. পরবর্তীতে, নীতিটি একটি নতুন, অসীম লুপে চলে যায়, যা বিক্রয় অপারেশনের জন্য অপেক্ষা করার জন্য ব্যবহৃত হয়। এই লুপে, এটি নিম্নলিখিত অপারেশনগুলি সম্পাদন করেঃ

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

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

সমাপ্তি

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


আরো