Analisis strategi perdagangan frekuensi tinggi - Penny Jump

Penulis:Mimpi kecil, Dibuat: 2023-11-03 17:36:56, Diperbarui: 2023-11-03 22:19:32

img

Perdagangan frekuensi tinggi adalah bidang yang penuh tantangan dan kompetitif, yang bergantung pada pelaksanaan transaksi yang cepat dan wawasan sensitif terhadap struktur mikro pasar. Salah satu strategi yang sangat populer adalah Penny Jump, yang berfokus pada memanfaatkan "gajah" di pasar untuk mendapatkan keuntungan kecil tetapi sering. Dalam artikel ini, kami akan menjelaskan secara rinci bagaimana strategi Penny Jump bekerja, sambil membahas detail kode strategi untuk membantu pemula memahami bagaimana cara kerjanya.

Memahami Strategi Penny Jump

Dalam pasar saham, "gajah" biasanya merujuk pada investor institusional yang ingin membeli atau menjual sejumlah besar saham, tetapi tidak mau berdagang dengan harga pasar. Sebaliknya, mereka memilih untuk memasang sejumlah besar daftar harga di pasar, atau daftar gantung, untuk menunjukkan niat mereka. Perilaku ini menimbulkan perhatian luas di pasar karena transaksi besar dapat memiliki dampak yang signifikan pada pasar.

Misalnya, katakanlah kedalaman pasar saham adalah seperti ini: 200 $1.01 x $1.03 200; kemudian, seekor gajah masuk dan menggantung tagihan $1.01 untuk 3.000 saham; pada saat ini, kedalaman pasar akan menjadi 3.200; $1.01 x $1.03 200; tindakan ini seperti memperkenalkan seekor gajah yang menjadi fokus bagi para pemain lain di pasar.

  • Pasar Kompetisi Bagi trader frekuensi tinggi, keuntungan mereka sebagian besar berasal dari analisis struktur mikro pasar untuk menebak niat pedagang lain. Begitu ada gajah, trader frekuensi tinggi akan dengan cepat membangun posisi untuk mendapatkan fluktuasi harga yang kecil. Tujuan mereka adalah untuk berdagang sering dalam waktu singkat, mengumpulkan keuntungan kecil tetapi akumulasi.

  • Masalah Gajah Meskipun gajah mungkin ingin beroperasi secara besar-besaran di pasar, perilaku mereka juga mengungkapkan niat perdagangan mereka, membuat mereka menjadi target para pedagang frekuensi tinggi. Pedagang frekuensi tinggi akan mencoba untuk membangun posisi terlebih dahulu dan kemudian mengambil keuntungan dari fluktuasi harga. Kehadiran gajah di pasar dapat memicu reaksi pasar yang kompetitif, sehingga mempengaruhi strategi trading mereka.

  • Kecurangan di Pasar Pada kenyataannya, investor institusional besar biasanya tidak berani menempelkan banyak pesanan beli atau jual di pasar, karena perilaku seperti itu dapat menyebabkan peserta lain di pasar mengambil tindakan counter, bahkan memanipulasi pasar. Oleh karena itu, mereka mungkin menggunakan strategi untuk membuat ilusi, menarik pedagang frekuensi tinggi masuk, dan kemudian dengan cepat menjual atau membeli untuk mendapatkan keuntungan dari fluktuasi harga.

Ide inti dari strategi Penny Jump

Gagasan inti dari strategi Penny Jump adalah bahwa begitu ada gajah di pasar yang muncul dan mendukung harga tertentu (misalnya $1.01), pedagang frekuensi tinggi akan dengan cepat menaikkan penawaran mereka sebesar sen, misalnya hingga $1.02. Ini karena pedagang frekuensi tinggi memahami bahwa munculnya gajah berarti harga ini memiliki dukungan pembeli yang kuat, sehingga mereka mencoba mengikuti dengan harapan harga naik. Ketika harga benar-benar naik ke $1.03 x $1.05, pedagang frekuensi tinggi dapat dengan cepat menjual, mendapatkan keuntungan $0.01.

Tidak hanya itu, pedagang frekuensi tinggi juga dapat memperoleh keuntungan setelah membeli, bahkan jika harga tidak naik. Karena mereka tahu bahwa gajah mendukung harga bawah, mereka dapat dengan cepat menjual saham kepada gajah itu, mendapatkan keuntungan margin kecil.

