Strategi kuantitatif penyesuaian posisi dinamis grid pelacakan tren

TTM EMA GRID DCA ATR SMA
Tanggal Pembuatan: 2024-12-12 11:19:17 Akhirnya memodifikasi: 2024-12-12 11:19:17
menyalin: 0 Jumlah klik: 641
1
fokus pada
1617
Pengikut

Strategi kuantitatif penyesuaian posisi dinamis grid pelacakan tren

Ringkasan

Strategi ini adalah sistem perdagangan grid dinamis berdasarkan indikator TTM untuk menilai arah tren pasar dengan menghitung rata-rata bergerak indeks pada titik tinggi dan rendah (EMA) dan mengerahkan sistem perdagangan grid di sekitar harga acuan yang diperbarui secara dinamis. Arah dan tingkat harga grid akan disesuaikan secara dinamis sesuai dengan tren, melakukan perdagangan ketika harga melintasi tingkat grid yang telah ditentukan, dan setiap perdagangan memiliki persentase risiko yang tetap untuk keuntungan akun.

Prinsip Strategi

Logika inti dari strategi ini adalah perhitungan status TTM, yang dilakukan melalui langkah-langkah berikut:

  1. Berdasarkan parameter ttmPeriod, dua EMA dihitung: EMA rendah (lowMA) dan EMA tinggi (highMA)
  2. Di antara highMA dan lowMA didefinisikan dua tingkat threshold:
    • lowThird: posisi 13 di bawah
    • highThird: posisi 23 bagian bawah
  3. Untuk menentukan status TTM berdasarkan posisi harga penutupan terhadap nilai-nilai tersebut:
    • Ketika harga closeout lebih tinggi dari highThird, kembali ke 1 (trend naik)
    • Ketika harga closeout di bawah lowThird, kembali ke 0 (trend menurun)
    • Ketika harga closeout berada di antara lowThird dan highThird, kembali ke -1 (ke keadaan netral)

Sistem perdagangan grid akan beradaptasi secara dinamis dengan status TTM:

  1. Pembaruan harga dan arah acuan grid saat status TTM berubah
  2. Tingkat harga jual beli berdasarkan arah dan jarak grid
  3. Melakukan operasi beli atau jual yang sesuai saat harga menembus level grid

Keunggulan Strategis

  1. Adaptif secara dinamis: Strategi dapat secara dinamis menyesuaikan arah grid dan tingkat harga sesuai dengan tren pasar, meningkatkan fleksibilitas dan profitabilitas strategi
  2. Pengendalian risiko yang sempurna: Menggunakan persentase tetap untuk manajemen posisi, mengontrol secara efektif risiko setiap transaksi
  3. Parameter yang dapat disesuaikan: parameter kunci seperti siklus TTM, tingkat grid dan jarak dapat dioptimalkan sesuai dengan situasi pasar yang berbeda
  4. Kejelasan mekanisme pelaksanaan: sinyal perdagangan jelas, logika pelaksanaan sederhana dan intuitif, mudah untuk deteksi dan operasi di tempat

Risiko Strategis

  1. Penundaan penilaian tren: Indikator TTM berbasis EMA memiliki keterlambatan tertentu, yang dapat menyebabkan keterlambatan sinyal pada titik perubahan tren
  2. Risiko pasar bergoyang: Dalam pasar bergoyang horizontal, sering bergeser arah grid dapat menyebabkan perdagangan berlebihan dan kehilangan biaya.
  3. Tekanan pengelolaan dana: perlu modal yang lebih besar untuk menjalankan beberapa jaringan sekaligus, yang dapat mempengaruhi kelayakan strategi
  4. Efek slippage: Trading grid frekuensi tinggi mungkin menghadapi slippage yang lebih besar ketika kurangnya likuiditas, yang mempengaruhi kinerja strategi

Arah optimasi strategi

  1. Optimalisasi penilaian tren:
    • Memperkenalkan analisis multi-siklus waktu untuk meningkatkan akurasi penilaian tren
    • Pengakuan tren dalam kombinasi dengan indikator teknis lainnya seperti RSI, MACD, dll.
  2. Optimalisasi parameter grid:
    • Beradaptasi secara dinamis dengan selang grid
    • Memperkenalkan mekanisme penyesuaian tingkat adaptasi grid
  3. Pengelolaan dana yang lebih baik:
    • Menerapkan alokasi posisi dinamis
    • Peningkatan mekanisme pembenahan risiko
  4. Mekanisme pelaksanaan yang baik:
    • Meningkatkan Stop Loss dan Stop Stop Mechanism
    • Optimalkan waktu eksekusi pesanan

Meringkaskan

Strategi ini menggabungkan penilaian tren TTM dengan perdagangan grid dinamis untuk mewujudkan sistem perdagangan yang sangat adaptif dan dapat dikontrol risiko. Dengan menyesuaikan arah grid dan tingkat harga secara dinamis, strategi ini dapat beradaptasi dengan lebih baik dengan berbagai lingkungan pasar. Meskipun ada beberapa risiko yang melekat, strategi ini memiliki nilai praktis dan potensi pengembangan yang baik dengan pengaturan parameter yang masuk akal dan langkah-langkah optimasi.

Kode Sumber Strategi
/*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)