
Strategi penarikan trend dinamik dengan mengesan trend jangka panjang dan penyesuaian jangka pendek, mencapai tujuan pembelian rendah dan jual tinggi, mengejar trend kenaikan. Strategi ini menggunakan unit turun naik untuk mengesan saiz keuntungan dan kerugian, menjadikannya berlaku untuk semua mata wang tanpa perlu bimbang tentang perubahan peratusan.
Logik membeli strategi ini adalah: membeli dan membuka kedudukan apabila terdapat trend kenaikan jangka panjang ((EMA 200 hari meningkat, RSI 200 hari lebih besar daripada 51) dan pemulihan penurunan jangka pendek ((harga penutupan 2 K terakhir turun)).
Logik penjualan adalah: berhenti apabila harga naik lebih dari 1 unit turun naik; berhenti apabila harga turun lebih dari 2 unit turun naik.
Unit turun naik dikira sebagai: 2 kali perbezaan standard harga penutupan dalam 50 hari sebagai unit turun naik asas. Oleh itu, turun naik sendiri dalam mata wang yang berbeza dapat dikesan, tanpa perlu menetapkan peratusan.
Kelebihan utama strategi ini adalah bahawa anda boleh secara dinamik mengesan saiz turun naik mata wang yang berbeza, dan menetapkan unit hentian dan kerugian berdasarkan turun naik mata wang itu sendiri. Ini mengelakkan masalah penetapan peratusan yang tetap dan dapat menyesuaikan diri dengan lebih banyak mata wang secara automatik.
Kelebihan lain adalah gabungan penilaian jangka pendek yang panjang, yang dapat menyaring penipuan palsu. Menggunakan trend jangka panjang untuk menilai mata wang yang mungkin naik di masa depan, dan gabungan isyarat panggilan balik jangka pendek, yang dapat menghalang isyarat palsu seperti squeeze Brin.
Risiko terbesar strategi ini terletak pada penyetempatan unit stop loss. Jika pergerakan terlalu besar, jarak stop loss mungkin terlalu dekat dan tidak dapat diikuti secara berterusan; jika pergerakan terlalu kecil, ia mungkin terhenti terlalu cepat. Ini memerlukan EMA yang lebih lama sebagai tambahan untuk mengelakkan kesalahan penilaian unit pergerakan.
Risiko lain ialah strategi bergantung pada penilaian trend jangka pendek. Jika terdapat kenaikan jangka panjang tetapi tidak membetulkan jangka pendek, anda akan kehilangan masa masuk. Ini mungkin memerlukan penambahan petunjuk penilaian tambahan.
Strategi ini boleh dioptimumkan dalam beberapa arah:
Menambah penghakiman EMA jangka panjang untuk mengelakkan kesilapan unit pergerakan
Meningkatkan jumlah transaksi untuk menilai trend dan mengurangkan kebergantungan pada garis k jangka pendek
Optimumkan syarat untuk membuka dan menyimpan, menetapkan peraturan kemasukan yang lebih ketat
Menggabungkan algoritma pembelajaran mesin untuk menentukan arah trend, mencapai kadar kemenangan yang lebih tinggi
Strategi trend tracking yang dinamik adalah strategi yang jelas, dan terasnya terletak pada pengaturan unit pergerakan yang dinamik. Strategi ini dapat menyesuaikan diri secara automatik dengan unit keuntungan dan kerugian yang ditetapkan dalam mata wang yang berbeza, tanpa perlu menetapkan peratusan secara manual.
/*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)