Membaca kode kebijakan Penny Jump

Kode sumber strategi:https://www.fmz.com/strategy/358

Kode kebijakan yang diberikan di atas adalah contoh kode yang digunakan untuk mengimplementasikan kebijakan Penny Jump. Berikut ini adalah penjelasan rinci tentang kode untuk membantu pemula memahami bagaimana cara kerjanya:

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);
    }
}

Saya akan menganalisa kode strategi yang Anda berikan satu per satu untuk membantu Anda memahami cara kerjanya secara lebih rinci.

var Counter = {
    i: 0,
    w: 0,
    f: 0
};

Kode ini menginisialisasi sebuah objek yang disebut Counter, yang digunakan untuk melacak informasi statistik transaksi untuk kebijakan; secara khusus, itu mencakup tiga sifat:

  • i: Jumlah total transaksi.
  • W: Jumlah transaksi yang berhasil.
  • f: Menunjukkan jumlah transaksi yang gagal.

Atribut-atribut ini akan tercatat dan diperbarui saat kebijakan dijalankan.

var InitAccount = null;

Baris kode ini menginisialisasi variabel yang disebut InitAccount, yang akan menyimpan informasi akun saat kebijakan dimulai.

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);
    }
}

Ini adalah sebuahCancelAll()Fungsi ini bertujuan untuk menghapus semua pesanan yang belum selesai di pasar.

  • while (true): Ini adalah lingkaran tanpa batas, dan akan terus dijalankan sampai tidak ada pesanan yang belum selesai.
  • var orders = _C(exchange.GetOrders):这一行代码使用exchange.GetOrders函数获取当前账户所有挂出的订单,并将它们存储在orders变量中。
  • if (orders.length == 0): baris kode ini memeriksa apakah ada pesanan yang belum selesai. Jika panjang array order adalah 0, berarti tidak ada pesanan yang belum selesai, loop akan terputus.
  • for (var i = 0; i < orders.length; i++): Ini adalah loop for, yang melintasi semua pesanan yang belum selesai.
  • exchange.CancelOrder(orders[i].Id): baris kode ini menggunakan fungsi exchange.CancelOrder (), untuk membatalkan setiap pesanan melalui ID pesanan.
  • Sleep(Interval): Baris kode ini memperkenalkan siklus tunggu, menunggu beberapa waktu (dalam milisekund) untuk memastikan bahwa operasi untuk membatalkan pesanan tidak terlalu sering.

Tujuan dari fungsi ini adalah untuk memastikan bahwa tidak ada pesanan yang belum selesai sebelum menjalankan kebijakan utama, untuk menghindari gangguan pada pelaksanaan kebijakan utama.

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

Ini adalah sebuahupdateStatus(msg)Fungsi ini digunakan untuk memperbarui informasi status transaksi dan mencatatnya. Fungsi ini menerima parameter msg yang biasanya berisi informasi tentang kondisi pasar saat ini.

PenggunaanLogStatus()Fungsi ini mencatat informasi yang ditampilkan pada status bar saat kebijakan berjalan. Fungsi ini menampilkan teks tentang jumlah transaksi, jumlah keberhasilan, jumlah kegagalan. TambahkanmsgParameter yang berisi informasi tentang kondisi pasar saat ini. Tambahkan tanda waktu saat ininew Date()Untuk menampilkan informasi waktu. Tujuan dari fungsi ini adalah untuk mencatat dan memperbarui informasi status transaksi untuk pemantauan dan analisis selama pelaksanaan strategi.

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);
    }
}

