Strategi perdagangan adaptif blok pesanan pecahan fraktal berbilang tempoh

OB SD MA ATR
Tarikh penciptaan: 2024-12-27 15:49:16 Akhirnya diubah suai: 2024-12-27 15:49:16
Salin: 8 Bilangan klik: 479
1
fokus pada
1617
Pengikut

Strategi perdagangan adaptif blok pesanan pecahan fraktal berbilang tempoh

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan adaptif berdasarkan teori fraktal dan analisis blok pesanan. Ia menangkap peluang perdagangan berkemungkinan tinggi dengan mengenal pasti tahap sokongan dan rintangan utama dalam struktur pasaran, digabungkan dengan isyarat pecah pecahan dan pengesahan blok pesanan. Strategi ini menyepadukan berbilang penunjuk teknikal, termasuk penunjuk fraktal, blok pesanan dinamik dan sistem pengesahan penembusan harga, untuk mencapai kedudukan tepat titik perubahan pasaran dan pemahaman tepat tentang peluang dagangan.

Prinsip Strategi

Logik teras strategi dibina di atas tiga tiang utama: pertama, pemantauan berterusan ke atas dan rendah pasaran melalui modul pengiraan fraktal untuk mengenal pasti kawasan perubahan arah aliran yang berpotensi kedua, melalui analisis blok pesanan, mewujudkan kawasan penawaran dan permintaan pada tahap harga utama; ; dan akhirnya, melalui sistem pengesahan Breakout untuk mengesahkan kesahihan penembusan harga. Apabila harga menembusi fraktal atas dan disahkan sah, sistem akan membuat blok pesanan kawasan permintaan di kawasan lilin merah terdekat dan membuka pesanan panjang apabila harga menembusi fraktal bawah dan disahkan sah , sistem akan mewujudkan kawasan bekalan di kawasan lilin hijau terdekat Blok Pesanan dan membuka pesanan ringkas. Strategi ini juga termasuk fungsi kemas kini dinamik untuk warna blok pesanan, yang digunakan untuk memaparkan secara intuitif hubungan kedudukan relatif antara harga dan blok pesanan.

Kelebihan Strategik

  1. Kebolehsuaian yang kuat: Strategi boleh melaraskan kedudukan dan saiz blok pesanan secara dinamik mengikut keadaan pasaran dan menyesuaikan diri dengan persekitaran pasaran yang berbeza.
  2. Mekanisme pengesahan berbilang: Menggabungkan kejayaan fraktal, pengesahan blok pesanan dan analisis tindakan harga untuk mengurangkan risiko isyarat palsu.
  3. Pengurusan risiko yang dipertingkatkan: Bantu peniaga memantau status operasi strategi dalam masa nyata melalui maklum balas visual yang jelas dan senarai semak status.
  4. Visualisasi yang sangat baik: Menyediakan antara muka grafik intuitif termasuk penanda fraktal, paparan blok pesanan dan senarai semak status.
  5. Parameter fleksibel dan boleh laras: Benarkan pengguna melaraskan parameter utama seperti tempoh fraktal, jenis terobosan, dsb. mengikut gaya dagangan peribadi mereka.

Risiko Strategik

  1. Risiko turun naik pasaran: Isyarat pecahan palsu mungkin dijana dalam pasaran yang sangat tidak menentu, memerlukan mekanisme penapisan tambahan.
  2. Risiko gelinciran: Dalam persekitaran pasaran dengan kecairan yang tidak mencukupi, harga pelaksanaan pesanan mungkin menyimpang daripada titik masuk yang ideal.
  3. Ketergantungan Aliran: Strategi mungkin tidak menunjukkan prestasi yang baik dalam pasaran sisi seperti yang berlaku dalam pasaran arah aliran.
  4. Kepekaan parameter: Tetapan tempoh fraktal yang berbeza boleh membawa kepada hasil dagangan yang berbeza dengan ketara.
  5. Penggunaan sumber pengkomputeran: Fungsi visualisasi kompleks dan pengiraan masa nyata boleh meningkatkan beban sistem.

Arah pengoptimuman

  1. Memperkenalkan penapis turun naik: Optimumkan isyarat dagangan melalui ATR atau penunjuk turun naik yang lain.
  2. Tambah mekanisme pengesahan arah aliran: Gabungkan dengan purata bergerak atau penunjuk arah aliran lain untuk meningkatkan kebolehpercayaan isyarat.
  3. Tingkatkan mekanisme henti rugi: reka strategi henti rugi dinamik berdasarkan struktur blok pesanan.
  4. Optimumkan saiz blok pesanan: Laraskan saiz blok pesanan secara dinamik berdasarkan turun naik pasaran.
  5. Tambah analisis volum: Gabungkan data volum untuk mengesahkan keberkesanan kejayaan.

ringkaskan

Ini adalah strategi perdagangan yang kompleks yang mengintegrasikan pelbagai dimensi analisis teknikal Ia membina sistem perdagangan yang lengkap dengan teori fraktal dan analisis blok pesanan sebagai teras. Kelebihan strategi terletak pada kebolehsuaian dan mekanisme pengesahan berganda, tetapi pada masa yang sama, kita juga perlu memberi perhatian kepada kesan persekitaran pasaran terhadap prestasi strategi. Melalui arahan pengoptimuman yang disyorkan, kebolehpercayaan dan kestabilan strategi dijangka akan dipertingkatkan lagi.

Kod sumber strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supply and Demand - Order Block Strategy", format=format.price, precision=0, overlay=true)

// Input options for customization
changeColor = input(false, title="Change Box Colors?")
breakType = input.string("Wick+Body", title="Fractal Break Type:", options=["Wick+Body", "Body"])
n = input.int(title="Periods", defval=2, minval=1, tooltip="Number of periods for fractal lookback")

