Ambil Keuntungan dari Strategi Tren

Penulis:ChaoZhang, Tanggal: 2023-09-26 11:22:04
Tag:

Gambaran umum

Strategi Take Profit on Trend bertujuan untuk mendeteksi tren jangka panjang dan penurunan jangka pendek, mengambil posisi panjang selama tren kenaikan secara keseluruhan sambil menangkap penurunan jangka pendek, dengan level stop loss dan take profit yang wajar diatur untuk mengikuti tren dan mengambil keuntungan secara tepat waktu.

Logika Strategi

Strategi ini terutama menggunakan EMA dan RSI untuk menentukan tren jangka panjang dan jangka pendek. Secara khusus, ia menggunakan EMA 50 hari dan EMA 200 hari untuk menilai tren jangka panjang, dan RSI untuk mengukur kekuatan tren. Ketika jangka panjang berada dalam tren naik (200 hari EMA naik) dan kuat (RSI di atas 50), dan jangka pendek melihat pullback (terakhir 2 lilin menutup lebih rendah), posisi panjang diambil.

Setelah memasuki posisi, strategi menetapkan kondisi stop loss dan take profit. Ketika harga naik lebih dari 2x unit BHD di atas harga masuk, keuntungan diambil. Ketika harga turun lebih dari 3x unit BHD di bawah harga masuk, posisi dihentikan.

Dengan cara ini, strategi sepenuhnya mempertimbangkan karakteristik tren jangka panjang dan pendek, meningkatkan keuntungan sambil mengendalikan risiko, mengikuti tren sambil mengambil keuntungan tepat waktu.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Mempertimbangkan tren jangka panjang dan jangka pendek, dikombinasikan dengan indikator kekuatan, menghindari entri buta di berbagai pasar.

  2. Entri mengikuti arah tren, tingkat kemenangan yang lebih tinggi.

  3. Take profit dan stop loss point memungkinkan pengambilan keuntungan dan pengendalian risiko yang tepat waktu.

  4. TP dan SL dinamis berdasarkan volatilitas, relatif wajar.

  5. Tes balik menunjukkan hasil yang baik dan stabilitas di seluruh simbol dan kerangka waktu.

  6. Logika yang sederhana dan jelas, mudah dipahami dan diterapkan untuk semua tingkat keterampilan.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Kesalahan penilaian jangka panjang/pendek yang mengarah ke arah masuk yang salah.

  2. Kecelakaan pasar seperti tebing dapat menembus berhenti.

  3. Pengaturan parameter yang buruk berdampak negatif pada kinerja.

  4. TP diatur terlalu ketat, mungkin keluar lebih awal.

  5. Backtest ≠ kinerja langsung, optimasi terus-menerus diperlukan.

Solusi:

  1. Optimalkan parameter, sesuaikan periode MA, tambahkan indikator cross-validation.

  2. Stop yang lebih luas, ukuran posisi, kontrol risiko lainnya.

  3. Pengujian backtesting untuk mengevaluasi parameter.

  4. Optimasi TP dinamis berdasarkan kondisi pasar.

  5. Pengujian backtesting yang sedang berlangsung, optimalisasi, penyesuaian langsung.

Arahan Optimasi

Strategi dapat dioptimalkan lebih lanjut dengan:

  1. Pengaturan parameter, periode MA, periode unit BHD dll.

  2. Menambahkan indikator, MACD, KD dll untuk akurasi jangka pendek yang lebih baik.

  3. Mengoptimalkan TP/SL, ukuran dinamis berdasarkan volatilitas dll.

  4. Menambahkan ukuran posisi berdasarkan kekuatan tren.

  5. Mencoba ketahanan di lebih banyak simbol dan kerangka waktu.

  6. Menambahkan filter seperti harga penutupan > terbuka untuk menghindari perangkap.

  7. Mengintegrasikan pembelajaran mesin untuk lebih banyak otomatisasi dan kecerdasan.

Ini dapat meningkatkan tingkat kemenangan, pengembalian, stabilitas, kemampuan beradaptasi dll.

Kesimpulan

Secara keseluruhan strategi Take Profit on Trend memiliki kelebihan mempertimbangkan tren panjang/pendek, mengikuti tren, jelas TP/SL. Ini adalah pendekatan trend berikut yang stabil dan efisien. Tetapi risiko ada, membutuhkan optimasi berkelanjutan dan penyesuaian langsung. Logika jelas dan mudah diterapkan. Layak dipelajari dan diterapkan untuk pedagang. Dengan optimasi lebih lanjut, ini dapat menjadi strategi kuantitatif yang kuat.


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 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/
// © BHD_Trade_Bot

// @version=5
strategy(
 shorttitle            = 'Take Profit On Trend',
 title                 = 'Take Profit On Trend (by BHD_Trade_Bot)',
 overlay               = true,
 calc_on_every_tick    = true,
 calc_on_order_fills   = true,
 use_bar_magnifier     = true,
 initial_capital       = 1000,
 default_qty_type      = strategy.percent_of_equity,
 default_qty_value     = 100,
 commission_type       = strategy.commission.percent,
 commission_value      = 0.1)



// Backtest Time Period
start_year   = input(title='Start year'   ,defval=2021)
start_month  = input(title='Start month'  ,defval=1)
start_day    = input(title='Start day'    ,defval=1)
start_time = timestamp(start_year, start_month, start_day, 00, 00)

end_year     = input(title='end year'     ,defval=2050)
end_month    = input(title='end month'    ,defval=1)
end_day      = input(title='end day'      ,defval=1)
end_time = timestamp(end_year, end_month, end_day, 23, 59)

is_back_test_time() => true



// EMA
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)

// RSI
rsi200 = ta.rsi(close, 200)

// EMA_CD
emacd = ema50 - ema200
emacd_signal = ta.ema(emacd, 50)
hist = emacd - emacd_signal

// BHD Unit
bhd_unit = ta.rma(high - low, 200) * 2
bhd_upper = ema200 + bhd_unit
bhd_lower = ema200 - bhd_unit



// All n candles is going down
all_body_decrease(n) =>
    isValid = true
    for i = 0 to (n - 1)
        if (close[i] > close[i + 1])
            isValid := false
            break
    isValid



// ENTRY CONDITIONS

// Long-term uptrend
entry_condition1 = rsi200 > 51 and hist > 0

// Short-term downtrend
entry_condition2 = all_body_decrease(2)

ENTRY_CONDITIONS = entry_condition1 and entry_condition2

if ENTRY_CONDITIONS and is_back_test_time()
    strategy.entry('entry', strategy.long)


// CLOSE CONDITIONS

// Price increase 2 BHD unit
take_profit = close > strategy.position_avg_price + bhd_unit * 2

// Price decrease 3 BHD unit
stop_loss = close < strategy.position_avg_price - bhd_unit * 3

CLOSE_CONDITIONS = take_profit or stop_loss

if CLOSE_CONDITIONS
    strategy.close('entry')



// Draw
plot(ema50, color=color.orange, linewidth=2)
plot(ema200, color=color.purple, linewidth=2)
bhd_upper_line = plot(bhd_upper, color=color.teal)
bhd_lower_line = plot(bhd_lower, color=color.teal)
fill(bhd_upper_line, bhd_lower_line, color=color.new(color.teal, 90))


Lebih banyak