Sumber dimuat naik... memuat...

Trend Mengikut Strategi Pengukuran Kedudukan Grid Dinamik

Penulis:ChaoZhang, Tarikh: 2024-12-12 11:19:17
Tag:TTMEMAGRIDDCAATRSMA

img

Ringkasan

Strategi ini adalah sistem perdagangan grid dinamik berdasarkan penunjuk TTM, yang menentukan arah trend pasaran dengan mengira purata bergerak eksponensial (EMA) tertinggi dan terendah, dan menggunakan sistem perdagangan grid di sekitar harga asas yang dikemas kini secara dinamik.

Prinsip Strategi

Logik teras terletak pada pengiraan keadaan TTM, dilaksanakan melalui langkah-langkah berikut:

  1. Mengira dua EMA berdasarkan parameter ttmPeriod: EMA terendah (lowMA) dan tertinggi (highMA)
  2. Menentukan dua paras ambang antara highMA dan lowMA:
    • lowThird: 1/3 kedudukan dari bawah
    • tinggiThird: kedudukan 2/3 dari bawah
  3. Tentukan keadaan TTM berdasarkan kedudukan harga penutupan berbanding ambang ini:
    • Mengembalikan 1 (uptrend) apabila penutupan di atas tinggiThird
    • Mengembalikan 0 (menurun trend) apabila penutupan adalah di bawah rendahThird
    • Mengembalikan -1 (keadaan neutral) apabila dekat adalah antara lowThird dan highThird

Sistem perdagangan grid menyesuaikan secara dinamik berdasarkan keadaan TTM:

  1. Mengemas kini harga asas grid dan arah apabila keadaan TTM berubah
  2. Mengira tahap harga beli/jual berdasarkan arah grid dan jarak
  3. Melakukan operasi pembelian atau jualan yang sepadan apabila harga memecahkan tahap grid

Kelebihan Strategi

  1. Kebolehsesuaian Dinamik yang Kuat: Strategi boleh menyesuaikan arah grid dan tahap harga secara dinamik berdasarkan trend pasaran, meningkatkan kebolehsesuaian dan keuntungan
  2. Kawalan Risiko yang kukuh: Menggunakan saiz kedudukan peratusan tetap, mengawal secara berkesan pendedahan risiko setiap perdagangan
  3. Penyesuaian Parameter yang Baik: Parameter utama seperti tempoh TTM, tahap grid, dan jarak boleh dioptimumkan untuk keadaan pasaran yang berbeza
  4. Mekanisme Pelaksanaan yang jelas: Isyarat perdagangan jelas, logik pelaksanaan mudah dan intuitif, memudahkan pengujian belakang dan perdagangan langsung

Risiko Strategi

  1. Kelewatan Pengesanan Trend: Indikator TTM berasaskan EMA mempunyai kelewatan yang melekat, berpotensi menyebabkan isyarat tertunda pada titik perubahan trend
  2. Risiko pasaran sampingan: Pertukaran arah grid yang kerap di pasaran yang berbeza boleh membawa kepada perdagangan berlebihan dan bayaran yang berlebihan
  3. Tekanan Pengurusan Modal: Mengendalikan pelbagai tahap grid secara serentak memerlukan modal yang besar, yang berpotensi mempengaruhi kelayakan strategi
  4. Kesan Slippage: Perdagangan grid frekuensi tinggi mungkin menghadapi slippage yang ketara dalam keadaan kecairan yang rendah, yang mempengaruhi prestasi strategi

Arahan Pengoptimuman Strategi

  1. Pengoptimuman Pengesanan Trend:
    • Menggabungkan analisis jangka masa berbilang untuk meningkatkan ketepatan pengesanan trend
    • Gabungkan dengan penunjuk teknikal lain seperti RSI, MACD untuk pengesahan trend
  2. Pengoptimuman Parameter Grid:
    • Sesuaikan jarak grid secara dinamik berdasarkan turun naik
    • Melaksanakan mekanisme pelarasan tahap grid yang bersesuaian
  3. Peningkatan Pengurusan Modal:
    • Melaksanakan peruntukan kedudukan dinamik
    • Tambah mekanisme pariti risiko
  4. Peningkatan mekanisme pelaksanaan:
    • Tambahkan mekanisme stop-loss dan mengambil keuntungan
    • Mengoptimumkan masa pelaksanaan pesanan

