ہائی فریکوئنسی ٹریڈنگ کی حکمت عملی تجزیہ - پینی جمپ

مصنف:چھوٹا سا خواب, تخلیق: 2023-11-03 17:36:56, تازہ کاری: 2023-11-03 22:19:32

img

ہائی فریکوئنسی ٹریڈنگ ایک چیلنج اور مسابقتی شعبہ ہے جو تیزی سے ٹریڈنگ کے نفاذ اور مارکیٹ کی خوردبین ساخت کے بارے میں حساس بصیرت پر انحصار کرتا ہے۔ ایک مشہور حکمت عملی پینی جمپ ہے ، جو مارکیٹ میں "ہاتھیوں" کو استعمال کرنے پر مرکوز ہے تاکہ چھوٹے لیکن بار بار منافع حاصل کیا جاسکے۔ اس مضمون میں ہم پینی جمپ حکمت عملی کے کام کرنے کا طریقہ تفصیل سے بتائیں گے ، جبکہ حکمت عملی کے کوڈ کی تفصیلات میں گہرائی میں جائیں گے تاکہ ابتدائی افراد کو یہ سمجھنے میں مدد مل سکے کہ یہ کیسے کام کرتا ہے۔

پینی جمپ کی حکمت عملی کو سمجھنا

اسٹاک مارکیٹوں میں ، "الیفینٹ" عام طور پر ان ادارہ جاتی سرمایہ کاروں کا حوالہ دیتا ہے جو بڑی تعداد میں اسٹاک خریدنا یا بیچنا چاہتے ہیں لیکن مارکیٹ کی قیمت پر تجارت کرنے کے لئے تیار نہیں ہیں۔ اس کے بجائے ، وہ مارکیٹ میں بڑی تعداد میں محدود فہرستیں ، یا فہرستیں ، لگانے کا انتخاب کرتے ہیں تاکہ ان کے ارادے کا اظہار کیا جاسکے۔ اس طرح کے عمل سے مارکیٹ میں وسیع پیمانے پر تشویش پیدا ہوتی ہے کیونکہ بڑے پیمانے پر تجارت سے مارکیٹ پر اہم اثر پڑ سکتا ہے۔

مثال کے طور پر، فرض کریں کہ ایک اسٹاک کی مارکیٹ کی گہرائی اس طرح تھی: 200 $1.01 x $1.03 200؛ پھر ایک ہاتھی اندر آیا اور ایک $1.01 کی ادائیگی کے ساتھ 3000 اسٹاک کی مارکیٹ کی گہرائی 3200 ہو گئی۔ $1.01 x $1.03 200؛ یہ عمل ایک ہاتھی کو متعارف کرانے کے مترادف ہے، جو مارکیٹ کے دیگر شرکاء کی توجہ کا مرکز بن گیا ہے۔

  • مسابقتی بازار ہائی فریکوئنسی تاجروں کے لیے ان کا منافع زیادہ تر مارکیٹ کے مائیکرو ڈھانچے کے تجزیے سے آتا ہے تاکہ دوسرے تاجروں کے ارادوں کا اندازہ لگایا جا سکے۔ ایک بار جب ہاتھی نظر آتا ہے تو ، ہائی فریکوئنسی تاجروں کو چھوٹی قیمتوں میں اتار چڑھاؤ حاصل کرنے کے لئے تیزی سے پوزیشنیں بنانا پڑتی ہیں۔ ان کا مقصد مختصر وقت میں کثرت سے تجارت کرنا ہے ، جس سے چھوٹے لیکن مجموعی منافع حاصل ہوتے ہیں۔

  • ہاتھیوں کی مشکلات اگرچہ ہاتھی مارکیٹ میں بڑے پیمانے پر کام کرنا چاہتے ہیں ، لیکن ان کے رویے سے ان کے تجارتی ارادے بھی سامنے آتے ہیں ، جس سے وہ اعلی تعدد تاجروں کا نشانہ بن جاتے ہیں۔ اعلی تعدد تاجروں کو قیمتوں میں اتار چڑھاؤ کے دوران منافع حاصل کرنے کے لئے پہلے سے پوزیشن بنانے کی کوشش کرنی پڑتی ہے۔ مارکیٹ میں ہاتھی کی موجودگی سے مقابلہ کرنے والی مارکیٹ کا رد عمل پیدا ہوسکتا ہے ، جس سے ان کی تجارتی حکمت عملی پر اثر پڑتا ہے۔

  • مارکیٹ میں دھوکہ دہی حقیقت میں ، بڑے ادارہ جاتی سرمایہ کار عام طور پر مارکیٹ میں بڑے پیمانے پر خرید و فروخت کے احکامات کو کھل کر نہیں ڈالتے ہیں ، کیونکہ اس طرح کے رویے سے مارکیٹ کے دوسرے شرکاء کا مقابلہ ہوسکتا ہے ، اور یہاں تک کہ مارکیٹ میں ہیرا پھیری بھی ہوسکتی ہے۔ لہذا ، وہ دھوکہ دہی بنانے کی حکمت عملی اختیار کرسکتے ہیں ، اعلی تعدد کے تاجروں کو اپنی طرف راغب کرتے ہیں ، اور پھر تیزی سے فروخت یا خریدتے ہیں تاکہ قیمت میں اتار چڑھاؤ سے فائدہ اٹھائیں۔

