Dinamis mengambil keuntungan mengikut strategi trend

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

img

Ringkasan

Strategi Dynamic Take Profit Following Trend mengesan trend jangka panjang dan penarikan balik jangka pendek untuk mencapai membeli rendah dan menjual tinggi, dengan tujuan mengejar trend menaik. Strategi ini juga menggunakan unit turun naik untuk mengesan saiz kemenangan dan kerugian supaya ia dapat digunakan untuk semua syiling tanpa perlu bimbang tentang perubahan peratusan.

Logika Strategi

Logik pembelian strategi ini adalah: apabila trend kenaikan jangka panjang muncul (EMA 200 hari naik, RSI 200 hari lebih besar daripada 51) dan penurunan jangka pendek berlaku (dua candlestick terakhir menunjukkan harga penutupan menurun), kedudukan panjang dibuka.

Logik penjualan adalah: mengambil keuntungan apabila harga meningkat lebih daripada 1 unit turun naik; hentikan kerugian apabila harga menurun lebih daripada 2 unit turun naik.

Unit turun naik dikira sebagai: 2 kali deviasi standard harga penutupan dalam 50 hari terakhir. Ini boleh mengesan keadaan turun naik syiling yang berbeza secara automatik tanpa memerlukan tetapan peratusan manual.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah bahawa ia dapat secara dinamik mengesan saiz turun naik syiling yang berbeza dan menetapkan tahap stop loss / mengambil keuntungan dengan sewajarnya. Ini mengelakkan masalah tetapan peratusan tetap dan dapat menyesuaikan diri dengan lebih banyak syiling.

Satu lagi kelebihan adalah menggabungkan penghakiman jangka panjang dan jangka pendek dapat menyaring pecah palsu dengan berkesan. Menggunakan trend jangka panjang untuk menilai syiling yang berpotensi naik dan menggabungkannya dengan isyarat mundur jangka pendek dapat mengelakkan isyarat palsu seperti memerah Bollinger.

Analisis Risiko

Risiko terbesar strategi ini adalah tetapan unit stop loss / take profit. Jika turun naik terlalu tinggi, jarak mengambil keuntungan mungkin terlalu dekat untuk terus mengejar trend menaik; jika turun naik terlalu rendah, stop loss mungkin mencetuskan terlalu cepat. Ini memerlukan EMA jangka panjang sebagai bantuan untuk mengelakkan kesilapan dalam penilaian unit turun naik.

Risiko lain adalah strategi bergantung pada trend jangka pendek. Jika terdapat trend menaik jangka panjang tanpa penarikan balik jangka pendek, masa masuk akan terlepas. Ini mungkin memerlukan penunjuk sokongan tambahan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan ke arah berikut:

  1. Tambah penilaian EMA jangka panjang untuk mengelakkan kesilapan unit turun naik

  2. Tambah penunjuk seperti jumlah dagangan untuk menilai trend, mengurangkan pergantungan pada lilin jangka pendek

  3. Mengoptimumkan syarat kemasukan dan keluar, menetapkan peraturan kemasukan yang lebih ketat

  4. Gabungkan algoritma pembelajaran mesin untuk menentukan arah trend, mencapai kadar kemenangan yang lebih tinggi

Kesimpulan

Strategi mengambil keuntungan dinamik mengikuti trend mempunyai logika yang jelas di terasnyamenentukan unit stop loss / mengambil keuntungan secara dinamik. Strategi ini dapat menyesuaikan tetapan di seluruh syiling secara automatik tanpa memerlukan input peratusan manual. Sementara itu, menggabungkan pengesahan ganda trend jangka panjang dan jangka pendek dapat menapis isyarat palsu dengan berkesan. Dengan pengoptimuman lanjut, strategi ini boleh menjadi strategi mengejar trend yang sangat cekap.


/*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 lanjut