Strategi Dagangan Pengayun


Tarikh penciptaan: 2023-12-13 14:45:51 Akhirnya diubah suai: 2023-12-13 14:45:51
Salin: 0 Bilangan klik: 795
1
fokus pada
1621
Pengikut

Strategi Dagangan Pengayun

Gambaran keseluruhan

Ini adalah strategi perdagangan berbalik berdasarkan pelbagai petunjuk teknikal. Ia menggabungkan petunjuk seperti CCI, petunjuk momentum, RSI untuk mengenal pasti peluang perdagangan yang berpotensi berlebih dan kosong. Strategi ini akan menghantar isyarat perdagangan apabila petunjuk menunjukkan isyarat overbought dan oversold dan harga berlaku.

Prinsip Strategi

Isyarat dagangan strategi ini berasal dari satu indikator yang disesuaikan Edri titik titik jual beli, yang mempertimbangkan CCI, indikator momentum dan RSI secara menyeluruh. Logiknya ialah:

Syarat isyarat berbilang kepala:

  1. Indeks Edri berpusat pada titik beli dan jual. Indeks Edri berpusat pada titik beli dan jual. Indeks Edri berpusat pada titik beli dan jual.
  2. Harga menarik balik atau di bawah 100 kitaran EMA.

Keadaan isyarat kepala kosong:

  1. Indeks Edri berpusat pada titik jual dan titik beli yang memberi isyarat menjual, iaitu CCI di bawah 0 atau momentum di bawah 0 dan RSI lebih tinggi daripada garis beli.
  2. Harga menarik balik atau lebih tinggi daripada 100 kitaran EMA.

Strategi ini juga boleh dipilih untuk mencari keadaan yang berbeza dari kebiasaan, iaitu RSI dan harga yang berbeza dengan harga yang jelas untuk menghasilkan isyarat perdagangan.

Apabila isyarat perdagangan dipenuhi, titik hentian strategi adalah harga masuk + 2 ATR dan titik hentian adalah harga masuk + 4 ATR. Ini boleh menetapkan julat hentian hentian yang munasabah berdasarkan tahap turun naik pasaran.

Analisis kelebihan

  1. Penghakiman berbilang indikator membantu mengelakkan isyarat palsu dari satu indikator.
  2. Kaedah perdagangan terbalik, yang membantu menangkap peluang perdagangan pendek dalam keadaan yang bergolak.
  3. ATR Stop Loss Stop Stop Mode, boleh menyesuaikan kedudukan berdasarkan kecerdasan turun naik pasaran.
  4. Anda boleh mencari keadaan yang tidak sesuai, dan mengelakkan membuka kedudukan dalam keadaan overbought dan oversold yang tidak ekstrem.

Analisis risiko

  1. Penetapan parameter penunjuk yang tidak betul boleh menyebabkan peluang perdagangan yang hilang atau menghasilkan terlalu banyak isyarat yang salah.
  2. Mod perdagangan reverse mungkin mengalami kerugian berturut-turut dalam keadaan trend.
  3. ATR mempunyai keterbelakangan, tidak dapat memperbaharui titik henti kerugian dalam masa yang cepat.

Penyelesaian:

  1. Parameter penunjuk diuji dan dioptimumkan berulang kali untuk mencari kombinasi parameter terbaik.
  2. Anda boleh mempertimbangkan untuk berhenti menggunakan strategi ini apabila trend semakin kuat.
  3. Gabungan dengan kaedah penangguhan lain, seperti penangguhan bergerak atau penangguhan bertentangan.

Arah pengoptimuman

  1. Uji kombinasi parameter yang berbeza, seperti kitaran CCI dan dinamika, parameter RSI, kelipatan ATR dan sebagainya.
  2. Menambah syarat penapisan tambahan seperti pola harga, perubahan kuantiti dan sebagainya.
  3. Menyesuaikan cara pengurusan kedudukan, seperti menetapkan nisbah kedudukan mengikut nilai ATR dan sebagainya.
  4. Templat parameter untuk pelbagai jenis dan tempoh.
  5. Pertimbangkan untuk menghentikan perdagangan reverse dalam keadaan trend, digabungkan dengan mekanisme trend tracking.

ringkaskan

Strategi ini digunakan terutamanya dalam keadaan goyah, untuk mendapatkan keuntungan yang lebih stabil dengan menangkap pembalikan garis pendek di tengah-tengah. Ia membantu untuk mengenal pasti fenomena harga jangka pendek dan menghasilkan isyarat perdagangan berdasarkan penilaian pelbagai petunjuk. Dengan pengoptimuman parameter yang munasabah dan pengurusan risiko, kelebihan strategi ini dapat dimanfaatkan dengan berkesan.

Kod 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)