Ini adalah fungsi pelaksanaan utama dari strategi.main()Pada dasarnya, ini adalah strategi yang sangat sederhana, yang mencakup logika inti dari strategi tersebut.

  • if (DisableLog): Baris kode ini memeriksa apakah variabel DisableLog benar, dan jika demikian, akan menonaktifkan catatan log. Ini untuk memastikan kebijakan tidak mencatat catatan log yang tidak diperlukan.

  • CancelAll(): memanggil fungsi CancelAll (() yang dijelaskan sebelumnya untuk memastikan tidak ada pesanan yang belum selesai.

  • InitAccount = _C(exchange.GetAccount): Baris kode ini mengambil informasi tentang akun saat ini dan menyimpannya dalam variabel InitAccount. Ini akan digunakan untuk mencatat status akun saat kebijakan dimulai.

  • var i = 0;danvar locks = 0;: Inisialisasi dua variabel i dan locks, yang akan digunakan dalam logika strategi berikutnya.

  • while (true): Ini adalah lingkaran tanpa batas, terutama untuk pelaksanaan strategi yang berkelanjutan.

Di bawah ini, kita akan menjelaskan secara garis demi garis.while (true)Logika strategi utama dalam lingkaran ini.

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): baris kode ini membuat kebijakan tidur sejenak untuk mengontrol frekuensi pelaksanaan kebijakan. Parameter Interval mendefinisikan interval waktu tidur (dalam milisekund).

  • var depth = _C(exchange.GetDepth): Dapatkan informasi kedalaman pasar saat ini, termasuk harga dan jumlah pesanan dan penjualan. Informasi ini akan disimpan dalam variabel kedalaman.

  • if (depth.Asks.length === 0 || depth.Bids.length === 0): baris kode ini memeriksa informasi kedalaman pasar untuk memastikan bahwa baik pesanan jual maupun pembelian ada. Jika salah satunya tidak ada, berarti pasar mungkin tidak memiliki informasi perdagangan yang cukup, maka strategi akan terus menunggu.

  • updateStatus("搜索大象中.... 买一: " + depth.Bids[0].Price + ", 卖一:" + depth.Asks[0].Price + ", 锁定次数: " + locks): baris kode ini memanggil fungsi update Status, informasi status pembaruan kebijakan. Ini mencatat kondisi pasar saat ini, termasuk harga beli, harga jual, dan jumlah kunci sebelumnya.

    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;: Initialize variable askPrice, yang akan digunakan untuk menyimpan harga jual yang memenuhi syarat.

  • for (i = 0; i < depth.Asks.length; i++): Ini adalah for loop yang digunakan untuk menelusuri informasi harga dan kuantitas pesanan pasar.

  • if (depth.Asks[i].Amount >= Lot): Dalam siklus, periksa apakah jumlah setiap order lebih besar dari atau sama dengan jumlah Lot yang ditentukan. Jika demikian, simpan harga order tersebut di AskPrice dan hentikan siklus.

  • if (askPrice === 0): Jika tidak ditemukan penawaran yang memenuhi syarat (askPrice masih 0), kebijakan akan terus menunggu dan melewatkan operasi berikutnya.

  • var elephant = null;: Initialize the elephant variable, yang akan digunakan untuk menyimpan informasi pembayaran yang diidentifikasi sebagai ikan gajah.

    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;

Untuk terus menjelajahi informasi harga dan jumlah penawaran di pasar, lewatkan penawaran pertama (Bids[0])

  • if ((askPrice - depth.Bids[i].Price) > ElephantSpace): Periksa apakah selisih antara harga pembelian saat ini dan harga permintaan lebih besar dari ElephantSpace. Jika ya, berarti sudah cukup jauh dari sarang gajah dan strategi tidak lagi mencari.

  • if (depth.Bids[i].Amount >= ElephantAmount): Memeriksa apakah jumlah pembayaran saat ini lebih besar dari atau sama dengan ElephantAmount, dan jika demikian, informasi pembayaran disimpan dalam variabel elephant.

  • if (!elephant): Jika tidak ditemukan kerucut gajah, kunci bilangan akan disetel kembali ke 0 dan terus menunggu.

