
Strategi ini bertujuan untuk memanfaatkan fungsi pengesanan berhenti Bitmestra, menyesuaikan harga berhenti secara dinamik, dan mencapai hentian yang lebih tepat dan fleksibel. Strategi ini tidak digunakan untuk masuk dan keluar, tetapi memberikan ruang hentian yang munasabah dalam keadaan pasaran yang berbeza.
Strategi ini menggunakan 3 indikator utama: harga tertinggi, harga terendah dan harga penutupan. Strategi ini mula-mula menentukan jarak hentian untuk kedudukan panjang dan pendek, iaitu jarak hentian yang dilacak oleh banyak kepalalongoffsetdan jarak penghentian pengesanan kepala kosongshortoffset│ di mana jarak kedudukan panjang adalah 228.5 dan jarak kedudukan pendek adalah 243.5 │
Kemudian strategi menggunakan logik berikut untuk menyesuaikan harga stop losstrailstop:
Dengan cara ini, anda boleh mengesan dan menyesuaikan harga hentian secara langsung mengikut perubahan harga tertinggi dan terendah di pasaran, untuk mencapai hentian dinamik.
Kelebihan terbesar strategi ini adalah untuk mencapai penutupan yang benar-benar dinamik dan fleksibel. Berbanding dengan harga penutupan tetap, penutupan dinamik dapat menyesuaikan ruang penutupan mengikut keadaan turun naik pasaran, untuk mengelakkan kerugian yang tidak perlu dari jarak penutupan yang terlalu besar, dan juga untuk mengelakkan penutupan yang terlalu kecil dari pergerakan harga biasa.
Kelebihan lain ialah jarak penutupan boleh disesuaikan dan dioptimumkan. Pengguna boleh memilih julat penutupan yang sesuai dengan ciri-ciri dan gaya perdagangan yang berbeza. Ini menjadikan strategi boleh digunakan untuk lebih banyak senario.
Akhirnya, logik stop loss strategi ini adalah ringkas, mudah difahami, dan mudah untuk dibangunkan semula dan diintegrasikan ke dalam strategi lain, yang merupakan salah satu kelebihan.
Risiko utama dalam strategi ini adalah:
Hentian dinamik hanya dapat mengurangkan kerugian dalam keadaan biasa, tidak dapat melindungi kerugian yang disebabkan oleh kejadian besar yang tidak dijangka atau keadaan yang melampau. Ini adalah batasan Hentian dinamik itu sendiri.
Jika jarak penghentian yang dilacak terlalu besar, ia boleh menyebabkan kerugian meluas. Jika jaraknya terlalu kecil, ia mungkin terlambat. Tetapan jarak perlu diuji dan dioptimumkan dengan berhati-hati mengikut ciri-ciri varieti.
Dalam beberapa baris K selepas kedudukan baru dibuka, jarak penutupan mungkin terlalu besar kerana mekanisme penutupan yang dikesan, dan pada masa ini terdapat risiko tambahan tertentu.
Strategi ini boleh dioptimumkan dengan cara berikut:
Optimumkan parameter pelbagai jenis: Pilih jarak hentian pengesanan multi-kepala dan kosong yang munasabah mengikut tahap turun naik pelbagai jenis, julat turun naik dalam sehari, dan sebagainya. Ini adalah arah pengoptimuman yang paling penting.
Mengurangkan risiko tambahan beberapa garis K selepas membuka kedudukan: Anda boleh mengehadkan penyesuaian untuk mengesan jarak hentian selepas beberapa garis K selepas membuka kedudukan, untuk mengelakkan jarak hentian yang terlalu besar.
Gabungan dengan petunjuk jumlah dagangan: Sebagai contoh, mengurangkan jarak hentian kerugian pada tahap peningkatan jumlah dagangan, untuk mengelakkan hentian kerugian yang dirundingkan.
Gabungan dengan strategi masuk dan keluar yang lain: peranan utama strategi ini adalah untuk mengesan hentikan kerugian, boleh diintegrasikan ke dalam strategi lain dan digunakan bersama dengan peraturan masuk dan keluar.
Strategi ini mewujudkan fungsi hentian kehilangan secara dinamik berdasarkan perubahan harga tertinggi dan terendah. Ini dapat mengurangkan kerugian yang tidak perlu dalam keadaan normal, dan juga menyelesaikan masalah jarak hentian tetap yang terlalu besar dan terlalu kecil. Arah pengoptimuman utama adalah menguji parameter yang sesuai untuk pelbagai jenis, dan kawalan risiko beberapa garis K setelah membuka kedudukan.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//By River
strategy("BitMex Trailing Stop Strategy", overlay=true)
longoffset = input(defval=228.5, title="Long Trailing Stop Size", type=float, minval=0.5, maxval=1000, step=0.5)
shortoffset = input(defval=243.5, title="Short Trailing Stop Size ", type=float, minval=0.5, maxval=1000, step=0.5)
hiprice = request.security(syminfo.tickerid, "1", high)
loprice = request.security(syminfo.tickerid, "1", low)
price = request.security(syminfo.tickerid, "1", close)
trailstop = price
trailstop := (loprice <= trailstop[1] and loprice[1] >= trailstop[2]) ? price + shortoffset : ((hiprice >= trailstop[1] and hiprice[1] <= trailstop[2]) ? price - longoffset : (hiprice > trailstop[1] ? max(hiprice - longoffset, trailstop[1]) : (loprice < trailstop[1] ? min(loprice + shortoffset, trailstop[1]) : price)))
trailcol = trailstop > price ? red : green
plot(trailstop, color=trailcol)
longCondition = trailcol == green
alertcondition(longCondition, "Long Stop alert", "BUY")
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = trailcol == red
alertcondition(shortCondition, "Short alert", "SELL")
if (shortCondition)
strategy.entry("Short", strategy.short)