
Strategi perdagangan kuantitatif penembusan harga kunci multihead adalah metode perdagangan sistematis yang didasarkan pada filosofi perdagangan Jesse Livermore. Strategi ini dengan mengidentifikasi tren utama pasar, retargeting alami, dan retargeting sekunder, menangkap tepat waktu ketika harga menembus titik-titik dukungan dan resistensi kunci. Inti dari strategi ini adalah menggunakan pivot-pivot kunci yang didefinisikan oleh persentase atau indikator ATR untuk menentukan pergeseran tren, dan membangun posisi multihead ketika tren naik utama dikonfirmasi, posisi rata ketika tren turun utama dikonfirmasi, untuk melakukan pelacakan cerdas dan pengelolaan dana terhadap pergerakan pasar.
Strategi ini didasarkan pada filosofi perdagangan Jesse Livermore, yang membagi tren pasar ke dalam enam keadaan: tren utama ke atas (MAIN_UP), tren utama ke bawah (MAIN_DOWN), natural rebound (NATURAL_REBOUND), natural retracement (NATURAL_RETRACEMENT), rebound sekunder (SECONDARY_REBOUND) dan retracement sekunder (SECONDARY_RETRACEMENT).
Strategi untuk menentukan kondisi tren pasar dengan menghitung hubungan antara harga saat ini dengan titik-titik kunci sejarah, digabungkan dengan rasio jarak pivot yang telah ditentukan (bisa menjadi persentase tetap atau berdasarkan perhitungan ATR dinamis). Logika spesifiknya adalah sebagai berikut:
Dalam tren naik utama, ketika harga terus naik atau turun tidak melebihi nilai terendah yang didefinisikan oleh perkalian sumbu utama, mempertahankan keadaan tren naik dan memperbarui titik tertinggi; Ketika penarikan melampaui nilai terendah, beralih ke keadaan penarikan alami.
Dalam tren turun utama, mempertahankan keadaan tren turun dan memperbarui titik terendah ketika harga terus turun atau rebound tidak melebihi batas yang didefinisikan oleh pengganda sumbu utama; beralih ke keadaan rebound alami ketika rebound melampaui batas.
Antara rebound/retracement alami dan sub-rebound/retracement, berdasarkan hubungan harga dengan high/low historis dan perhitungan perkalian pada sumbu utama dan sekunder untuk menilai konversi tren
Logika pembuatan sinyal perdagangan adalah: posisi multihead didirikan ketika tren dua siklus berturut-turut mengkonfirmasi tren naik utama; posisi kosong keluar ketika tren dua siklus berturut-turut mengkonfirmasi tren turun utama.
Sistematisasi penilaian trenStrategi: Sistematisasi ide perdagangan Livermore, dengan model matematika yang jelas untuk mendefinisikan berbagai keadaan tren, menghilangkan ketidakpastian yang ditimbulkan oleh penilaian subjektif.
Sangat mudah beradaptasiStrategi dapat beradaptasi dengan berbagai kondisi pasar dan volatilitas, meningkatkan fleksibilitas strategi.
Mekanisme KonfirmasiStrategi ini membutuhkan dua siklus konfirmasi tren berturut-turut untuk melakukan perdagangan, yang secara efektif mengurangi kerugian akibat false breakout.
Integrasi Manajemen DanaStrategi: Menggunakan persentase ekuitas akun untuk mengelola posisi, memastikan bahwa setiap akun memiliki risiko yang sama dalam skala yang berbeda.
Menangkap tren jangka panjangDengan membedakan antara tren utama dan tren kecil, strategi dapat secara efektif menangkap tren siklus besar dan menghindari gangguan dari noise jangka pendek.
Risiko keterlambatan: Karena strategi ini membutuhkan konfirmasi status tren selama dua siklus untuk melakukan perdagangan, mungkin kehilangan sebagian keuntungan di awal tren, atau menanggung penarikan yang lebih besar ketika tren berbalik.
Parameter SensitivitasKinerja strategi sangat bergantung pada pengaturan parameter seperti persentase jarak pivot, dan perkalian pivot utama dan sekunder. Parameter yang tidak tepat dapat menyebabkan overtrading atau kehilangan sinyal penting.
Pembatasan transaksi satu arahStrategi yang dirancang untuk hanya melakukan perdagangan multi-head, mungkin menghadapi waktu yang lebih lama dari dana yang tersimpan di pasar yang turun dalam jangka panjang, yang mempengaruhi tingkat keuntungan keseluruhan.
Trend Defining Complexity (Kompleksitas yang Menentukan Tren)Logika konversi antara enam kondisi tren lebih rumit, dan dapat menyebabkan perubahan keadaan yang sering terjadi ketika pasar bergejolak, meningkatkan biaya transaksi.
Kurangnya pengendalian kerugian: Tidak ada pengaturan stop loss yang jelas dalam kode, yang dapat menyebabkan kerugian lebih besar jika pasar berbalik tajam.
Meningkatkan mekanisme penghentian kerugianIntroduksi strategi stop loss berdasarkan ATR atau persentase tetap untuk mengontrol risiko transaksi tunggal sebelum terbaliknya tren. Implementasi konkret dapat mengatur harga stop loss sekaligus membangun posisi multihead, melindungi keamanan dana.
Optimalkan mekanisme pengakuan trenStrategi saat ini membutuhkan dua periode konfirmasi tren berturut-turut, dan dapat dipertimbangkan untuk mengkombinasikan volume lalu lintas atau indikator teknis lainnya untuk konfirmasi tren, meningkatkan kualitas sinyal.
Menambahkan fungsi cachingStrategi ekspansi untuk mendukung perdagangan overhead, memanfaatkan peluang keuntungan dalam tren turun, dan meningkatkan kinerja strategi sepanjang waktu.
Pengaturan parameter dinamisIntroduksi mekanisme penyesuaian parameter dinamis berdasarkan volatilitas historis atau kondisi pasar, sehingga strategi dapat beradaptasi dengan lebih baik terhadap berbagai kondisi pasar.
Menambahkan kondisi filterUntuk menghindari posisi di bawah kondisi yang tidak menguntungkan dan meningkatkan tingkat kemenangan, Anda dapat menggunakan filter siklus pasar, musiman, atau dasar.
Pembangunan gudang dan gudangTujuan dari program ini adalah: untuk mewujudkan mekanisme masuk dan keluar yang terbagi, mengurangi risiko pemilihan waktu, dan mengoptimalkan efisiensi penggunaan dana.
Strategi perdagangan kuantitatif terobosan harga kunci multihead dari Livermore berhasil mengubah konsep perdagangan klasik Jesse Livermore menjadi sistem algoritma yang dapat dieksekusi secara kuantitatif. Dengan menentukan dengan tepat enam kondisi tren di pasar dan kondisi konversi mereka, strategi ini dapat secara efektif mengidentifikasi dan melacak tren naik utama dan melakukan perdagangan multihead berdasarkan tren yang dikonfirmasi.
Meskipun strategi memiliki keunggulan seperti sistematisasi, adaptasi yang kuat dan mekanisme konfirmasi built-in, tetapi juga menghadapi risiko seperti keterlambatan, sensitivitas parameter dan kurangnya stop loss. Dengan menambahkan mekanisme stop loss, mengoptimalkan pengakuan tren, memperluas fungsi penarikan kosong, dan mencapai pengaturan parameter dinamis, optimasi dalam berbagai arah dapat meningkatkan stabilitas dan profitabilitas strategi.
Secara keseluruhan, strategi ini memberikan kerangka kerja yang solid bagi investor yang mencari sistematisasi dalam menerapkan filosofi perdagangan Livermore, dengan harapan untuk mendapatkan keuntungan jangka panjang yang stabil dalam perdagangan aktual melalui penyesuaian parameter yang tepat dan pengoptimalan manajemen risiko.
/*backtest
start: 2024-07-16 00:00:00
end: 2025-07-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":200000}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bozhang_ox
//@version=6
strategy("Trading strategy Jesse Livermore", overlay=true)
// Input parameters
pivot_distance_percentage = input.float(0.5, title="Pivot Distance Percentage")
major_pivot_multiplier = input.int(6, title="Major Pivot Multiplier")
minor_pivot_multiplier = input.int(3, title="Minor Pivot Multiplier")
use_atr_pivot_distance = input.bool(false, title="Use ATR for Pivot Distance")
atr_period = input.int(14, title="ATR Period")
atr_pivot_multiplier = input.float(1, title="ATR Pivot Multiplier")
// Calculate ATR
atr = ta.atr(atr_period)
// Helper function to calculate pivot distance ratio
pivot_distance_ratio = use_atr_pivot_distance ? (atr * atr_pivot_multiplier) / close : pivot_distance_percentage / 100
// Trend states
NONE = 0
MAIN_UP = 6
MAIN_DOWN = 1
NATURAL_REBOUND = 2
NATURAL_RETRACEMENT = 5
SECONDARY_REBOUND = 4
SECONDARY_RETRACEMENT = 3
// Variables to track trends
var float main_up_max = na
var float main_down_min = na
var float natural_rebound_max = na
var float natural_retracement_min = na
var int trend = NONE
var int prev_trend = NONE
var int prev_prev_trend = NONE
// Initialize variables
if na(main_up_max)
main_up_max := -1e10
if na(main_down_min)
main_down_min := 1e10
if na(natural_rebound_max)
natural_rebound_max := -1e10
if na(natural_retracement_min)
natural_retracement_min := 1e10
// Trend logic
if trend == NONE
if close > close[1]
trend := MAIN_UP
main_up_max := close
else
trend := MAIN_DOWN
main_down_min := close
else if trend == MAIN_UP
if close > close[1] or (main_up_max - close < close[1] * pivot_distance_ratio * major_pivot_multiplier)
trend := MAIN_UP
main_up_max := math.max(main_up_max, close)
else
trend := NATURAL_RETRACEMENT
natural_retracement_min := close
else if trend == MAIN_DOWN
if close < close[1] or (close - main_down_min < close[1] * pivot_distance_ratio * major_pivot_multiplier)
trend := MAIN_DOWN
main_down_min := math.min(main_down_min, close)
else
trend := NATURAL_REBOUND
natural_rebound_max := close
else if trend == NATURAL_REBOUND
if close > close[1]
if close <= main_up_max
if close - natural_rebound_max <= close[1] * pivot_distance_ratio * minor_pivot_multiplier
trend := NATURAL_REBOUND
natural_rebound_max := math.max(natural_rebound_max, close)
else
trend := MAIN_UP
main_up_max := close
else
trend := MAIN_UP
main_up_max := close
else
if natural_rebound_max - close <= close[1] * pivot_distance_ratio * major_pivot_multiplier
trend := NATURAL_REBOUND
else if close < natural_retracement_min
trend := NATURAL_RETRACEMENT
natural_retracement_min := close
else
trend := SECONDARY_RETRACEMENT
else if trend == NATURAL_RETRACEMENT
if close < close[1]
if close >= main_down_min
if natural_retracement_min - close <= close[1] * pivot_distance_ratio * minor_pivot_multiplier
trend := NATURAL_RETRACEMENT
natural_retracement_min := math.min(natural_retracement_min, close)
else
trend := MAIN_DOWN
main_down_min := close
else
trend := MAIN_DOWN
main_down_min := close
else
if close - natural_retracement_min <= close[1] * pivot_distance_ratio * major_pivot_multiplier
trend := NATURAL_RETRACEMENT
else if close > natural_rebound_max
trend := NATURAL_REBOUND
natural_rebound_max := close
else
trend := SECONDARY_REBOUND
else if trend == SECONDARY_REBOUND
if close <= natural_rebound_max and close >= natural_retracement_min
trend := SECONDARY_REBOUND
else if close < natural_retracement_min
trend := NATURAL_RETRACEMENT
natural_retracement_min := close
else
trend := NATURAL_REBOUND
natural_rebound_max := close
else if trend == SECONDARY_RETRACEMENT
if close >= natural_retracement_min and close <= natural_rebound_max
trend := SECONDARY_RETRACEMENT
else if close > natural_rebound_max
trend := NATURAL_REBOUND
natural_rebound_max := close
else
trend := NATURAL_RETRACEMENT
natural_retracement_min := close
// Execute trades based on trend changes
if prev_trend != prev_prev_trend
if trend == MAIN_UP and prev_trend == MAIN_UP
strategy.entry("Long Entry", strategy.long, comment="Long Entry")
else if trend == MAIN_DOWN and prev_trend == MAIN_DOWN
strategy.close("Long Entry", comment = "Long Close")
// Update previous trend
prev_prev_trend := prev_trend
prev_trend := trend