Strategi dagangan julat berdasarkan pengayun stokastik

ATR
Tarikh penciptaan: 2024-06-17 14:52:10 Akhirnya diubah suai: 2024-06-17 14:52:10
Salin: 0 Bilangan klik: 568
1
fokus pada
1617
Pengikut

Strategi dagangan julat berdasarkan pengayun stokastik

Gambaran keseluruhan

Strategi ini menggunakan indikator bergoyang secara rawak (Stochastic Oscillator) untuk mengenal pasti keadaan pasaran yang terlalu banyak dan terlalu banyak, dan mencetuskan perdagangan di bawah parameter risiko dan pulangan yang telah ditentukan, dengan harapan untuk mendapatkan keuntungan dalam kawasan perdagangan yang bergoyang. Idea utama strategi ini adalah untuk membeli pada titik rendah di kawasan perdagangan dan menjual pada titik tinggi di kawasan perdagangan, sambil mengawal risiko dengan ketat.

Prinsip Strategi

  1. Apabila indikator bergolak secara rawak jatuh ke tahap oversold ((20), strategi membuka kedudukan lebih banyak; apabila indikator bergolak secara rawak menembusi tahap oversold ((80), strategi membuka kedudukan kosong.
  2. Tahap hentian dan hentian ditetapkan berdasarkan purata gelombang sebenar (ATR) 2 kali ganda, dan risiko setiap urus niaga dikawal dalam 1% daripada kepentingan akaun.
  3. Untuk mengelakkan perdagangan yang berlebihan, strategi memaksa sekurang-kurangnya 20 garis K antara setiap perdagangan untuk membiarkan tempoh penyejukan dan mengelakkan turun naik.

Kelebihan Strategik

  1. Strategi ini mampu menangkap turun naik harga di dalam kawasan perdagangan yang bergelombang, membeli pada titik rendah dan menjual pada titik tinggi, dengan harapan mendapat keuntungan.
  2. Strategi ini menggunakan langkah-langkah pengurusan risiko yang ketat, termasuk berhenti dan hentikan berdasarkan ATR dan risiko tetap 1% untuk setiap perdagangan, yang membantu mengawal penarikan balik dan kerugian perdagangan tunggal.
  3. Dengan menetapkan selang minimum antara transaksi ((20 garis K), strategi ini mengelakkan perdagangan yang kerap dan ditipu oleh bunyi pasaran.
  4. Strategi ini logiknya jelas, mudah difahami dan dilaksanakan, sesuai untuk digunakan dalam pelbagai keadaan pasaran.

Risiko Strategik

  1. Kejayaan strategi ini bergantung kepada pengiktirafan yang betul bagi kawasan perdagangan, dan pengiktirafan yang tidak tepat bagi kawasan perdagangan boleh menyebabkan perdagangan yang rugi.
  2. Strategi ini mungkin terlepas peluang perdagangan trend jika pasaran menembusi kawasan perdagangan dan membentuk trend.
  3. Walaupun strategi telah mengambil langkah-langkah pengurusan risiko, kerugian yang lebih besar daripada yang dijangkakan mungkin berlaku dalam keadaan pasaran yang melampau.
  4. Parameter strategi (seperti tahap overbought/oversold, ATR, dan lain-lain) perlu dioptimumkan mengikut keadaan pasaran yang berbeza, dan parameter yang tidak sesuai boleh menyebabkan prestasi yang buruk.

Arah pengoptimuman strategi

  1. Pertimbangkan untuk menggabungkan dengan petunjuk teknikal lain (seperti MACD, RSI, dan lain-lain) untuk mengesahkan isyarat perdagangan dan meningkatkan kebolehpercayaan isyarat.
  2. Memperkenalkan mekanisme hentian dan hentian dinamik, seperti menyesuaikan tempat hentian apabila harga bergerak ke arah yang menguntungkan untuk mendapatkan kadar pulangan yang lebih tinggi.
  3. Untuk mengenal pasti kawasan transaksi, teknologi yang lebih maju seperti algoritma pembelajaran mesin boleh diterokai untuk meningkatkan ketepatan.
  4. Dalam pasaran trend, anda boleh mempertimbangkan untuk memperkenalkan penapis trend untuk mengelakkan perdagangan dalam pasaran trend.

ringkaskan

Strategi perdagangan rantaian bergolak berdasarkan indikator bergolak secara rawak berusaha untuk mencetuskan perdagangan dalam rantaian perdagangan yang telah ditetapkan, menggunakan isyarat overbuy dan oversell dari indikator rawak. Strategi ini mengawal risiko melalui pengurusan risiko yang ketat dan selang waktu perdagangan. Walaupun strategi ini mempunyai kelebihan tertentu, kejayaannya sangat bergantung kepada pengenalan rantaian perdagangan yang betul. Arah pengoptimuman masa depan termasuk menggabungkan indikator teknikal lain, memperkenalkan stop loss yang dinamik, menggunakan teknologi pengenalan rantaian yang lebih maju, dan menambahkan penapis trend.

Kod sumber strategi
/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Range Trading with Stochastic", overlay=true)

// Input Parameters
overboughtLevel = input.int(80, title="Overbought Level", minval=1, maxval=100)
oversoldLevel = input.int(20, title="Oversold Level", minval=1, maxval=100)
stochLength = input.int(14, title="Stochastic Length", minval=1)
riskPerTrade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=100, step=0.01)
barsBetweenTrades = input.int(20, title="Bars Between Trades", minval=1)

// Calculate Stochastic Oscillator
k = ta.sma(ta.stoch(close, high, low, stochLength), 3)
d = ta.sma(k, 3)

// Variables to Track Time Since Last Trade
var lastTradeBar = 0
barsSinceLastTrade = bar_index - lastTradeBar

// Risk Management
atr = ta.atr(14)
stopLoss = 2 * atr
takeProfit = 2 * atr
riskAmount = strategy.equity * riskPerTrade / 100
positionSize = 1

// Entry Conditions
longCondition = k < oversoldLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades
shortCondition = k > overboughtLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades

// Entry/Exit Orders
if longCondition
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Long Exit", "Long", stop=close - stopLoss, limit=close + takeProfit)
    lastTradeBar := bar_index // Update last trade bar
if shortCondition
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Short Exit", "Short", stop=close + stopLoss, limit=close - takeProfit)
    lastTradeBar := bar_index // Update last trade bar

// Plot Stochastic
plot(k, color=color.blue, title="%K")
plot(d, color=color.orange, title="%D")
hline(overboughtLevel, color=color.red, title="Overbought")
hline(oversoldLevel, color=color.green, title="Oversold")