
Ini bukan lagi strategi pelacakan tren yang biasa-biasa saja. Strategi LTPI menggunakan 2.16 kali ATR sebagai pembalikan tren untuk memicu titik terendah, yang dengan penyaringan yang hati-hati dapat menyaring 90% dari kebisingan pasar dan tidak akan kehilangan sinyal pembuka tren yang sebenarnya. Data retrospeksi menunjukkan bahwa mekanisme penyesuaian ATR dinamis lebih stabil dalam perubahan volatilitas dibandingkan dengan penembusan harga tetap.
Kuncinya adalah untuk memicu logika: harga harus menembus garis tren saat ini ± 2.16 kali ATR untuk memicu tren baru. Ini berarti bahwa pergerakan harga yang relatif lebih besar diperlukan pada periode fluktuasi rendah dan relatif longgar pada periode fluktuasi tinggi. Hasilnya?
Garis tren tradisional adalah statis, LTPI adalah aktif. Panjang langkah dasar = 2,52 kali ATR, kemudian setiap siklus meningkatkan peningkatan ATR 0,0093 kali. Filosofi desain ini sederhana: semakin lama dan lebih besar langkah tren, semakin agresif garis tren bergerak.
Rumus matematika: stepSize = min ((2.52 × ATR + 0.0093 × durasi tren × ATR, panjang langkah maksimum)
Panjang langkah maksimum ditetapkan menjadi -0.004 kali ATR (menunjukkan skala negatif), untuk mencegah langkah yang terlalu besar dalam fluktuasi ekstrem yang menyebabkan garis tren kehilangan kendali. mekanisme akselerasi bertahap ini membuat strategi konservatif pada awal tren dan menjadi lebih agresif setelah konfirmasi tren.
Detail desain yang paling mematikan: 17 siklus terkunci yang dipaksakan setelah trend reversal, di mana setiap sinyal reversal diabaikan. Ini adalah pertahanan terakhir terhadap pasar yang bergoyang.
Mengapa 17? Pengamatan menunjukkan bahwa ini adalah titik keseimbangan:
Harga jelas: ada keterlambatan dalam pembalikan V yang cepat, tetapi sebaliknya adalah kinerja yang stabil dalam situasi yang bergolak. Ini adalah risiko-penghasilan yang tipikal, dan strategi memilih stabilitas.
Up/Down channel = trendline ± 1x ATR, ini bukan pengaturan acak. Bandwidth 1x ATR secara statistik mencakup 68% dari fluktuasi harga normal, dan hanya 32% dari tembusan yang tersisa yang dianggap sebagai sinyal yang bermakna.
Nilai sebenarnya dari saluran ini adalah:
Berbeda dengan Bollinger Bands, saluran ini didasarkan pada pergerakan ke arah tren, bukan distribusi statistik sederhana. Dalam tren yang kuat, saluran akan terus membengkok ke arah tren, memberikan batas perdagangan yang lebih akurat.
Saya tidak tahu apa-apa tentang itu.
Siapa yang dimaksud dengan taktik ini?
Tidak cocok untuk: Investor yang ingin melakukan perdagangan intraday, rekening modal kecil, dan perdagangan frekuensi tinggi.
Saran untuk menyesuaikan parameter inti:
Manajemen risiko harus ketat: risiko tunggal tidak lebih dari 2% dan total posisi tidak lebih dari 50% dari akun. Peningkatan historis tidak mewakili pendapatan masa depan, strategi memiliki risiko kerugian berturut-turut, dan diperlukan dana yang cukup untuk melindungi risiko.
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © lungusebi100
//@version=6
strategy("LTPI Strat", overlay=false, process_orders_on_close=true, calc_on_every_tick=false)
RequestSecurityNRP(_tf, _exp, _barmerge)=>
request.security(syminfo.tickerid, _tf, _exp[barstate.isrealtime ? 1 : 0],_barmerge)[barstate.isrealtime ? 0 : 1]
int indicator_1 = na
int indicator_2 = na
int indicator_3 = na
float indicator_4 = na
int indicator_5 = na
var int indicator_6 = na
int indicator_7 = na
var int indicator_8 = na
var int indicator_9 = na
var int indicator_10 = na
int indicator_11 = na
int indicator_12 = na
int indicator_13 = na
int indicator_14 = na
int indicator_15 = na
int indicator_16 = na
// ------------------------------------------------------------INDICATOR 1: Trend Impulse Channels ---------------------------------------
var string t1 = "Trigger Threshold: Controls when a new trend step is triggered. It's a multiplier of the ATR — higher values require a stronger price move to flip the trend direction."
var string t2 = "Max Step Size: Defines the maximum allowed size for each trend step, based on ATR. Use a negative number to scale down large step jumps in volatile conditions."
var string t3 = "Band Multiplier: Expands or contracts the volatility bands around the trend line. A higher value creates wider channels to account for more price fluctuation."
var string t4 = "Trend Hold: After a trend flip, the trend will hold for this many bars before another flip can occur. Useful for avoiding rapid flip-flopping in choppy markets."
var string t5 = "Retest Signals: Enables triangle markers on the chart when price re-tests the upper or lower channel boundary. Helpful for spotting potential continuation or bounce zones."
var string t6 = "Trend Filter: Only show retest signals if they align with the current trend direction (e.g., only show upper retests in a downtrend)."
var string t7 = "Trend Step Signals: Shows circular markers each time a new step is taken in the trend direction. These mark every structural trend advancement."
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Inputs {
indi_1_tf = input.timeframe(title = "Timeframe", defval="2D", group = "-------Trend Impulse Channel------")
flipMult = input.float(2.16,step=0.01, title="Trigger Threshold", group = "-------Trend Impulse Channel------", inline="", tooltip=t1)
maxStepAtr = input.float(-0.004,step=0.001, title="Max Step Size", group = "-------Trend Impulse Channel------", inline="", tooltip=t2)
bandMult = input.float(1, step=0.01,title="Band Multiplier", group = "-------Trend Impulse Channel------", inline="", tooltip=t3)
holdBars = input.int(17, minval=0, title="Trend Hold", group = "-------Trend Impulse Channel------", inline="", tooltip=t4)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
[close2d, atr2d] = request.security(syminfo.tickerid, indi_1_tf, [close, ta.atr(200)], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
// ~~ Atr Scaling {
atr = atr2d
stepBase = atr * 2.52
maxStep = atr * maxStepAtr
trigger = atr * flipMult
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Var {
var float trend = na
var int dir = 0
var int barsInTrend = 0
var float hold = na
var int extension = 0
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Logic {
startLong = close2d > nz(trend) + trigger
startShort = close2d < nz(trend) - trigger
flip = (startLong or startShort) and barsInTrend >= 0
stepSize = math.min(stepBase + 0.0093 * barsInTrend * atr, maxStep)
if na(trend)
trend := close2d
dir := 0
barsInTrend := 0
hold := trigger
extension := 0
else
if flip and extension <= 0
trend := close2d
dir := startLong ? 1 : -1
barsInTrend := 1
hold := trigger
extension := holdBars
else
trend := trend + (dir == 1 ? stepSize : dir == -1 ? -stepSize : 0)
barsInTrend += 1
extension := math.max(extension - 1, 0)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Channel {
trendDirection = dir == 1 ? 1 : dir == -1 ? -1 : 0
upper = trend + atr * bandMult
lower = trend - atr * bandMult
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// LTPI Signal
indicator_1 := dir
if indicator_1 > 0
strategy.entry("long", strategy.long)
if indicator_1 < 0
strategy.close("long")
plot (indicator_1, color = color.blue)