Strategi perdagangan mingguan dukungan dan resistensi multi-level berdasarkan mean reversion

Pivot SR MR SMA RSI ATR MA VOL
Tanggal Pembuatan: 2025-02-18 18:04:15 Akhirnya memodifikasi: 2025-02-18 18:04:15
menyalin: 2 Jumlah klik: 441
1
fokus pada
1617
Pengikut

Strategi perdagangan mingguan dukungan dan resistensi multi-level berdasarkan mean reversion

Ringkasan

Strategi ini adalah sistem perdagangan berbalik rata-rata berdasarkan pivot point. Strategi ini menentukan titik masuk dan keluar perdagangan dengan menghitung titik masuk dan keluar mingguan dari support (S1-S4) dan resistance (R1-R4). Strategi ini menggunakan metode pembuatan posisi secara bertahap, melakukan beberapa pembelian di berbagai level dukungan dan menghasilkan keuntungan dari resistance yang sesuai.

Prinsip Strategi

Inti dari strategi ini adalah dengan menghitung titik pivot minggu ini dengan harga tertinggi, terendah, dan harga penutupan minggu sebelumnya, dan kemudian menentukan beberapa titik dukungan dan resistensi berdasarkan jarak poin yang telah ditentukan. Beli ketika harga menyentuh dukungan dan tetapkan tujuan keuntungan pada resistensi yang sesuai. Pivot point = (paling tinggi minggu lalu + harga terendah minggu lalu + harga penutupan minggu lalu) / 3 Strategi ini memungkinkan maksimum 4 posisi untuk dipegang pada saat yang sama, dengan masing-masing posisi yang sesuai dengan tingkat dukungan dan resistensi yang berbeda. Semua posisi akan dihitung kembali pada awal setiap minggu. Desain ini menjamin kontinuitas perdagangan dan dapat beradaptasi dengan perubahan pasar.

Keunggulan Strategis

  1. Logika transaksi jelas, mudah dipahami dan dijalankan
  2. Mengadopsi metode penambangan bertahap, mengurangi risiko transaksi tunggal
  3. Menggunakan titik-titik resistensi pendukung pada tingkat garis lingkar untuk mengurangi dampak dari kebisingan dalam sehari
  4. Strategi dapat menyesuaikan parameter secara fleksibel sesuai dengan karakteristik pasar yang berbeda
  5. Mengontrol risiko dengan persentase kepemilikan
  6. Tidak ada waktu untuk memaksakan pembatasan posisi kosong, memberikan ruang yang cukup untuk keuntungan perdagangan

Risiko Strategis

  1. Tidak ada stop loss yang ditetapkan, yang dapat menyebabkan penarikan yang lebih besar di pasar yang sedang tren
  2. Beberapa posisi mungkin menghabiskan lebih banyak uang
  3. Di pasar yang bergejolak, sinyal palsu mungkin muncul.
  4. Pengaturan yang tidak tepat dapat menyebabkan posisi gudang yang tidak masuk akal Untuk mengurangi risiko, disarankan untuk menambahkan filter tren, hanya membuka posisi dalam tren naik; juga dapat mengatur stop loss dinamis berdasarkan ATR.

Arah optimasi strategi

  1. Meningkatkan mekanisme konfirmasi pengiriman dan meningkatkan keandalan sinyal masuk
  2. Memperkenalkan indikator teknis seperti RSI untuk filter overbought dan oversold
  3. Mengembangkan mekanisme pengesahan multi-siklus waktu untuk mengurangi sinyal palsu
  4. Mengoptimalkan sistem manajemen posisi, menyesuaikan jumlah gudang yang dibangun sesuai dengan dinamika pasar yang berfluktuasi
  5. Menambahkan analisis relevansi untuk menghindari posisi di pasar yang sangat relevan secara bersamaan

Meringkaskan

Ini adalah strategi pengembalian nilai rata-rata berdasarkan teori analisis teknis klasik untuk menangkap peluang perdagangan dengan mundur mundur dari titik resistensi yang didukung oleh garis lingkaran. Strategi ini dirancang sederhana dan fleksibel, cocok untuk diterapkan di pasar yang berfluktuasi besar. Dengan pengoptimalan parameter dan manajemen risiko yang masuk akal, strategi ini dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar.

Kode Sumber Strategi
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 00:00:00
period: 1d
basePeriod: 1d
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/
// © ViZiV

