
Strategi ini menggunakan indikator Aroon dan indikator kekuatan mutlak ((ASH) untuk mengidentifikasi tren pasar dan peluang perdagangan potensial. Aroon membantu mengidentifikasi kekuatan dan arah tren, sementara ASH memberikan wawasan tentang kekuatan momentum. Dengan menggabungkan indikator-indikator ini, strategi ini mencoba untuk menangkap peluang perdagangan yang menguntungkan di pasar Ethereum.
Strategi ini menggunakan dua set parameter indikator Aroon:
ASH memiliki panjang 9 baris K dan menggunakan harga close out sebagai sumber datanya.
Strategi ini mencakup persyaratan masuk dan keluar yang spesifik:
Keuntungan terbesar dari strategi ini adalah kombinasi dari dua indikator. Aroon indikator dapat secara efektif menilai arah dan kekuatan tren, dan ASH indikator memberikan wawasan tambahan tentang momentum yang membantu menilai waktu masuk dan keluar.
Selain itu, dengan menggunakan dua set parameter yang berbeda untuk penilaian Aroon, dapat secara fleksibel beradaptasi dengan perubahan tren pasar.
Risiko utama dari strategi ini terletak pada keterbatasan indikator itu sendiri. Indikator Aroon lemah terhadap pasar yang bergelombang, mudah menghasilkan sinyal yang salah. Indikator ASH juga lebih sensitif terhadap perubahan yang berlebihan dalam jangka pendek.
Selain itu, pengaturan parameter yang tidak tepat juga dapat mempengaruhi kinerja strategi. Periode panjang dan pendek dari indikator Aroon dan panjang indikator ASH perlu dioptimalkan dan diuji untuk menemukan kombinasi parameter yang optimal.
Anda dapat mempertimbangkan untuk menambahkan filter, seperti harga terobosan, volume transaksi meningkat, dan lain-lain, untuk menghindari sinyal yang salah dalam situasi yang bergolak.
Anda dapat menguji berbagai kombinasi parameter indikator dan bobot untuk menemukan parameter yang optimal. Anda juga dapat mencoba menggabungkan indikator lain, seperti RSI, KD, dan lain-lain, untuk membentuk kombinasi indikator yang lebih kuat dan meningkatkan kinerja strategi.
Strategi ini mengintegrasikan keunggulan penggunaan dua indikator Aroon dan ASH, dengan konfirmasi dua indikator, lebih efektif dalam menilai tren dan menangkap titik balik. Namun, pengaturan parameter dan keterbatasan indikator itu sendiri masih perlu dioptimalkan. Secara keseluruhan, ide ini baru dan layak untuk ditingkatkan dan diverifikasi lebih lanjut.
/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// © IkkeOmar
//@version=5
strategy("Aroon and ASH strategy - ETHERIUM [IkkeOmar]", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=1, commission_value=0, slippage=2)
// AROON SETTINGS ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Inputs for longs
length_upper_long = input.int(56, minval=15)
length_lower_long = input.int(20, minval=5)
// Inputs for shorts
//Aroon Short Side Inputs
length_upper_short = input.int(17, minval=10)
length_lower_short = input.int(55)
// ABSOLUTE STRENGTH HISTOGRAM SETTINGS ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
length = input(title='Length', defval=9)
src = input(title='Source', defval=close)
// CALCULATIONS: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Aroon
upper_long = 100 * (ta.highestbars(high, length_upper_long + 1) + length_upper_long) / length_upper_long
lower_long = 100 * (ta.lowestbars(low, length_lower_long + 1) + length_lower_long) / length_lower_long
upper_short = 100 * (ta.highestbars(high, length_upper_short + 1) + length_upper_short) / length_upper_short
lower_short = 100 * (ta.lowestbars(low, length_lower_short + 1) + length_lower_short) / length_lower_short
// Ahrens Moving Average
ahma = 0.0
ahma := nz(ahma[1]) + (src - (nz(ahma[1]) + nz(ahma[length])) / 2) / length
// CONDITIONS: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Options that configure the backtest start date
startDate = input(title='Start Date', defval=timestamp('01 Jan 2018 00:00'))
// Option to select trade directions
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Long')
// Translate input into trading conditions
longOK = tradeDirection == 'Long' or tradeDirection == 'Both'
shortOK = tradeDirection == 'Short' or tradeDirection == 'Both'
// Check if the close time of the current bar falls inside the date range
inDateRange = true
longCondition = ta.crossover(upper_long, lower_long) and inDateRange and lower_long >= 5 and longOK
longCloseCondition = ta.crossunder(upper_long, lower_long) and inDateRange
shortCondition = ta.crossunder(upper_short, lower_short) and inDateRange and shortOK
shortCloseCondition = ta.crossover(upper_short, lower_short) and inDateRange
// Start off with the initial states for the longs and shorts
var in_short_trade = false
var in_long_trade = false
var long_signal = false
var short_signal = false
if longCondition
long_signal := true
if longCloseCondition
long_signal := false
if shortCondition
short_signal := true
if shortCloseCondition
short_signal := false
// While no trades active and short condition is met, OPEN short
if true and in_short_trade == false and in_long_trade == false and shortCondition
strategy.entry("short", strategy.short, when = shortCondition)
in_short_trade := true
in_long_trade := false
// While no trades and long condition is met, OPEN LONG
if true and in_short_trade == false and in_long_trade == false and longCondition
strategy.entry("long", strategy.long, when = longCondition)
in_long_trade := true
in_short_trade := false
// WHILE short trade and long condition is met, CLOSE SHORT and OPEN LONG
if true and in_short_trade == true and in_long_trade == false and longCondition
// strategy.close("short", when = longCondition)
strategy.entry("long", strategy.long, when = longCondition)
in_short_trade := false
in_long_trade := true
// WHILE long trade and short condition is met, CLOSE LONG and OPEN SHORT
if true and in_short_trade == false and in_long_trade == true and shortCondition
// strategy.close("long", when = shortCondition)
strategy.entry("short", strategy.short, when = shortCondition)
in_short_trade := true
in_long_trade := false
// WHILE long trade and exit long condition is met, CLOSE LONG
// if short signal is active, OPEN SHORT
if true and in_short_trade == false and in_long_trade == true and longCloseCondition
if short_signal
strategy.entry("short", strategy.short, when = short_signal)
in_long_trade := false
in_short_trade := true
else
strategy.close("long", when = longCloseCondition)
in_long_trade := false
in_short_trade := false
// if in short trade only and exit short condition is met, close the short
// if long signal still active, OPEN LONG
if true and in_short_trade == true and in_long_trade == false and shortCloseCondition
if long_signal
strategy.entry("long", strategy.long, when = long_signal)
in_short_trade := false
in_long_trade := true
else
strategy.close("short", when = shortCloseCondition)
in_short_trade := false
in_long_trade := false