locks++: Jika ditemukan, angka penguncian akan meningkat. Hal ini untuk memastikan bahwa kebijakan akan dijalankan kembali setelah beberapa kali konfirmasi keberadaan sarang gajah.

  • if (locks < LockCount): Periksa apakah jumlah penguncian telah memenuhi persyaratan. Jika tidak, terus menunggu.
    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)): Mengundang fungsi Status update, yang mencatat status kebijakan saat ini, termasuk peringkat dan informasi terkait yang ditemukan pada sarang gajah. Ini akan ditampilkan di status policy.

  • exchange.Buy(elephant.Price + PennyTick, Lot, "Bids[" + i + "]", elephant): menggunakan fungsi exchange.Buy untuk membeli seekor gajah yang ditemukan. Harga pembelian adalah elephant. Harga + PennyTick, jumlah pembelian adalah Lot, dan operasi pembelian digambarkan sebagai "Bids[" + i + ] gajah".

  • var ts = new Date().getTime(): Dapatkan timestamp waktu saat ini untuk interval waktu yang akan dihitung selanjutnya.

  • while (true): masuk ke dalam lingkaran tak terbatas baru, digunakan untuk mengeksekusi pesanan untuk membeli ikan gajah yang sedang menunggu.

  • Sleep(CheckInterval)Kebijakan: Tidur sejenak untuk mengontrol frekuensi pemeriksaan status pesanan.

  • var orders = _C(exchange.GetOrders)Untuk mendapatkan informasi tentang semua pesanan di akun Anda saat ini.

  • if (orders.length == 0): Memeriksa apakah ada pesanan yang belum selesai, jika tidak, keluar dari lingkaran.

  • (new Date().getTime() - ts) > WaitInterval: Menghitung waktu saat ini dan waktu selang waktu saat membeli lele gajah, jika melebihi WaitInterval, berarti menunggu lebih lama.

  • for (var i = 0; i < orders.length; i++)Di sini Anda dapat melihat semua pesanan yang belum selesai.

  • 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)Untuk mendapatkan informasi akun saat ini.

  • var opAmount = _N(account.Stocks - InitAccount.Stocks): Menghitung perubahan aset dalam akun setelah membeli ikan gajah. Jika perubahannya kurang dari 0,001, berarti pembelian gagal, jumlah kegagalan akan meningkat dan siklus berikutnya akan dilanjutkan.

  • updateStatus("买单得手: " + opAmount + ", 开始出手...")Untuk informasi lebih lanjut, silakan kunjungi situs web: https://www.youtube.com/watch?v=YYfGfGfG

  • exchange.Sell(elephant.Price + (PennyTick * ProfitTick), opAmount): menggunakan fungsi exchange.Sell untuk menjual ikan gajah yang berhasil dibeli untuk mendapatkan keuntungan. Harga penjualan adalah elephant.Price + (PennyTick * ProfitTick).