//@version=5
strategy("Weekly Pivot Strategy, Created by ViZiV", overlay=true, pyramiding=50, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, dynamic_requests=true)

// This is my first COMPLETED strategy, go easy on me :) - Feel free to imrprove upon this script by adding more features if you feel up to the task. Im 100% confiedent there are better coders than me :) I'm still learning.

// This is a LONG ONLY SWING STRATEGY (Patience REQUIRED) that being said, you can go short at you're own discretion. I prefer to use on NQ / US100 / USTech 100 but not limited to it. Im sure it can work in most markets. "You'll need to change settings to suit you're market".

// IMPORTANT NOTE: "default_qty_type=strategy.percent_of_equity" Can be changed to "Contacts" within the properties tab which allow you to see backtest of other markets. Reccomend 1 contract but it comes to preference.

// Inputs for support/resistance distances (Defined by Points). // IMPORTANT NOTE: Completely user Defined. Figure out best settings for what you're trading. Each market is different with different characteristics. Up to you to figure out YOU'RE market volatility for better results. 
s1_offset = input.float(155, "S1 Distance", step=1)
s2_offset = input.float(310, "S2 Distance", step=1)
s3_offset = input.float(465, "S3 Distance", step=1)
s4_offset = input.float(775, "S4 Distance", step=1)
r1_offset = input.float(155, "R1 Distance", step=1)
r2_offset = input.float(310, "R2 Distance", step=1)
r3_offset = input.float(465, "R3 Distance", step=1)
r4_offset = input.float(775, "R4 Distance", step=1)

// Weekly pivot calculation
var float pivot = na
var float s1 = na
var float s2 = na
var float s3 = na
var float s4 = na
var float r1 = na
var float r2 = na
var float r3 = na
var float r4 = na

// Get weekly data (Pivot Calculation)
prevWeekHigh = request.security(syminfo.tickerid, "W", high[1], lookahead=barmerge.lookahead_on)
prevWeekLow = request.security(syminfo.tickerid, "W", low[1], lookahead=barmerge.lookahead_on)
prevWeekClose = request.security(syminfo.tickerid, "W", close[1], lookahead=barmerge.lookahead_on)

// Track active trades
var array<string> entry_ids = array.new<string>(0)
var array<float> profit_targets = array.new<float>(0)

// Update weekly levels
isNewWeek = ta.change(time("W")) != 0
if isNewWeek or na(pivot)
    pivot := (prevWeekHigh + prevWeekLow + prevWeekClose) / 3
    s1 := pivot - s1_offset
    s2 := pivot - s2_offset
    s3 := pivot - s3_offset
    s4 := pivot - s4_offset
    r1 := pivot + r1_offset
    r2 := pivot + r2_offset
    r3 := pivot + r3_offset
    r4 := pivot + r4_offset

// Plot current week's levels
plot(pivot, "Pivot", color=color.gray, linewidth=2)
plot(s1, "S1", color=color.blue, linewidth=1)
plot(s2, "S2", color=color.blue, linewidth=1)
plot(s3, "S3", color=color.blue, linewidth=1)
plot(s4, "S4", color=color.blue, linewidth=1)
plot(r1, "R1", color=color.red, linewidth=1)
plot(r2, "R2", color=color.red, linewidth=1)
plot(r3, "R3", color=color.red, linewidth=1)
plot(r4, "R4", color=color.red, linewidth=1)

// Function to create unique trade entries
checkEntry(level, target, entryNumber) =>
    currentWeek = str.tostring(year(time)) + "_" + str.tostring(weekofyear(time))
    entryId = "Entry" + str.tostring(entryNumber) + "_W" + currentWeek
    
    if low <= level and not array.includes(entry_ids, entryId)
        array.push(entry_ids, entryId)
        array.push(profit_targets, target)
        strategy.entry(entryId, strategy.long)
        strategy.exit("Exit" + entryId, entryId, limit=target)

// Check all entry levels
checkEntry(s1, r1, 1)
checkEntry(s2, r2, 2)
checkEntry(s3, r3, 3)
checkEntry(s4, r4, 4)

// Clean up completed trades using while loop
i = array.size(entry_ids) - 1
while i >= 0
    entryId = array.get(entry_ids, i)
    target = array.get(profit_targets, i)
    
    if high >= target
        array.remove(entry_ids, i)
        array.remove(profit_targets, i)
    i := i - 1