Strategi Perdagangan Osilator


Tanggal Pembuatan: 2023-12-13 14:45:51 Akhirnya memodifikasi: 2023-12-13 14:45:51
menyalin: 0 Jumlah klik: 795
1
fokus pada
1621
Pengikut

Strategi Perdagangan Osilator

Ringkasan

Ini adalah strategi perdagangan berbalik yang didasarkan pada beberapa indikator teknis. Ini menggabungkan indikator seperti CCI, indikator momentum, RSI untuk mengidentifikasi potensi peluang perdagangan overhead dan overhead. Strategi ini akan mengirimkan sinyal perdagangan ketika indikator menunjukkan sinyal overbought dan oversold dan harga muncul.

Prinsip Strategi

Sinyal perdagangan untuk strategi ini berasal dari sebuah indikator yang disesuaikan, yaitu Edri Polar Buy/Sell, yang secara komprehensif mempertimbangkan persilangan CCI, momentum, dan RSI. Logika spesifiknya adalah:

Kondisi sinyal multihead:

  1. Indikator Edri Polar Buys and Sells Polar Sells memberikan sinyal beli, yaitu CCI melewati 0 pada sumbu atau momentum melewati 0 pada sumbu, dan RSI berada di bawah garis oversold.
  2. Harga menarik kembali atau di bawah 100 siklus EMA.

Kondisi sinyal kosong:

  1. Indikator Edri Polar Buy/Sell Polar Selling Indikator memberikan sinyal jual, yaitu CCI di bawah garis 0 atau Indikator Momentum di bawah garis 0 dan RSI lebih tinggi dari garis overbought.
  2. Harga menarik kembali atau lebih tinggi dari 100 siklus EMA.

Strategi ini juga dapat dikonfigurasi untuk mencari kondisi deviasi konvensional, yaitu RSI dan harga deviasi yang jelas untuk menghasilkan sinyal perdagangan.

Ketika sinyal perdagangan terpenuhi, titik stop loss strategi adalah harga masuk ± 2ATR dan titik stop loss adalah harga masuk ± 4ATR. Ini dapat mengatur batas stop loss yang wajar sesuai dengan tingkat fluktuasi pasar.

Analisis Keunggulan

  1. Pertimbangan dari beberapa indikator dapat membantu menghindari sinyal palsu dari satu indikator.
  2. Metode trading inverse, yang membantu menangkap peluang trading short-line dalam situasi yang bergejolak.
  3. ATR Stop Loss Stop Stop Mode, dapat menyesuaikan posisi berdasarkan volatilitas pasar yang cerdas.
  4. Anda dapat menemukan kondisi yang menyimpang dan menghindari membuka posisi dalam kondisi overbought dan oversold yang tidak ekstrim.

Analisis risiko

  1. Setting parameter indikator yang tidak tepat dapat menyebabkan kehilangan peluang perdagangan atau menghasilkan terlalu banyak sinyal yang salah.
  2. Modus reverse trading dapat mengalami stop loss berturut-turut dalam kondisi tren.
  3. ATR memiliki keterlambatan dan tidak dapat memperbarui stop loss dalam waktu yang tepat dalam situasi yang berubah dengan cepat.

Solusi:

  1. Parameter indikator diuji dan dioptimalkan beberapa kali untuk menemukan kombinasi parameter yang optimal.
  2. Strategi ini dapat dipertimbangkan untuk dihentikan pada saat tren lebih kuat.
  3. Kombinasi dengan metode stop loss lainnya, seperti stop loss bergerak atau stop loss melawan.

Arah optimasi

  1. Uji kombinasi parameter yang berbeda, seperti siklus CCI dan momentum, parameter RSI, ATR, dll.
  2. Menambahkan kondisi penyaringan tambahan, seperti pola harga, perubahan volume transaksi, dan sebagainya.
  3. Menyesuaikan cara manajemen posisi, seperti menetapkan rasio posisi berdasarkan nilai ATR.
  4. Templat parameter untuk berbagai varietas, periode.
  5. Pertimbangkan untuk menghentikan perdagangan reversal di tengah tren, dengan menggunakan mekanisme pelacakan tren.

Meringkaskan

