Strategi perdagangan frekuensi tinggi berdasarkan sokongan dan rintangan trend super dan penunjuk ADX


Tarikh penciptaan: 2024-02-19 15:01:36 Akhirnya diubah suai: 2024-02-19 15:01:36
Salin: 1 Bilangan klik: 871
1
fokus pada
1617
Pengikut

Strategi perdagangan frekuensi tinggi berdasarkan sokongan dan rintangan trend super dan penunjuk ADX

Gambaran keseluruhan

Strategi ini menggunakan garis rintangan sokongan super trend dan indikator ADX untuk mencapai perdagangan frekuensi tinggi. Garis rintangan sokongan super trend digunakan untuk menentukan trend harga dan menghantar isyarat perdagangan dengan mengira titik rintangan sokongan terkini secara dinamik.

Prinsip Strategi

  1. Hitung garis rintangan sokongan. Dengan harga penutupan sebagai asas, tambah satu ATR ke atas dan ke bawah. Apabila harga menembusi garis-garis ini, ia dianggap sebagai pembalikan trend.

  2. Indikator ADX menilai kekuatan trend. Apabila ADX lebih tinggi daripada nilai set, dianggap trend cukup kuat.

  3. Gabungan kedua-duanya menghantar isyarat dagangan. Hanya apabila anda menembusi garis rintangan sokongan dan ADX cukup besar, anda boleh melakukan lebih banyak pengurangan.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Perhitungan dinamik garis trend super menyokong rintangan, dapat menilai dengan cepat mengenai penembusan.

  2. Indeks ADX berkesan menapis senario bukan trend, mengurangkan perdagangan tidak sah.

  3. Ia adalah salah satu kaedah yang paling popular untuk mendapatkan wang tunai.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Ia boleh menyebabkan garis trend super tidak berfungsi.

  2. Penetapan ADX yang tidak betul juga boleh menjejaskan prestasi strategi.

  3. Perdagangan frekuensi tinggi mempunyai kos yang lebih tinggi.

Penyelesaian:

  1. Mengoptimumkan parameter super, melonggarkan lebar penembusan dengan betul.

  2. Ujian lebih baik ADX parameter

  3. Mengurangkan frekuensi transaksi.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Mengoptimumkan parameter ATR, menjadikan garis rintangan sokongan lebih kukuh.

  2. Uji parameter ADX yang berbeza untuk mencari nilai optimum.

  3. Menyertai mekanisme penangguhan kerugian untuk mengawal kerugian tunggal.

ringkaskan

Strategi ini mengintegrasikan kelebihan garis trend super dan indikator ADX, menilai masa pembalikan trend dengan sokongan rintangan melalui pengiraan dinamik, dengan penyaringan indikator ADX untuk isyarat berkualiti rendah. Selepas pengoptimuman parameter dan penyesuaian mekanisme, ia boleh menjadi strategi frekuensi tinggi yang menguntungkan secara stabil.

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

//@version=4
strategy("STPP20 + ADX", overlay = true)

///////////////////////////
// SuperTrend + Pivot Point
//////////////////////////

src =  input(close, title="EMA Source")
PPprd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50)
AtrFactor=input(defval = 5, title = "ATR Factor", minval = 1, step = 0.1)
AtrPd=input(defval = 20, title = "ATR Period", minval=1)

float ph = na
float pl = na
ph := pivothigh(PPprd, PPprd)
pl := pivotlow(PPprd, PPprd)

float center = na
center := center[1]
float lastpp = ph ? ph : pl ? pl : na
if lastpp
    if na(center)
        center := lastpp
    else
        center := (center * 2 + lastpp) / 3

Up = center - (AtrFactor * atr(AtrPd))
Dn = center + (AtrFactor * atr(AtrPd))

float TUp = na
float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? min(Dn, TDown[1]) : Dn
Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown

// Lines
linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na
plot(Trailingsl, color = linecolor ,  linewidth = 2, title = "PP SuperTrend")

bsignalSSPP = close > Trailingsl
ssignalSSPP = close < Trailingsl


///////
// ADX
//////

lenADX = 14
th = 25
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/lenADX) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/lenADX) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/lenADX) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, lenADX)


//////
// MA
/////

lenMA = 21
srcMA = input(close, title="Source")
offsetMA = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
outMA = sma(srcMA, lenMA)


// Buy - Sell Entries
buy = bsignalSSPP and outMA < close and ADX > th
sell = ssignalSSPP 

if (buy)
    // .order // Tuned version
    strategy.entry("Buy", strategy.long)


if (sell) and (strategy.position_size > 0)
    strategy.order("Sell", false, when = sell)