پینی جمپ کی حکمت عملی کے بنیادی خیالات

پینی جمپ کی حکمت عملی کا بنیادی خیال یہ ہے کہ ایک بار جب مارکیٹ میں ایک ہاتھی ظاہر ہوتا ہے اور کسی خاص قیمت (مثال کے طور پر $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): یہ کوڈ لائن چیک کرتی ہے کہ آیا کوئی نامکمل آرڈر موجود ہے۔ اگر آرڈر صف کی لمبائی 0 ہے تو اس کا مطلب ہے کہ کوئی نامکمل آرڈر نہیں ہے ، اس لپیٹ کو توڑ دیا جائے گا۔
  • for (var i = 0; i < orders.length; i++): یہ ایک for لوپ ہے جو تمام غیر مکمل احکامات پر چلتا ہے۔
  • 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)اس کے علاوہ، یہ ایک مختلف قسم کا ٹرانزیکشن ہے جس میں ایک مختلف قسم کا ٹرانزیکشن شامل ہوتا ہے، جس میں یہ ٹرانزیکشن کی حالت کی معلومات کو اپ ڈیٹ کرنے اور اسے ریکارڈ کرنے کے لئے استعمال کیا جاتا ہے. یہ ایک ایم ایس جی پیرامیٹر قبول کرتا ہے، جو عام طور پر موجودہ مارکیٹ کی حالت کے بارے میں معلومات پر مشتمل ہوتا ہے. فنکشن کے مخصوص آپریشن میں شامل ہیں:

استعمال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): یہ کوڈ لائن چیک کرتی ہے کہ 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 اب بھی 0 ہے) ، تو حکمت عملی انتظار جاری رکھے گی اور بعد کی کارروائی کو چھوڑ دے گی۔

  • var elephant = null;: elephant متغیر کو شروع کریں ، جو کہ چکنائی کے طور پر پہچانے جانے والے چکنائی کے لئے ادائیگی کی معلومات کو ذخیرہ کرنے کے لئے استعمال کیا جائے گا۔

    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): اگر کوئی ہاتھی ہاتھی نہیں ملتا ہے تو ، مقفل کرنے والے عددی تالوں کو 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): ایکسچینج.بائی فنکشن کا استعمال کرتے ہوئے پایا ہوا ہاتھی ہاتھی کو خریدیں۔ خریداری کی قیمت ہاتھی ہے۔ قیمت + پینی ٹِک ، خریداری کی مقدار لاٹ ہے ، اور خریداری کی کارروائی کو "بیڈز [" + 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): کامیابی سے خریدے گئے ہاتھی کے ہاتھی کو منافع کے ل sell فروخت کریں exchange.Sell فنکشن کا استعمال کریں۔ فروخت کی قیمت elephant.Price + (PennyTick * ProfitTick) ہے۔

ایک نئی لامحدود سائیکل میں داخل ہونے کے لئے، فروخت کے احکامات کے منتظر عملدرآمد کے لئے استعمال کیا جاتا ہے.

  • 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)اس کے بعد ، اس نے اپنے تمام اثاثوں کو فروخت کرنے کے لئے ایک اسٹاپ نقصان کا آپریشن کیا۔

آخر میں، کامیاب اور ناکام تجارت کی تعداد کو اپ ڈیٹ کیا جاتا ہے، اور تجارت کے منافع کو ریکارڈ کیا جاتا ہے.

یہ پوری حکمت عملی کی ایک سطر بہ سطر وضاحت ہے۔ اس حکمت عملی کا بنیادی خیال یہ ہے کہ مارکیٹ میں ہاتھیوں کے ہاتھیوں کو تلاش کریں (بہت زیادہ ادائیگی) اور انہیں خریدیں اور فروخت کریں تاکہ معمولی منافع حاصل کیا جاسکے۔ اس میں متعدد اہم پیرامیٹرز شامل ہیں ، جیسے خریداری کی تعداد (لوٹ) ، غلطیوں کی تکرار کے وقفے (انٹرول) ، ہاتھیوں کی مقدار (الیفینٹ مقدار) ، ہاتھیوں کے فاصلے (الیفینٹ اسپیس) ، اور اسی طرح کی حکمت عملی کے رویے کو ایڈجسٹ کرنے کے لئے۔

