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 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.
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.
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.
Strategi dapat dioptimalkan dalam arah berikut:
Tambahkan penilaian EMA jangka panjang untuk menghindari kesalahan unit volatilitas
Tambahkan indikator seperti volume perdagangan untuk menilai tren, mengurangi ketergantungan pada lilin jangka pendek
Mengoptimalkan kondisi masuk dan keluar, menetapkan aturan masuk yang lebih ketat
Menggabungkan algoritma pembelajaran mesin untuk menentukan arah tren, mencapai tingkat kemenangan yang lebih tinggi
Strategi Take Profit Dynamic Following Trend memiliki logika yang jelas di intinya
/*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)