Strategi pembalikan pangsi berbilang masa dan sistem henti untung dan henti rugi dinamik peratusan

MTF Pivot TP SL
Tarikh penciptaan: 2025-02-08 15:04:47 Akhirnya diubah suai: 2025-02-08 15:04:47
Salin: 1 Bilangan klik: 412
1
fokus pada
1617
Pengikut

Strategi pembalikan pangsi berbilang masa dan sistem henti untung dan henti rugi dinamik peratusan

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan canggih yang berdasarkan analisis pelbagai kitaran masa, menangkap peluang pembalikan pasaran dengan mengenal pasti titik-titik pivot penting pada jangka masa yang lebih tinggi. Strategi ini menggabungkan mekanisme peratusan stop-loss yang dinamik, mengawal risiko dengan berkesan sambil berusaha untuk mendapatkan keuntungan yang stabil. Sistem ini juga merangkumi kawalan selang perdagangan dan fungsi pengujian jangka masa, menjadikannya lebih sesuai untuk persekitaran perdagangan sebenar.

Prinsip Strategi

Logik teras strategi adalah berdasarkan elemen utama berikut:

  1. Pada jangka masa yang lebih tinggi (default 60 minit), analisis titik pivot digunakan untuk menentukan keadaan pembentukan pivot melalui parameter LeftBars dan RightBars.
  2. Menguruskan sasaran risiko dan keuntungan bagi setiap perdagangan dengan menggunakan peratusan stop loss yang dikira secara dinamik.
  3. Analisis kitaran masa berbilang memberikan penilaian struktur pasaran yang lebih dipercayai, mengurangkan isyarat palsu.
  4. Mekanisme kawalan selang transaksi (default 1440 minit) mengelakkan perdagangan berlebihan dan meningkatkan kualiti isyarat.
  5. Fungsi ujian julat masa membolehkan pengesahan strategi dalam julat sejarah tertentu.

Kelebihan Strategik

  1. Analisis kitaran masa berbilang memberikan pandangan pasaran yang lebih menyeluruh dan mengurangkan penembusan palsu.
  2. Peratusan Stop Loss Dinamik menyesuaikan diri dengan keadaan pasaran yang berbeza untuk meningkatkan kestabilan strategi.
  3. Kawalan selang dagangan berkesan untuk mengelakkan dagangan berlebihan dan mengurangkan kos transaksi.
  4. Fungsi ujian jangka masa memudahkan pengoptimuman strategi dan analisis prestasi sejarah.
  5. Struktur kod jelas, mudah dijaga dan diubah suai.

Risiko Strategik

  1. Dalam pasaran yang bergelombang, peratusan berhenti tetap mungkin tidak cukup fleksibel.
  2. Interval dagangan yang lebih lama mungkin terlepas beberapa isyarat yang sah.
  3. Keterlambatan dalam mengenal pasti titik-titik pusat mungkin menyebabkan masa kemasukan tidak sesuai.
  4. Ia mungkin akan menghasilkan terlalu banyak isyarat palsu di pasaran.

Arah pengoptimuman strategi

  1. Memperkenalkan penunjuk kadar turun naik yang menyesuaikan diri untuk menyesuaikan kadar stop loss secara dinamik.
  2. Menambah penapis keadaan pasaran untuk menyesuaikan parameter strategi mengikut intensiti trend yang berbeza.
  3. Integrasi analisis lalu lintas untuk meningkatkan kebolehpercayaan isyarat masuk.
  4. Menerapkan penyesuaian selang transaksi dinamik berdasarkan turun naik pasaran.
  5. Ia adalah satu keuntungan untuk menyertai Mobile Stop Loss Protection.

ringkaskan

Strategi ini menyediakan kerangka sistem perdagangan yang lengkap melalui analisis kitaran masa dan pengurusan risiko dinamik. Walaupun terdapat beberapa tempat yang perlu dioptimumkan, konsep reka bentuk keseluruhan adalah masuk akal dan mempunyai kepraktisan yang baik. Dengan arah pengoptimuman yang disyorkan, strategi ini dijangka dapat mencapai prestasi yang lebih stabil dalam keadaan pasaran yang berbeza.

Kod sumber strategi
/*backtest
start: 2025-01-01 00:00:00
end: 2025-01-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Pivot Reversal Strategy with MTF TP & SL in Percent and Test Range", overlay=true)

// Входные параметры
higher_tf = input.timeframe("60", title="Higher Timeframe for Breakout Check")  // Таймфрейм для анализа пробоя
leftBars = input(4, title="Left Bars")
rightBars = input(2, title="Right Bars")
TP_percent = input.float(1.0, title="Take Profit (%)", minval=0.1, step=0.1)   // Тейк-профит в процентах
SL_percent = input.float(0.5, title="Stop Loss (%)", minval=0.1, step=0.1)    // Стоп-лосс в процентах
trade_interval = input.int(1440, title="Minimum Time Between Trades (Minutes)") // Интервал между сделками

// Диапазон тестирования (используем UNIX timestamps)
start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date")  // Стартовая дата для тестирования
end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date")    // Конечная дата для тестирования

// Проверка, попадает ли текущая свеча в указанный диапазон времени
in_test_range = true

// Определение пивотов на более крупном таймфрейме
higher_tf_high = request.security(syminfo.tickerid, higher_tf, ta.pivothigh(leftBars, rightBars))
higher_tf_low = request.security(syminfo.tickerid, higher_tf, ta.pivotlow(leftBars, rightBars))

// Последнее время открытия сделки
var float last_trade_time = na

// Логика для лонга
swh_cond = not na(higher_tf_high)
hprice = 0.0
hprice := swh_cond ? higher_tf_high : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if le and in_test_range and (na(last_trade_time) or (time - last_trade_time >= trade_interval * 60 * 1000))
    tp_price_long = hprice * (1 + TP_percent / 100)  // Тейк-профит в процентах
    sl_price_long = hprice * (1 - SL_percent / 100)  // Стоп-лосс в процентах
    strategy.entry("PivRevLE", strategy.long, stop=hprice + syminfo.mintick)
    strategy.exit("TP_SL_Long", from_entry="PivRevLE", 
                  limit=tp_price_long, 
                  stop=sl_price_long)
    last_trade_time := time

// Логика для шорта
swl_cond = not na(higher_tf_low)
lprice = 0.0
lprice := swl_cond ? higher_tf_low : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if se and in_test_range and (na(last_trade_time) or (time - last_trade_time >= trade_interval * 60 * 1000))
    tp_price_short = lprice * (1 - TP_percent / 100)  // Тейк-профит в процентах
    sl_price_short = lprice * (1 + SL_percent / 100)  // Стоп-лосс в процентах
    strategy.entry("PivRevSE", strategy.short, stop=lprice - syminfo.mintick)
    strategy.exit("TP_SL_Short", from_entry="PivRevSE", 
                  limit=tp_price_short, 
                  stop=sl_price_short)
    last_trade_time := time

// Для наглядности отображаем уровни на графике
plot(le and in_test_range ? hprice * (1 + TP_percent / 100) : na, color=color.green, title="Long Take Profit")
plot(le and in_test_range ? hprice * (1 - SL_percent / 100) : na, color=color.red, title="Long Stop Loss")
plot(se and in_test_range ? lprice * (1 - TP_percent / 100) : na, color=color.green, title="Short Take Profit")
plot(se and in_test_range ? lprice * (1 + SL_percent / 100) : na, color=color.red, title="Short Stop Loss")