Heikin Ashi ROC Percentile Trading Strategy

Penulis:ChaoZhang, Tanggal: 2023-10-23 15:41:40
Tag:

img

Gambaran umum

Strategi ini disebut Heikin Ashi ROC Percentile Trading Strategy.

Logika Strategi

Strategi ini menghitung ROC dari harga penutupan Heikin Ashi selama periode rocLength yang lalu. Kemudian menghitung nilai rocLow tertinggi dan rocLow terendah dari ROC selama 50 periode terakhir. Upper rail upperKillLine dan lower rail lowerKillLine dihasilkan berdasarkan persentil tertentu dari rocHigh dan rocLow. Ketika ROC melintasi di atas lowerKillLine, posisi panjang dibuka. Ketika ROC melintasi di bawah upperKillLine, posisi panjang ditutup. Sebaliknya, ketika ROC melintasi di bawah upperKillLine, posisi pendek dibuka. Ketika ROC melintasi di atas lowerKillLine, posisi pendek ditutup.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah memanfaatkan kemampuan pelacakan tren yang kuat dari indikator ROC, dikombinasikan dengan fitur penghalusan informasi harga Heikin Ashi. Hal ini memungkinkan strategi untuk secara efektif mengidentifikasi perubahan tren dan memasuki perdagangan secara tepat waktu. Dibandingkan dengan rata-rata bergerak sederhana, ROC merespon lebih sensitif terhadap perubahan harga. Selain itu, rel atas dan bawah yang dihasilkan dari persentil dapat secara efektif menyaring konsolidasi dan menghindari perdagangan yang tidak perlu dari pecah palsu. Secara keseluruhan, strategi ini menggabungkan baik mengikuti tren dan penyaring osilasi untuk mencapai rasio risiko-manfaat yang baik dalam tren utama.

Analisis Risiko

Risiko utama dari strategi ini adalah bahwa pengaturan parameter yang tidak tepat dapat menyebabkan overtrading atau sensitivitas yang tidak cukup. Periode rocLength dan persentase lookback perlu ditetapkan dengan hati-hati, jika tidak relnya bisa menjadi terlalu kusam atau kaku, menyebabkan perdagangan yang hilang atau kerugian yang tidak perlu. Selain itu, pengaturan persentase perlu berulang kali diuji kembali dan disesuaikan untuk pasar yang berbeda untuk menemukan kombinasi yang optimal. Strategi ini juga tunduk pada kerugian tertentu ketika tren berbalik, karena ketergantungan pada indikator yang mengikuti tren. Posisi harus ditutup tepat waktu, atau menghentikan kerugian yang ditetapkan untuk mengendalikan risiko.

Arahan Optimasi

Strategi dapat dioptimalkan dengan cara berikut: 1) Tambahkan filter dengan indikator lain seperti RSI; 2) Optimalkan parameter secara dinamis dengan pembelajaran mesin; 3) Tentukan stop loss dan take profit untuk manajemen risiko otomatis; 4) Gabungkan dengan strategi non-trend untuk menyeimbangkan risiko.

Ringkasan

Singkatnya, strategi ini memanfaatkan kemampuan pelacakan tren yang kuat dari indikator ROC, dikombinasikan dengan Heikin Ashi untuk identifikasi tren dan mengikuti. Rel atas dan bawah yang dihasilkan dari persentil ROC memungkinkan penyaringan kerugian yang efektif. Ini mencapai kinerja pelacakan tren yang baik. Keuntungannya terletak pada identifikasi perubahan tren dan mengikuti tren utama secara tepat waktu, sambil menyaring konsolidasi dengan rel. Namun, pengaturan parameter yang tidak tepat dapat mempengaruhi kinerja, dan risiko pembalikan tren tetap ada. Mengoptimalkan lebih lanjut pemilihan parameter dan berhenti dapat membantu mendapatkan hasil yang lebih konsisten.


/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jensenvilhelm

//@version=5
strategy("Heikin Ashi ROC Percentile Strategy", shorttitle="ROC ON" , overlay=false)

// User Inputs
zerohLine = input(0, title="Midline")  // Zero line, baseline for ROC (customer can modify this to adjust midline)
rocLength = input(100, title="roc Length")  // Lookback period for SMA and ROC (customer can modify this to adjust lookback period)

stopLossLevel = input(2, title="Stop Loss (%)")  // Level at which the strategy stops the loss (customer can modify this to adjust stop loss level)
startDate = timestamp("2015 03 03")  // Start date for the strategy (customer can modify this to adjust start date)

// Heikin Ashi values
var float haClose = na  // Define Heikin Ashi close price
var float haOpen = na  // Define Heikin Ashi open price
haClose := ohlc4  // Calculate Heikin Ashi close price as average of OHLC4 (no customer modification needed here)
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2  // Calculate Heikin Ashi open price (no customer modification needed here)

// ROC Calculation
roc = ta.roc(ta.sma(haClose, rocLength), rocLength)  // Calculate Rate of Change (ROC) (customer can modify rocLength in the inputs)
rocHigh = ta.highest(roc, 50)  // Get the highest ROC of the last 50 periods (customer can modify this to adjust lookback period)
rocLow = ta.lowest(roc, 50)  // Get the lowest ROC of the last 50 periods (customer can modify this to adjust lookback period)
upperKillLine = ta.percentile_linear_interpolation(rocHigh, 10, 75)  // Calculate upper kill line (customer can modify parameters to adjust this line)
lowerKillLine = ta.percentile_linear_interpolation(rocLow, 10, 25)  // Calculate lower kill line (customer can modify parameters to adjust this line)

// Trade conditions
enterLong = ta.crossover(roc, lowerKillLine)  // Define when to enter long positions (customer can modify conditions to adjust entry points)
exitLong = ta.crossunder(roc, upperKillLine)  // Define when to exit long positions (customer can modify conditions to adjust exit points)
enterShort = ta.crossunder(roc, upperKillLine)  // Define when to enter short positions (customer can modify conditions to adjust entry points)
exitShort = ta.crossover(roc, lowerKillLine )  // Define when to exit short positions (customer can modify conditions to adjust exit points)

// Strategy execution
if(time >= startDate)  // Start strategy from specified start date
    if (enterLong)
        strategy.entry("Long", strategy.long)  // Execute long trades
    if (exitLong)
        strategy.close("Long")  // Close long trades
    if (enterShort)
        strategy.entry("Short", strategy.short)  // Execute short trades
    if (exitShort)
        strategy.close("Short")  // Close short trades

// Plotting
plot(zerohLine,title="Zeroline")  // Plot zero line
plot(roc, "RSI", color=color.rgb(248, 248, 248))  // Plot ROC
plot(rocHigh, "Roc High", color = color.rgb(175, 78, 76))  // Plot highest ROC
plot(rocLow, "Roc Low", color = color.rgb(175, 78, 76))  // Plot lowest ROC
plot(upperKillLine, "Upper Kill Line", color = color.aqua)  // Plot upper kill line
plot(lowerKillLine, "Lower Kill Line", color = color.aqua)  // Plot lower kill line


Lebih banyak