Strategi Indeks Pedagang Dinamik


Tarikh penciptaan: 2023-11-13 10:09:48 Akhirnya diubah suai: 2023-11-13 10:09:48
Salin: 1 Bilangan klik: 668
1
fokus pada
1617
Pengikut

Strategi Indeks Pedagang Dinamik

Gambaran keseluruhan

Strategi ini menggunakan Indeks Pedagang Dinamis (TDI) sebagai petunjuk teknikal utama untuk menghasilkan isyarat perdagangan yang digabungkan dengan purata bergerak dari pelbagai kitaran. Tujuannya adalah untuk mencari peluang untuk berbalik dalam keadaan overbought dan oversold.

Prinsip Strategi

Strategi ini pertama-tama mengira nilai RSI yang dekat, dengan panjang 13 kitaran. Kemudian menghitung purata bergerak sederhana 34 kitaran RSI, dan kemudian dengan 1.6185 kali perbezaan standard 34 kitaran RSI sebagai garis atas. Di mana garis atas adalah purata bergerak ditambah dengan perpindahan, garis bawah adalah purata bergerak tolak perpindahan.

Selepas itu, RSI dikira MA pantas, dengan panjang 2 kitaran; dan MA perlahan, dengan panjang 7 kitaran. Kemudian, nilai sejarah indikator ini diambil dari kitaran yang lebih tinggi. Apabila MA pantas melintasi MA perlahan dari arah atas, ia menghasilkan isyarat beli; apabila MA pantas melintasi MA perlahan dari arah bawah, ia menghasilkan isyarat jual.

Analisis kelebihan

Strategi ini menggunakan ciri-ciri mean reversion RSI, digabungkan dengan indikator momentum untuk melaksanakan perdagangan berbalik. RSI di atas dan di bawah refleksi mencerminkan kawasan overbought dan oversold, dan di tengah refleksi mencerminkan harga purata. Ma yang perlahan-lahan mencerminkan perubahan dan peluang berbalik.

Khususnya, RSI di atas dan di bawah rel menetapkan ambang harga overbought dan oversold yang munasabah, yang membantu untuk mengetahui keadaan yang tidak normal pada masa yang tepat. Rel tengah menguasai harga keseimbangan.

Analisis risiko

Strategi ini terutamanya berdasarkan perdagangan terbalik, terdapat risiko keberkesanan tertentu. Strategi ini akan menghasilkan kerugian berturut-turut jika terdapat perluasan yang tidak rasional dalam jangka masa yang panjang, seperti pasaran yang kosong.

Untuk mengawal risiko di atas, disarankan untuk menyesuaikan kitaran MA dengan betul, atau meningkatkan mekanisme hentian kerugian. Apabila pasaran memasuki tahap yang tidak rasional, kedudukan harus dikurangkan atau bahkan berhenti berdagang. Secara umum, penyesuaian strategi untuk keadaan pasaran tertentu adalah penting.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Uji parameter kitaran RSI dengan panjang yang berbeza untuk mencari tetapan yang lebih sesuai untuk pasaran semasa

  2. Optimumkan panjang MA pantas dan MA perlahan, seimbang menangkap reversal dan penapisan bunyi

  3. Tambah Stop Loss Berasaskan Fluktuasi Untuk Mengendalikan Penarikan Maksimum

  4. Cuba masukkan faktor lain ke dalam logik pesanan, seperti perubahan jumlah transaksi, untuk meningkatkan kadar kejayaan

  5. Uji keserasian REUSE dengan satu set isyarat dagangan dalam pelbagai kerangka masa

  6. Mekanisme pengoptimuman penyesuaian parameter untuk membolehkan parameter strategi disesuaikan secara dinamik

ringkaskan

Struktur keseluruhan strategi pembalikan RSI adalah munasabah, logik perdagangan dapat dijelaskan dengan jelas. Ia mempunyai ruang yang boleh disesuaikan dan potensi pengoptimuman. Kemampuannya untuk menangkap peluang pembalikan dengan penyesuaian parameter dan kawalan risiko adalah diharapkan.

Kod sumber strategi
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy("TDI - Traders Dynamic Index [Mehdi]", shorttitle="TDIMEHDI")

rsiPeriod = input(13, minval = 1, title = "RSI Period")
bandLength = input(34, minval = 1, title = "Band Length")
lengthrsipl = input(7, minval = 0, title = "Fast MA on RSI")
lengthtradesl = input(2, minval = 1, title = "Slow MA on RSI")
p1 = input("15", title = "Signal Timeframe")

src = close                                                             // Source of Calculations (Close of Bar)

r = rsi(src, rsiPeriod)                                                 // RSI of Close
ma = sma(r, bandLength)                                                 // Moving Average of RSI [current]
offs = (1.6185 * stdev(r, bandLength))                                  // Offset
up = ma + offs                                                          // Upper Bands
dn = ma - offs                                                          // Lower Bands
mid = (up + dn) / 2                                                     // Average of Upper and Lower Bands
fastMA = sma(r, lengthrsipl)                                            // Moving Average of RSI 2 bars back
slowMA = sma(r, lengthtradesl)                                          // Moving Average of RSI 7 bars back

hline(20)                                                               // ExtremelyOversold
hline(30)                                                               // Oversold
hline(50)                                                               // Midline
hline(70)                                                               // Overbought
hline(80)                                                               // ExtremelyOverbought

up1 = request.security(syminfo.tickerid, p1, up)
dn1 = request.security(syminfo.tickerid, p1, dn)
mid1 = request.security(syminfo.tickerid, p1, mid)
slowMA1 = request.security(syminfo.tickerid, p1, slowMA)
fastMA1 = request.security(syminfo.tickerid, p1, fastMA)

plot(up1, "Upper Band", color = #3286c3, linewidth = 2)               // Upper Band
plot(dn1, "Lower Band", color = #3286c3, linewidth = 2)               // Lower Band
plot(mid1, "Middle of Bands", color = yellow, linewidth = 2)      // Middle of Bands
plot(slowMA1, "Slow MA", color=green, linewidth=2)                       // Plot Slow MA
plot(fastMA1, "Fast MA", color=red, linewidth=1)                         // Plot Fast MA

if (crossover(slowMA1, fastMA1))
    strategy.entry("Buy", strategy.long, comment="Buy")

if (crossunder(slowMA1, fastMA1))
    strategy.entry("Sell", strategy.short, comment="Sell")