Strategi Mengikuti Trend Momentum

Penulis:ChaoZhang, Tarikh: 2024-03-11 10:53:50
Tag:

img

Ringkasan

Strategi ini menggabungkan penunjuk Aroon dan Histogram Kekuatan Absolut (ASH) untuk mengenal pasti trend pasaran dan peluang perdagangan yang berpotensi. Aroon membantu menentukan kekuatan dan arah trend, sementara ASH memberikan wawasan mengenai kekuatan momentum. Dengan menggabungkan penunjuk ini, strategi ini bertujuan untuk menangkap perdagangan yang menguntungkan di pasaran Ethereum.

Logika Strategi

Strategi menggunakan dua set parameter untuk penunjuk Aroon:

  • Posisi Lama: Tempoh Aroon ialah 56 (atas) dan 20 (bawah)
  • Posisi Pendek: Tempoh Aroon ialah 17 (atas) dan 55 (bawah)

ASH dikira dengan panjang 9 bar menggunakan harga penutupan sebagai sumber data.

Strategi ini merangkumi peraturan kemasukan dan keluar khusus:

  1. Long Entry: Posisi panjang dimulakan apabila penunjuk Aroon melintasi ambang bawah, menandakan potensi kenaikan.
  2. Keluar panjang: Posisi panjang ditutup apabila Aroon melintasi balik di bawah ambang bawah.
  3. Entry Pendek: Posisi pendek dimulakan apabila Aroon melintasi di bawah ambang atas, menandakan kemungkinan penurunan.
  4. Keluar Pendek: Posisi pendek ditutup apabila Aroon melintasi kembali sempadan atas.

Analisis Kelebihan

Kelebihan utama strategi ini adalah sinergi daripada menggabungkan kedua-dua penunjuk. Aroon secara berkesan mengukur arah trend dan kekuatan. ASH menyediakan wawasan momentum tambahan untuk membantu dengan isyarat kemasukan dan keluar masa.

Menggunakan dua parameter Aroon membolehkan fleksibiliti dalam menyesuaikan diri dengan keadaan pasaran yang berubah.

Analisis Risiko

Aroon berjuang semasa pasaran yang terikat julat dan boleh menghasilkan isyarat palsu. ASH juga terdedah kepada reaksi berlebihan dalam jangka pendek.

Tetapan parameter yang tidak sesuai juga boleh menjejaskan prestasi. Tempoh panjang / pendek Aroon dan panjang ASH memerlukan pengoptimuman untuk mencari kombinasi yang ideal.

Arahan Penambahbaikan

Penapis tambahan boleh ditambahkan, seperti penembusan harga atau peningkatan jumlah, untuk mengelakkan isyarat palsu semasa keadaan yang bergolak.

Kombinasi parameter dan berat yang berbeza boleh diuji untuk mencari tetapan optimum. Penunjuk lain seperti RSI atau KD juga boleh melengkapi strategi.

Kesimpulan

Strategi ini secara berkesan menggabungkan kekuatan Aroon dan ASH untuk pengesahan dua arah trend dan titik balik. Tetapi parameter dan batasan penunjuk masih perlu disempurnakan. Konsep kreatif menunjukkan janji untuk penambahbaikan dan ujian 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






Lebih lanjut