Dinamis Mengambil Keuntungan Mengikuti Strategi Tren

Penulis:ChaoZhang, Tanggal: 2023-12-29 16:06:54
Tag:

img

Gambaran umum

Strategi Dynamic Take Profit Following Trend mendeteksi tren jangka panjang dan mundur jangka pendek untuk mencapai pembelian rendah dan penjualan tinggi, dengan tujuan mengejar tren naik. Strategi ini juga menggunakan unit volatilitas untuk mendeteksi ukuran kemenangan dan kerugian sehingga dapat diterapkan pada semua koin tanpa khawatir tentang perubahan persentase.

Logika Strategi

Logika pembelian dari strategi ini adalah: ketika tren kenaikan jangka panjang muncul (EMA 200 hari naik, RSI 200 hari lebih besar dari 51) dan penurunan jangka pendek terjadi (dua candlestick terakhir menunjukkan penurunan harga penutupan), posisi panjang dibuka.

Logika penjualan adalah: mengambil keuntungan ketika harga meningkat lebih dari 1 unit volatilitas; stop loss ketika harga menurun lebih dari 2 unit volatilitas.

Unit volatilitas dihitung sebagai: 2 kali standar deviasi harga penutupan dalam 50 hari terakhir. Ini dapat mendeteksi kondisi volatilitas koin yang berbeda secara otomatis tanpa perlu pengaturan persentase manual.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa ia dapat secara dinamis mendeteksi ukuran volatilitas koin yang berbeda dan mengatur tingkat stop loss / take profit sesuai dengan itu.

Keuntungan lain adalah menggabungkan penilaian jangka panjang dan jangka pendek dapat secara efektif menyaring keluar breakout palsu. Menggunakan tren jangka panjang untuk menilai koin yang berpotensi naik dan menggabungkannya dengan sinyal pullback jangka pendek dapat menghindari sinyal palsu seperti menekan Bollinger.

Analisis Risiko

Risiko terbesar dari strategi ini adalah pengaturan unit stop loss/take profit. Jika volatilitas terlalu tinggi, jarak take profit mungkin terlalu dekat untuk terus mengejar uptrend; jika volatilitas terlalu rendah, stop loss dapat memicu terlalu cepat. Ini membutuhkan EMA jangka panjang sebagai bantuan untuk menghindari kesalahan dalam penilaian unit volatilitas.

Risiko lain adalah strategi bergantung pada tren jangka pendek. Jika ada tren kenaikan jangka panjang tanpa penarikan jangka pendek, waktu masuk akan terlewatkan. Ini mungkin memerlukan indikator pendukung tambahan.

Arahan Optimasi

Strategi dapat dioptimalkan dalam arah berikut:

  1. Tambahkan penilaian EMA jangka panjang untuk menghindari kesalahan unit volatilitas

  2. Tambahkan indikator seperti volume perdagangan untuk menilai tren, mengurangi ketergantungan pada lilin jangka pendek

  3. Mengoptimalkan kondisi masuk dan keluar, menetapkan aturan masuk yang lebih ketat

  4. Menggabungkan algoritma pembelajaran mesin untuk menentukan arah tren, mencapai tingkat kemenangan yang lebih tinggi

Kesimpulan

Strategi Take Profit Dynamic Following Trend memiliki logika yang jelas di intinya secara dinamis mengatur unit stop loss/take profit. Strategi ini dapat secara otomatis menyesuaikan pengaturan di seluruh koin tanpa memerlukan input persentase manual. Sementara itu, menggabungkan konfirmasi ganda tren jangka panjang dan jangka pendek dapat secara efektif menyaring sinyal palsu. Dengan optimasi lebih lanjut, strategi ini dapat menjadi strategi mengejar tren yang sangat efisien.


/*backtest
start: 2022-12-22 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// 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

strategy(shorttitle='Take Profit On Trend',
 title='Take Profit On Trend (by BHD_Trade_Bot)',
 overlay=true,
 initial_capital = 15,
 default_qty_type = strategy.cash,
 default_qty_value = 15,
 commission_type=strategy.commission.percent,
 commission_value=0.1)



//Backtest Time
start_day = 1
start_month = 1
start_year = 2021
end_day = 1
end_month = 1
end_year = 2050
start_time = timestamp(start_year, start_month, start_day, 00, 00)
end_time = timestamp(end_year, end_month, end_day, 23, 59)
is_back_test_time() =>
    time >= start_time and time <= end_time ? true : false

// Last bar
h1_last_bar = (timenow - time)/1000/60/60 < 2



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

// RSI length 200
rsi200 = rsi(close, 200)

// Bollinger Bands length 50
bb50 = 2 * stdev(close, 50)

// BHD Unit
bhd_unit = sma(bb50, 100)
bb50_upper = ema50 + bhd_unit
bb50_lower = ema50 - 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

// Long-term uptrend
entry_condition1 = rsi200 > 51 

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

ENTRY_CONDITION = entry_condition1 and entry_condition2

if (ENTRY_CONDITION and is_back_test_time())
    strategy.entry("entry", strategy.long)



// CLOSE CONDITIONS

// Price increase 1 BHD unit
TAKE_PROFIT = close > strategy.position_avg_price + bhd_unit

// Price decrease 2 BHD unit
STOP_LOSS = close < strategy.position_avg_price - bhd_unit * 2

CLOSE_CONDITION = TAKE_PROFIT or STOP_LOSS

if (CLOSE_CONDITION or h1_last_bar)
    strategy.close("entry")



// Draw
plot(ema50)
plot(ema200, color=color.yellow)
plot(bb50_upper)
plot(bb50_lower)


Lebih banyak