Ini adalah bagian dari siklus tanpa batas yang digunakan untuk melakukan penjualan sementara.

  • var depth = _C(exchange.GetDepth)Untuk mendapatkan informasi yang lebih mendalam tentang pasar.

  • if (depth.Bids.length > 0 && depth.Bids[0].Price <= (elephant.Price - (STTick * PennyTick)))Jika harga pasar sudah turun ke level stop loss, maka stop loss dilakukan.

  • CancelAll()Untuk menghindari risiko penyimpanan, Anda dapat memanggil fungsi: CancelAll ((() untuk membatalkan semua pesanan yang belum selesai.

  • if (opAmount < 0.001): Periksa lagi jumlah pembelian, jika kurang dari 0.001, berarti pembelian gagal dan keluar dari lingkaran.

  • exchange.Sell(depth.Bids[0].Price, opAmount)Operasi stop loss dilakukan untuk menjual aset yang tersisa dengan harga terendah di pasar saat ini.

Akhirnya, berdasarkan keberhasilan atau tidaknya transaksi, jumlah keberhasilan dan kegagalan diperbarui, dan keuntungan transaksi dicatat.

Ini adalah penjelasan baris demi baris dari strategi ini. Ide inti dari strategi ini adalah mencari ikan gajah di pasar ("bayar banyak"), membeli dan menjual untuk mendapatkan keuntungan kecil. Ini mencakup beberapa parameter penting, seperti jumlah pembelian ("Lot"), interval uji ulang kesalahan ("Interval"), tingkat gajah ("ElephantAmount"), jarak gajah ("ElephantSpace"), dan lain-lain untuk menyesuaikan perilaku strategi.

Secara umum, strategi ini adalah strategi perdagangan frekuensi tinggi yang bertujuan untuk memanfaatkan informasi mendalam pasar, mengidentifikasi jumlah besar pembayaran dan melakukan transaksi jual beli dalam waktu singkat. Ini membutuhkan pemantauan pasar secara terus-menerus dan melakukan operasi jual beli untuk mendapatkan keuntungan kecil dengan cepat. Namun, ini juga merupakan strategi berisiko tinggi karena membutuhkan reaksi cepat terhadap volatilitas pasar, sekaligus perlu mempertimbangkan manajemen risiko dan mekanisme stop loss untuk menghindari kerugian besar.

Harap dicatat bahwa strategi ini didasarkan pada pasar dan platform perdagangan tertentu dan mungkin perlu disesuaikan dan dioptimalkan dengan tepat untuk pasar dan bursa yang berbeda. Dalam aplikasi praktis, investor perlu menguji dan menilai kinerja strategi dengan cermat untuk memastikan bahwa strategi tersebut sesuai dengan tujuan investasi dan kemampuan menanggung risiko.

Saat Anda melanjutkan untuk menjalankan kebijakan, itu akan terus berputar untuk melakukan hal-hal berikut:

Pertama, strategi akan memeriksa informasi mendalam tentang pasar untuk mengetahui kondisi jual beli dan pembelian saat ini.

2, Selanjutnya, strategi akan mencoba untuk menemukan pesanan yang memenuhi syarat, dengan syarat bahwa jumlah pesanan lebih besar dari atau sama dengan Lot (jumlah tangan). Jika pesanan yang memenuhi syarat ditemukan, harga pesanan akan dicatat sebagai AskPrice.

3. Kemudian, strategi akan terus mencari sarang gajah ("banyaknya pembayaran") ‒ ia akan menelusuri semua pembayaran di pasar, melewatkan pembayaran pertama (biasanya pembayaran dengan harga tertinggi) ‒ jika sarang gajah yang memenuhi syarat ditemukan, informasi tentang sarang gajah akan dicatat dan jumlah kunci akan ditingkatkan (kunci).

4, jika cukup banyak kali ditemukan (dikendalikan oleh parameter LockCount) maka strategi akan melakukan operasi berikut:

  • Menggunakan fungsi update Status untuk mencatat status dan informasi tentang tempat tinggal burung gajah.
  • Dengan menggunakan fungsi exchange.Buy, Anda dapat membeli kerang gajah dengan harga elephant.Price + PennyTick dengan jumlah lot.
  • Mulailah siklus tanpa batas baru untuk menunggu pemesanan dilakukan.
  • Memeriksa status pesanan, jika sudah selesai, keluar dari lingkaran.
  • Jika waktu tunggu melebihi interval tunggu yang ditetapkan, maka semua pesanan yang belum selesai akan dibatalkan.
  • Menghitung perubahan aset akun setelah pembelian berhasil, jika perubahan kurang dari 0.001, menunjukkan pembelian gagal, meningkatkan jumlah kegagalan, dan melanjutkan siklus berikutnya.
  • Informasi tentang pembelian yang berhasil, termasuk jumlah pembelian, dicatat.

5. Selanjutnya, strategi akan melanjutkan ke lingkaran tanpa batas baru, untuk menunggu eksekusi operasi jual. Dalam lingkaran ini, ia akan melakukan operasi berikut:

  • Untuk mendapatkan informasi lebih mendalam tentang pasar, Anda dapat memeriksa apakah harga pasar telah mencapai level stop loss.
  • Jika harga pasar telah mencapai atau di bawah harga stop loss, operasi stop loss akan dilakukan, yaitu menjual aset yang tersisa.
  • Menggunakan fungsi CancelAll untuk membatalkan semua pesanan yang belum selesai untuk mengurangi risiko penyimpanan.
  • Periksa kembali perubahan aset akun setelah pembelian berhasil, jika perubahan kurang dari 0.001, berarti pembelian gagal, keluar dari lingkaran.
  • Terakhir, mencatat apakah transaksi berhasil atau tidak, dan memperbarui jumlah keberhasilan dan kegagalan berdasarkan hasil transaksi.

Seluruh strategi terus berputar untuk melakukan operasi di atas untuk menangkap ikan lele sebanyak mungkin dan mendapatkan keuntungan kecil. Ini adalah strategi perdagangan frekuensi tinggi yang membutuhkan respons cepat terhadap perubahan pasar, sementara juga perlu mempertimbangkan manajemen risiko dan mekanisme stop loss untuk melindungi modal. Investor harus mempertimbangkan dengan hati-hati untuk menggunakan strategi ini, terutama di pasar yang sangat berfluktuasi.

Pengucapan

Strategi Penny Jump adalah contoh khas dari perdagangan frekuensi tinggi, yang menunjukkan permainan halus dan persaingan antara para peserta pasar. Dalam pasar cryptocurrency, strategi ini sangat menonjol karena pasar sangat berfluktuasi, investor institusional dan pedagang frekuensi tinggi mengejar keuntungan cepat. Namun, ini juga membuat pasar penuh tantangan dan membutuhkan strategi yang terus-menerus beradaptasi dan disesuaikan untuk mempertahankan keunggulan kompetitif.


Lebih banyak