if n <= 0
    runtime.error("Periods input must be greater than zero.")

transGreenClr = input.color(color.new(color.green, 80), title="Bg:", inline="a_1")
greenClr = input.color(color.new(color.green, 0), title="Border:", inline="a_1")

transRedClr = input.color(color.new(color.red, 80), title="Bg:", inline="b_1")
redClr = input.color(color.new(color.red, 0), title="Border:", inline="b_1")

// --- Fractal Calculation ---
upFractal = high[n] == ta.highest(high, 2 * n + 1)
downFractal = low[n] == ta.lowest(low, 2 * n + 1)
// --- End Fractal Calculation ---

var float topValue = na
var float bottomValue = na
var int lastRedIndex = na
var float lastRedLow = na
var float lastRedHigh = na
var int lastGreenIndex = na
var float lastGreenLow = na
var float lastGreenHigh = na
var line topLine = na
var line bottomLine = na
var box demandBox = na
var box supplyBox = na
var topBreakBlock = false
var bottomBreakBlock = false
var isLongBreak = false
var isShortBreak = false
topBreakCheckSource = breakType == "Wick+Body" ? high : close
bottomBreakCheckSource = breakType == "Wick+Body" ? low : close

// Last Red Check
if close < open
    lastRedIndex := bar_index
    lastRedLow := low
    lastRedHigh := high

// Last Green Check
if close > open
    lastGreenIndex := bar_index
    lastGreenLow := low
    lastGreenHigh := high

// Top break
if ta.crossover(topBreakCheckSource, topValue) and not topBreakBlock
    topBreakBlock := true
    isLongBreak := true
    // line.set_x2(topLine, bar_index)
    // demandBox := box.new(lastRedIndex - 1, lastRedHigh, lastRedIndex + 1, lastRedLow, bgcolor=transGreenClr, border_color=greenClr)
    if strategy.position_size <= 0
        strategy.entry("Long", strategy.long)

// Bottom break
if ta.crossunder(bottomBreakCheckSource, bottomValue) and not bottomBreakBlock
    bottomBreakBlock := true
    isShortBreak := true
    // line.set_x2(bottomLine, bar_index)
    // supplyBox := box.new(lastGreenIndex - 1, lastGreenHigh, lastGreenIndex + 1, lastGreenLow, bgcolor=transRedClr, border_color=redClr)
    if strategy.position_size >= 0
        strategy.entry("Short", strategy.short)

// New up fractal
if upFractal
    topBreakBlock := false
    isLongBreak := false
    topValue := high[n]
    // topLine := line.new(bar_index[n], topValue, bar_index, topValue, color=color.teal, style=line.style_dotted, width=2)
    // if not isLongBreak[1]
    //     line.delete(topLine[1])

// New down fractal
if downFractal
    bottomBreakBlock := false
    isShortBreak := false
    bottomValue := low[n]
    // bottomLine := line.new(bar_index[n], bottomValue, bar_index, bottomValue, color=color.maroon, style=line.style_dotted, width=2)
    // if not isShortBreak[1]
    //     line.delete(bottomLine[1])

// Box state update
// activeBoxes = box.all
// if array.size(activeBoxes) > 0 and changeColor
//     for i = 0 to array.size(activeBoxes) - 1
//         boxId = array.get(activeBoxes, i)
//         bVal = box.get_bottom(boxId)
//         tVal = box.get_top(boxId)
//         if close < bVal
//             box.set_bgcolor(boxId, transRedClr)
//             box.set_border_color(boxId, redClr)
//         if close > tVal
//             box.set_bgcolor(boxId, transGreenClr)
//             box.set_border_color(boxId, greenClr)

//PLOTS
plotshape(downFractal ,style=shape.triangleup, location=location.belowbar, offset=-n, color=color.new(color.gray,80), size = size.tiny)
plotshape(upFractal, style=shape.triangledown,   location=location.abovebar, offset=-n, color=color.new(color.gray,80), size = size.tiny)

// --- Checklist Table ---
// var table checklistTable = table.new(position.bottom_right, 2, 8, bgcolor=color.new(color.gray, 80), border_width=1)

// if barstate.islast
//     table.cell(checklistTable, 0, 0, "Condition", text_color=color.white, text_size=size.small, bgcolor=color.teal)
//     table.cell(checklistTable, 1, 0, "Status", text_color=color.white, text_size=size.small, bgcolor=color.teal)

//     table.cell(checklistTable, 0, 1, "Up Fractal", text_size=size.small)
//     table.cell(checklistTable, 1, 1, upFractal ? "✅" : "❌", text_color=upFractal ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 2, "Down Fractal", text_size=size.small)
//     table.cell(checklistTable, 1, 2, downFractal ? "✅" : "❌", text_color=downFractal ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 3, "Top Break", text_size=size.small)
//     table.cell(checklistTable, 1, 3, isLongBreak ? "✅" : "❌", text_color=isLongBreak ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 4, "Bottom Break", text_size=size.small)
//     table.cell(checklistTable, 1, 4, isShortBreak ? "✅" : "❌", text_color=isShortBreak ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 5, "Last Red Candle", text_size=size.small)
//     table.cell(checklistTable, 1, 5, close < open ? "✅" : "❌", text_color=close < open ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 6, "Last Green Candle", text_size=size.small)
//     table.cell(checklistTable, 1, 6, close > open ? "✅" : "❌", text_color=close > open ? color.green : color.red, text_size=size.small)

//     table.cell(checklistTable, 0, 7, "Box Color Change Active", text_size=size.small)
//     table.cell(checklistTable, 1, 7, changeColor ? "✅" : "❌", text_color=changeColor ? color.green : color.red, text_size=size.small)