Strategi ini terutama diterapkan pada situasi yang bergolak, untuk mendapatkan keuntungan yang lebih stabil dengan menangkap pembalikan garis pendek di tengah. Ini membantu untuk mengidentifikasi fenomena harga jangka pendek dan menghasilkan sinyal perdagangan berdasarkan beberapa penilaian indikator. Dengan optimasi parameter yang masuk akal dan manajemen risiko, keuntungan dari strategi ini dapat dimanfaatkan secara efektif.

Kode Sumber Strategi
/*backtest
start: 2023-11-12 00:00:00
end: 2023-12-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MagicStrategies

//@version=5
strategy("Reversal Indicator Strategy", overlay = true)

// Input settings
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'], tooltip='CCI or Momentum will be the final source of the Entry signal if selected.')
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(true, title='Find Regular Bullish/Bearish Divergence', tooltip='If checked, it will only consider an overbought or oversold condition that has a regular bullish or bearish divergence formed inside that level.')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level', tooltip='Adjusting the level to extremely high may filter out some signals especially when the option to find divergence is checked.')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level', tooltip='Adjusting this level extremely low may filter out some signals especially when the option to find divergence is checked.')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(false, 'Plot Mean Reversion Bands on the chart', tooltip='This function doesn\'t affect the entry of signal but it suggests buying when the price is at the lower band, and then sell it on the next bounce at the higher bands.')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.8, title='Outer Bands Multiplier', tooltip='Multiplier for both upper and lower bands')


// CCI and Momentum calculation
momLength = ccimomCross == 'Momentum' ? ccimomLength : 10
mom = close - close[momLength]
cci = ta.cci(close, ccimomLength)
ccimomCrossUp = ccimomCross == 'Momentum' ? ta.cross(mom, 0) : ta.cross(cci, 0)
ccimomCrossDown = ccimomCross == 'Momentum' ? ta.cross(0, mom) : ta.cross(0, cci)

// RSI calculation
src = close
up = ta.rma(math.max(ta.change(src), 0), rsiLength)
down = ta.rma(-math.min(ta.change(src), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
oversoldAgo = rsi[0] <= rsiOversold or rsi[1] <= rsiOversold or rsi[2] <= rsiOversold or rsi[3] <= rsiOversold
overboughtAgo = rsi[0] >= rsiOverbought or rsi[1] >= rsiOverbought or rsi[2] >= rsiOverbought or rsi[3] >= rsiOverbought

// Regular Divergence Conditions
bullishDivergenceCondition = rsi[0] > rsi[1] and rsi[1] < rsi[2]
bearishDivergenceCondition = rsi[0] < rsi[1] and rsi[1] > rsi[2]

// Entry Conditions
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)


// Mean Reversion Indicator
meanReversion = plotMeanReversion ? ta.ema(close, emaPeriod) : na
stdDev = plotMeanReversion ? ta.stdev(close, emaPeriod) : na
upperBand = plotMeanReversion ? meanReversion + stdDev * bandMultiplier : na
lowerBand = plotMeanReversion ? meanReversion - stdDev * bandMultiplier : na


// Plotting
plotshape(longEntryCondition, title='BUY', style=shape.triangleup, text='B', location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(shortEntryCondition, title='SELL', style=shape.triangledown, text='S', location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

plot(upperBand, title='Upper Band', color=color.new(color.fuchsia, 0), linewidth=1)
plot(meanReversion, title='Mean', color=color.new(color.gray, 0), linewidth=1)
plot(lowerBand, title='Lower Band', color=color.new(color.blue, 0), linewidth=1)

// Entry signal alerts
alertcondition(longEntryCondition, title='BUY Signal', message='Buy Entry Signal')
alertcondition(shortEntryCondition, title='SELL Signal', message='Sell Entry Signal')
alertcondition(longEntryCondition or shortEntryCondition, title='BUY or SELL Signal', message='Entry Signal')

ema100 = ta.ema(close, 100)
plot(ema100, color=color.red)

// Define trading signals based on the original indicator's entry conditions
// Buy if long condition is met and price has pulled back to or below the 100 EMA
longCondition  = longEntryCondition and close <= ema100
// Sell if short condition is met and price has pulled back to or above the 100 EMA
shortCondition = shortEntryCondition and close >= ema100

// Strategy Entries
if longCondition
    strategy.entry("Buy", strategy.long)
if shortCondition
    strategy.entry("Sell", strategy.short)