مجموعی طور پر ، یہ حکمت عملی ایک اعلی تعدد کی تجارتی حکمت عملی ہے جس کا مقصد مارکیٹ کی گہرائی کی معلومات کا استعمال کرنا ، بڑی تعداد میں ادائیگیوں کی نشاندہی کرنا اور مختصر وقت میں خرید و فروخت کی تجارت کرنا ہے۔ اس میں مارکیٹ کی مسلسل نگرانی اور چھوٹی چھوٹی منافع کے لئے تیزی سے خرید و فروخت کی کارروائی کرنے کی ضرورت ہے۔ تاہم ، یہ ایک خطرناک حکمت عملی بھی ہے کیونکہ اس میں مارکیٹ میں اتار چڑھاؤ پر تیزی سے ردعمل ظاہر کرنے کی ضرورت ہے ، جبکہ بڑے نقصانات سے بچنے کے لئے رسک مینجمنٹ اور اسٹاپ نقصان کے میکانزم پر غور کرنا ضروری ہے۔

براہ کرم نوٹ کریں کہ یہ حکمت عملی مخصوص مارکیٹوں اور تجارتی پلیٹ فارمز پر مبنی ہے اور مختلف مارکیٹوں اور تبادلے کے ل appropriate مناسب ایڈجسٹمنٹ اور اصلاحات کی ضرورت ہوسکتی ہے۔ عملی استعمال میں ، سرمایہ کاروں کو حکمت عملی کی کارکردگی کو احتیاط سے جانچنے اور اس کی جانچ پڑتال کرنے کی ضرورت ہے تاکہ یہ یقینی بنایا جاسکے کہ یہ سرمایہ کاری کے اہداف اور خطرہ برداشت کے مطابق ہے۔

جب آپ اس پالیسی کو جاری رکھتے ہیں تو ، یہ مندرجہ ذیل کاموں کو انجام دیتا ہے:

1، سب سے پہلے، حکمت عملی مارکیٹ کی گہرائی کی معلومات کی جانچ پڑتال کرتی ہے تاکہ موجودہ فروخت اور خریداری کی صورتحال کو سمجھا جاسکے۔

