Peta panas pusat likuiditas multi-periode waktu, strategi kuantitatif

MTF
Tanggal Pembuatan: 2024-12-20 14:20:11 Akhirnya memodifikasi: 2024-12-20 14:20:11
menyalin: 0 Jumlah klik: 433
1
fokus pada
1617
Pengikut

Peta panas pusat likuiditas multi-periode waktu, strategi kuantitatif

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif yang didasarkan pada deteksi titik pusat likuiditas dalam beberapa periode waktu. Ini mengidentifikasi tingkat dukungan dan resistensi penting dengan menganalisis perilaku harga dalam tiga periode waktu yang berbeda: 15 menit, 1 jam, dan 4 jam, dan membuat keputusan perdagangan berdasarkan itu. Sistem ini mengintegrasikan fungsionalitas manajemen dana, termasuk pengaturan stop loss dan stop loss untuk jumlah tetap, sambil memberikan umpan balik visual yang intuitif untuk membantu pedagang lebih memahami struktur pasar.

Prinsip Strategi

Inti dari strategi ini adalah dengan fungsi ta.pivothigh dan ta.pivotlow untuk mendeteksi titik pivot harga pada beberapa periode waktu. Untuk setiap periode waktu, sistem menggunakan K-line referensi kanan dan kiri (default 7). Untuk menentukan titik tinggi dan rendah yang signifikan.

Keunggulan Strategis

  1. Analisis multi-siklus waktu memberikan pandangan pasar yang lebih komprehensif, membantu menangkap berbagai tingkat peluang perdagangan
  2. Logika transaksi berbasis hub dengan dasar analisis teknis yang solid, mudah dipahami dan dilakukan
  3. Fitur manajemen uang yang terintegrasi secara efektif mengendalikan risiko setiap transaksi
  4. Antarmuka visual yang menampilkan status perdagangan secara langsung, termasuk posisi, level stop loss dan area untung-rugi
  5. Parameter strategi dapat disesuaikan, beradaptasi, dan dapat dioptimalkan sesuai dengan kondisi pasar yang berbeda

Risiko Strategis

  1. Sinyal multi-siklus dapat mengalami konflik dan perlu adanya mekanisme prioritas sinyal yang masuk akal.
  2. Stop loss dengan jumlah tetap mungkin tidak cocok untuk semua kondisi pasar dan disarankan untuk disesuaikan dengan dinamika fluktuasi
  3. Keterlambatan tes hub dapat menyebabkan keterlambatan waktu masuk
  4. Dalam situasi yang sangat bergejolak, mungkin ada sinyal bocor palsu.
  5. Perhatikan perbedaan mobilitas dalam periode waktu yang berbeda

Arah optimasi strategi

  1. Memperkenalkan indikator volatilitas, secara dinamis menyesuaikan level stop loss
  2. Menambahkan mekanisme konfirmasi volume transaksi, meningkatkan keandalan hub
  3. Mengembangkan sistem prioritas siklus waktu untuk mengatasi konflik sinyal
  4. Mengintegrasikan filter tren untuk menghindari overtrading di pasar horizontal
  5. Pertimbangan untuk menambahkan analisis struktur harga untuk meningkatkan akurasi waktu masuk

Meringkaskan

Strategi kuantitatif heatmap hub liquidity multi-siklus adalah sistem perdagangan yang terstruktur, logis, dan jelas. Ini menyediakan pedagang dengan kerangka perdagangan yang andal melalui analisis pasar multi-dimensi dan manajemen risiko yang ketat. Meskipun ada beberapa risiko dan batasan yang melekat, tetapi dengan optimasi dan perbaikan terus menerus, strategi ini diharapkan untuk mempertahankan kinerja yang stabil di berbagai lingkungan pasar.

Kode Sumber Strategi
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © pmotta41
//@version=5
strategy("GPT Session Liquidity Heatmap Strategy", overlay=true)