Ringkasan

Strategi ini menggabungkan pengesanan trend TTM dengan perdagangan grid dinamik untuk mewujudkan sistem perdagangan yang beradaptasi dan terkawal risiko. Melalui penyesuaian dinamik arah grid dan tahap harga, strategi ini dapat menyesuaikan diri dengan berkesan dengan persekitaran pasaran yang berbeza. Walaupun terdapat risiko yang melekat, melalui tetapan parameter yang sesuai dan langkah pengoptimuman, strategi menunjukkan nilai praktikal dan potensi pembangunan yang baik.


/*backtest
start: 2024-12-04 00:00:00
end: 2024-12-11 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("TTM Grid Strategy", overlay=true)

// Input parameters
int ttmPeriod = input.int(6, minval=1, title="TTM Period")
int gridLevels = input.int(5, minval=2, title="Grid Levels")
float gridSpacing = input.float(0.01, minval=0.0001, title="Grid Spacing (%)")

// Calculate TTM State
ttmState() =>
    lowMA = ta.ema(low, ttmPeriod)
    highMA = ta.ema(high, ttmPeriod)
    lowThird = (highMA - lowMA) / 3 + lowMA
    highThird = 2 * (highMA - lowMA) / 3 + lowMA

    if close > highThird
        1
    else if close < lowThird
        0
    else
        -1

// State tracking variables
var float gridBasePrice = 0.0
var int gridDirection = -1

// Determine grid state
updateGridState(float currentClose, int currentState) =>
    float newBasePrice = gridBasePrice
    int newDirection = gridDirection

    if currentState != -1 and currentState != gridDirection
        newBasePrice := currentClose
        newDirection := currentState
    
    [newBasePrice, newDirection]

// Calculate grid levels
calcGridLevels(float basePrice, int direction, int levels) =>
    float[] buyLevels = array.new_float(levels)
    float[] sellLevels = array.new_float(levels)

    for i = 1 to levels
        multiplier = i * gridSpacing
        if direction == 1  // Buy grid
            array.set(buyLevels, i-1, basePrice * (1 - multiplier))
            array.set(sellLevels, i-1, basePrice * (1 + multiplier))
        else  // Sell grid
            array.set(buyLevels, i-1, basePrice * (1 + multiplier))
            array.set(sellLevels, i-1, basePrice * (1 - multiplier))
    
    [buyLevels, sellLevels]

// Execute grid trades
executeGridTrades(float basePrice, int direction, int levels) =>
    [buyLevels, sellLevels] = calcGridLevels(basePrice, direction, levels)

    for i = 0 to levels - 1
        float buyLevel = array.get(buyLevels, i)
        float sellLevel = array.get(sellLevels, i)

        if direction == 1  // Buy grid
            if low <= buyLevel
                strategy.entry("GridBuy" + str.tostring(i), strategy.long, comment="Buy Level " + str.tostring(i))
            if high >= sellLevel
                strategy.entry("GridSell" + str.tostring(i), strategy.short, comment="Sell Level " + str.tostring(i))
        else  // Sell grid
            if high >= buyLevel
                strategy.entry("GridBuy" + str.tostring(i), strategy.long, comment="Buy Level " + str.tostring(i))
            if low <= sellLevel
                strategy.entry("GridSell" + str.tostring(i), strategy.short, comment="Sell Level " + str.tostring(i))

// Main strategy logic
currentState = ttmState()
[newGridBasePrice, newGridDirection] = updateGridState(close, currentState)

// Update global variables
if newGridBasePrice != gridBasePrice
    gridBasePrice := newGridBasePrice
if newGridDirection != gridDirection
    gridDirection := newGridDirection

// Execute grid trades
executeGridTrades(newGridBasePrice, newGridDirection, gridLevels)

// Visualization
plotColor = newGridDirection == 1 ? color.green : color.red
plot(newGridBasePrice, color=plotColor, style=plot.style_cross)

Berkaitan

Lebih lanjut