2، اگلا، حکمت عملی کو ایک قابل فروخت اشارے کی تلاش کرنے کی کوشش کرے گی، خاص طور پر اگر اشارے کی تعداد سے زیادہ یا برابر ہے Lot ((بندوں کی تعداد) ؛ اگر قابل فروخت اشارے پائے جاتے ہیں تو، اشارے کی قیمت کو askPrice کے طور پر ریکارڈ کیا جائے گا۔

3، پھر، حکمت عملی میں ہاتھی دانتوں کی تلاش جاری رہے گا ((بہت سے ادائیگیاں) ؛ یہ مارکیٹ میں ادائیگیوں کو گھومتا ہے، پہلی ادائیگی (عام طور پر سب سے زیادہ قیمت کی ادائیگی) کو چھوڑ دیتا ہے؛ اگر قابل ہاتھی دانتوں کو پایا جاتا ہے تو، ہاتھی دانتوں کی معلومات کو ریکارڈ کیا جائے گا اور لاک کی تعداد میں اضافہ کیا جائے گا ((لاکس)).

4، اگر مسلسل کافی تعداد میں ہاتھی دانتوں کو تلاش کیا جاتا ہے (لوک کاؤنٹ پیرامیٹرز کے ذریعہ کنٹرول کیا جاتا ہے) ، حکمت عملی مندرجہ ذیل کارروائیوں کو مزید انجام دے گی:

  • اس کے علاوہ، آپ کو اس کے بارے میں مزید معلومات حاصل کرنے کے لئے اس کے بارے میں مزید معلومات حاصل کرنے کے لئے اس کے بارے میں مزید معلومات حاصل کرنے کے لئے اس کے بارے میں مزید معلومات حاصل کرنے کی ضرورت ہوگی.
  • ایکٹ ایکسچینج.بائی فنکشن کا استعمال کرتے ہوئے ہاتھیوں کے ہاتھیوں کو خریدیں ، جس کی خریداری کی قیمت ہاتھی ہے۔ قیمت + پینی ٹِک ، جس کی خریداری کی تعداد بہت زیادہ ہے۔
  • ایک نئی لامحدود سائیکل شروع کی جاتی ہے جس میں خریداری کے احکامات کے عمل کو انتظار کرنے کے لئے استعمال کیا جاتا ہے۔
  • آرڈر کی حالت چیک کریں ، اگر آرڈر مکمل ہو گیا ہے تو ، لوپ سے باہر نکلیں۔
  • اگر انتظار کا وقت مقرر کردہ انتظار وقفہ سے زیادہ ہو تو ، تمام غیر مکمل شدہ آرڈرز منسوخ کردیں۔
  • کامیاب خریداری کے بعد اکاؤنٹ کے اثاثوں میں تبدیلی کا حساب لگایا جاتا ہے۔ اگر تبدیلی 0.001 سے کم ہے تو ، خریداری ناکام ہوگئی ، ناکامی کی تعداد میں اضافہ ہوا اور اگلے چکر کو جاری رکھا گیا۔
  • اس کے علاوہ، یہ بھی کہا جاتا ہے کہ اس کے بارے میں معلومات حاصل کرنے کے لئے، آپ کو اپنے آپ کو ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر.

5، اس کے بعد، حکمت عملی ایک نئی لامحدود لپیٹ میں جاری ہے، جس میں فروخت کے عمل کو انجام دینے کے لئے انتظار کر رہا ہے. اس لپیٹ میں، یہ مندرجہ ذیل کام کرتا ہے:

  • مارکیٹ کی گہرائی سے معلومات حاصل کریں اور چیک کریں کہ آیا مارکیٹ کی قیمتوں میں رکاوٹ کی قیمتوں میں اضافہ ہوا ہے۔
  • اگر مارکیٹ کی قیمت سٹاپ نقصان کی قیمت تک پہنچ گئی ہے یا اس سے کم ہے تو ، اسٹاپ نقصان کا آپریشن کیا جائے گا ، یعنی باقی اثاثے فروخت کیے جائیں گے۔
  • اس کے علاوہ ، آپ کو اپنے پاس موجود تمام آرڈرز کو منسوخ کرنے کی ضرورت ہے۔
  • ایک بار پھر خریداری کے کامیاب ہونے کے بعد اکاؤنٹ کے اثاثوں میں تبدیلی کی جانچ پڑتال کریں ، اگر تبدیلی 0.001 سے کم ہے تو ، خریداری ناکام ہوگئی ، اور اس لپیٹ سے باہر نکل گیا۔
  • آخر میں ، یہ ریکارڈ کیا جاتا ہے کہ آیا یہ تجارت کامیاب ہوئی ہے یا نہیں ، اور اس کے نتائج کے مطابق کامیاب اور ناکام ہونے کی تعداد کو اپ ڈیٹ کیا جاتا ہے۔

یہ ایک اعلی تعدد ٹریڈنگ کی حکمت عملی ہے جس میں مارکیٹ میں تیزی سے ردعمل کی ضرورت ہوتی ہے جبکہ سرمایہ کاروں کو سرمایہ کی حفاظت کے لئے خطرے کے انتظام اور روک تھام کے طریقہ کار پر غور کرنا چاہئے۔ سرمایہ کاروں کو اس حکمت عملی کو استعمال کرنے کے بارے میں احتیاط سے غور کرنا چاہئے ، خاص طور پر انتہائی اتار چڑھاؤ والی مارکیٹوں میں۔

اختتام

پینی جمپ حکمت عملی ہائی فریکوئنسی ٹریڈنگ کی ایک مثال ہے جس میں مارکیٹ کے شرکاء کے مابین ٹھیک ٹھیک کھیل اور مقابلہ کا مظاہرہ کیا گیا ہے۔ کریپٹوکرنسی مارکیٹ میں ، یہ حکمت عملی خاص طور پر نمایاں ہے کیونکہ مارکیٹ میں اتار چڑھاؤ بہت زیادہ ہے ، ادارہ جاتی سرمایہ کار اور ہائی فریکوئنسی تاجروں دونوں ہی تیزی سے منافع کے حصول کے خواہاں ہیں۔ تاہم ، اس نے مارکیٹ کو بھی چیلنج کیا ہے ، جس میں مسابقتی برتری برقرار رکھنے کے لئے مسلسل موافقت اور حکمت عملی کو ایڈجسٹ کرنے کی ضرورت ہے۔ اس شدید مسابقتی دنیا میں ، صرف وہ تاجر کامیاب ہوسکتے ہیں جو مارکیٹ کی مائکرو ساخت کو اچھی طرح سے سمجھتے ہیں اور تیزی سے رد عمل کرتے ہیں۔


مزید