// Inputs
timeframe1 = input.timeframe("15", title="Intraday Timeframe 1")
timeframe2 = input.timeframe("60", title="Intraday Timeframe 2")
timeframe3 = input.timeframe("240", title="Higher Timeframe")
leftBars = input.int(7, title="Left Bars for Pivot", minval=2, maxval=20)
rightBars = input.int(7, title="Right Bars for Pivot", minval=2, maxval=20)
takeProfitDollar = input(200, title="Take Profit $$")
stopLossDollar = input(100, title="Stop Loss $$")

// Pivot Detection Function
detectPivot(highs, lows, left, right) =>
    pivotHigh = ta.pivothigh(highs, left, right)
    pivotLow = ta.pivotlow(lows, left, right)
    [pivotHigh, pivotLow]

// Get Pivots from Different Timeframes
[pivotHigh1, pivotLow1] = request.security(syminfo.tickerid, timeframe1, detectPivot(high, low, leftBars, rightBars))
[pivotHigh2, pivotLow2] = request.security(syminfo.tickerid, timeframe2, detectPivot(high, low, leftBars, rightBars))
[pivotHigh3, pivotLow3] = request.security(syminfo.tickerid, timeframe3, detectPivot(high, low, leftBars, rightBars))

// Plot Pivots
plotshape(series=pivotHigh1, title="Pivot High 1", location=location.abovebar, color=color.red, style=shape.labeldown, text="H1")
plotshape(series=pivotLow1, title="Pivot Low 1", location=location.belowbar, color=color.green, style=shape.labelup, text="L1")
plotshape(series=pivotHigh2, title="Pivot High 2", location=location.abovebar, color=color.red, style=shape.labeldown, text="H2")
plotshape(series=pivotLow2, title="Pivot Low 2", location=location.belowbar, color=color.green, style=shape.labelup, text="L2")
plotshape(series=pivotHigh3, title="Pivot High 3", location=location.abovebar, color=color.red, style=shape.labeldown, text="H3")
plotshape(series=pivotLow3, title="Pivot Low 3", location=location.belowbar, color=color.green, style=shape.labelup, text="L3")

// Strategy Logic
buyCondition = pivotLow1 or pivotLow2 or pivotLow3
sellCondition = pivotHigh1 or pivotHigh2 or pivotHigh3

if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.entry("Sell", strategy.short)

// Function to Convert $$ to Points for Stop Loss and Take Profit
moneyToSLPoints(money) =>
    strategy.position_size != 0 ? (money / syminfo.pointvalue / math.abs(strategy.position_size)) / syminfo.mintick : na

p = moneyToSLPoints(takeProfitDollar)
l = moneyToSLPoints(stopLossDollar)

// Exit Conditions
strategy.exit("Exit Buy", from_entry="Buy", profit=p, loss=l)
strategy.exit("Exit Sell", from_entry="Sell", profit=p, loss=l)

// Visualization for Stop Loss and Take Profit Levels
pointsToPrice(pp) =>
    na(pp) ? na : strategy.position_avg_price + pp * math.sign(strategy.position_size) * syminfo.mintick

tp = plot(pointsToPrice(p), style=plot.style_linebr, color=color.green, title="Take Profit Level")
sl = plot(pointsToPrice(-l), style=plot.style_linebr, color=color.red, title="Stop Loss Level")
avg = plot(strategy.position_avg_price, style=plot.style_linebr, color=color.blue, title="Entry Price")
fill(tp, avg, color=color.new(color.green, 90), title="Take Profit Area")
fill(avg, sl, color=color.new(color.red, 90), title="Stop Loss Area")

// Background for Gain/Loss
gainBackground = strategy.position_size > 0 and close > strategy.position_avg_price
lossBackground = strategy.position_size > 0 and close < strategy.position_avg_price
bgcolor(gainBackground ? color.new(color.green, 90) : na, title="Gain Background")
bgcolor(lossBackground ? color.new(color.red, 90) : na, title="Loss Background")