Strategi Jalur Sasaran Kemeruapan yang Dilancarkan


Tarikh penciptaan: 2024-01-29 16:22:14 Akhirnya diubah suai: 2024-01-29 16:22:14
Salin: 0 Bilangan klik: 591
1
fokus pada
1617
Pengikut

Strategi Jalur Sasaran Kemeruapan yang Dilancarkan

Gambaran keseluruhan

Strategi ini berdasarkan pada pergerakan harga yang halus, menghasilkan kawasan sasaran harga, dan menghasilkan isyarat perdagangan apabila harga menembusi kawasan sasaran.

Prinsip Strategi

Strategi ini pertama-tama mengira amplitudo turun naik purata harga dalam tempoh tertentu, dan kemudian memproses amplitudo turun naik dengan rata-rata bergerak indeks untuk menghasilkan kadar turun naik yang lancar. Kadar turun naik yang lancar dikali dengan faktor, untuk mendapatkan ruang lingkup target band. Apabila harga menembusi sasaran band, untuk menghasilkan isyarat beli; Apabila harga menembusi sasaran band, untuk menghasilkan isyarat jual.

Khususnya, strategi ini menggunakan fungsi smoothrng untuk mengira kadar turun naik smrng, dan kemudian mengira hband dan lband tren atas dan bawah pada jalur sasaran berdasarkan nilai smrng. Atas dasar ini, anda menetapkan longCondition dan shortCondition. Apabila syarat posisi panjang dipenuhi, anda menghasilkan isyarat beli; apabila syarat posisi pendek dipenuhi, anda menghasilkan isyarat jual.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Penggunaan turun naik harga untuk membina isyarat dagangan, dapat mengesan perubahan pasaran dengan berkesan.

  2. Indeks bergerak rata-rata untuk meluruskan turun naik, menapis bunyi bising dan menghasilkan isyarat dagangan yang lebih dipercayai.

  3. Julat jalur sasaran boleh disesuaikan dengan faktor kadar turun naik, menjadikan strategi lebih fleksibel.

  4. Berpadu dengan penilaian harga terobosan, peluang perdagangan dapat ditangkap tepat pada masanya apabila trend bertukar.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Apabila pasaran mengalami turun naik yang tidak normal, kadar turun naik yang diluruskan mungkin tidak dapat mencerminkan pergerakan sebenar dengan tepat, yang menyebabkan isyarat yang salah. Model boleh dioptimumkan dengan menyesuaikan parameter.

  2. Julat jalur sasaran jika tidak ditetapkan dengan betul, mungkin menyebabkan frekuensi perdagangan terlalu tinggi atau isyarat tidak mencukupi.

  3. Kesimpulan bahawa isyarat penembusan terdapat kelewatan masa, yang boleh menyebabkan kemasukan terlalu awal atau terlalu lewat. Ia boleh disahkan dengan gabungan petunjuk lain.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Uji pelbagai kitaran data harga untuk mencari parameter kitaran yang paling sesuai untuk mengira kadar turun naik.

  2. Cuba menggunakan algoritma purata bergerak yang berbeza, seperti purata bergerak linear.

  3. Masukkan jumlah dagangan atau petunjuk lain untuk mengesahkan isyarat penembusan.

  4. Tetapkan titik hentian atau trailing stop untuk mengawal hentian tunggal.

  5. Optimumkan nilai faktor turun naik mult untuk menentukan julat band sasaran terbaik.

ringkaskan

Strategi ini mempunyai konsep yang jelas, membina jalur sasaran melalui turun naik harga, memanfaatkan harga untuk menghasilkan isyarat perdagangan, dan dapat mengesan trend perubahan pasaran dengan berkesan. Tetapi ada ruang untuk penambahbaikan, dengan cara mengoptimumkan parameter, memperkenalkan indikator pengesahan dan lain-lain.

Kod sumber strategi
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("1SmSm1 Strategy", shorttitle="1SmSm1", overlay=true)

// Source
src = input(defval=close, title="Source")

// Sampling Period
per = input(defval=100, minval=1, title="Sampling Period")

// Range Multiplier
mult = input(defval=3.0, minval=0.1, title="Range Multiplier")

// Smooth Average Range
smoothrng(x, t, m) =>
    wper = (t * 2) - 1
    avrng = ema(abs(x - x[1]), t)
    smoothrng = ema(avrng, wper) * m
    smoothrng

smrng = smoothrng(src, per, mult)

// Range Filter
rngfilt(x, r) =>
    rngfilt = x
    rngfilt := x > nz(rngfilt[1]) ? ((x - r) < nz(rngfilt[1]) ? nz(rngfilt[1]) : (x - r)) : ((x + r) > nz(rngfilt[1]) ? nz(rngfilt[1]) : (x + r))
    rngfilt

filt = rngfilt(src, smrng)

// Filter Direction
upward = 0.0
upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1])

downward = 0.0
downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1])

// Target Bands
hband = filt + smrng
lband = filt - smrng

// Breakouts
longCondition = (src > filt) and (src > src[1]) and (upward > 0)
shortCondition = (src < filt) and (src < src[1]) and (downward > 0)

strategy.entry("Buy", strategy.long, when = longCondition)
strategy.entry("Sell", strategy.short, when = shortCondition)

// Plotting
plot(filt, color=upward > 0 ? color.lime : downward > 0 ? color.red : color.orange, linewidth=3, title="Range Filter")
hbandplot = plot(hband, color=color.aqua, transp=100, title="High Target")
lbandplot = plot(lband, color=color.fuchsia, transp=100, title="Low Target")

// Fills
fill(hbandplot, lbandplot, color=color.aqua, title="Target Range")

// Bar Color
barcolor(longCondition ? color.green : shortCondition ? color.red : na)

// Alerts
alertcondition(longCondition, title="Buy Alert", message="BUY")
alertcondition(shortCondition, title="Sell Alert", message="SELL")