Sistem Titik Pusing Trend Berayun


Tarikh penciptaan: 2023-10-23 17:18:28 Akhirnya diubah suai: 2023-10-23 17:18:28
Salin: 0 Bilangan klik: 744
1
fokus pada
1617
Pengikut

Sistem Titik Pusing Trend Berayun

Gambaran keseluruhan

Sistem titik peralihan goyah trend adalah strategi pengesanan trend yang menggunakan purata bergerak, penunjuk CCI dan penunjuk trend super untuk mengenal pasti trend dan masuk pada waktu pengulangan. Ia dapat mengesahkan arah trend dan memberikan isyarat masuk ketika menarik balik.

Prinsip Strategi

Strategi ini menggunakan EMA 21 kitaran sebagai purata bergerak jangka pendek dan EMA 55 kitaran sebagai purata bergerak jangka panjang. EMA 21 hari di atas EMA 55 hari menunjukkan bahawa ia sedang dalam trend menaik dan EMA 21 hari di bawah EMA 55 hari menunjukkan bahawa ia sedang dalam trend menurun.

Indeks CCI dapat menunjukkan sama ada harga telah mencapai tahap yang melampau. Apabila CCI mencapai 100 atau -100 yang ditetapkan, ia adalah isyarat peringkat pertama, 140/-140 adalah isyarat peringkat kedua, dan 180/-180 adalah isyarat peringkat ketiga. Ini menunjukkan bahawa ia mungkin berada dalam keadaan overbought atau oversold.

Indikator Super Trend boleh menentukan arah trend tertentu. Ia menggabungkan purata kelajuan pergerakan sebenar untuk menentukan titik berhenti dan titik masuk untuk trend naik dan turun.

Apabila muncul EMA 21 di atas EMA 55 dan CCI mencapai tahap rendah, anda boleh melakukan masuk lebih banyak. Apabila muncul EMA 21 di bawah EMA 55 dan CCI mencapai tahap tinggi, anda boleh melakukan masuk kosong.

Analisis kelebihan

Strategi ini menggabungkan pelbagai indikator untuk menilai trend dan keadaan overbought oversold, yang dapat menyaring penembusan palsu dengan berkesan. Menggunakan stop-loss tetap dapat memperoleh nisbah pulangan risiko yang stabil. Mengikuti perdagangan trend dapat memperoleh kadar kemenangan yang lebih tinggi. Menggunakan isyarat overbought oversold dari indikator CCI, dapat memperoleh peluang masuk yang lebih baik pada tahap pergerakan trend.

Analisis risiko

Strategi ini perlu dioptimumkan untuk parameter varieti perdagangan, dan parameter varieti yang berbeza akan mempengaruhi kesan strategi. Tetapan stop loss agak kasar dan tidak dapat disesuaikan dengan pasaran yang berbeza.

Arah pengoptimuman

Anda boleh menguji pelbagai jenis parameter untuk mengoptimumkan pergerakan rata-rata, ATR, dan penggandaan ATR. Anda boleh mempertimbangkan untuk menukar stop loss menjadi stop loss ATR atau trailing stop untuk menyesuaikan diri dengan turun naik pasaran. Anda boleh menguji untuk menukar stop loss menjadi stop loss yang bergelombang dan menetapkan keuntungan sasaran berdasarkan nilai ATR. Anda boleh menambah syarat penapisan untuk menentukan kekuatan trend apabila isyarat CCI muncul dan mengelakkan terikat dalam pasaran yang bergolak.

ringkaskan

Sistem titik peralihan goyah trend menggabungkan purata bergerak, petunjuk CCI dan super trend untuk mengenal pasti arah trend dan keadaan overbought dan oversold untuk masuk ke dalam apabila trend berbalik. Ia mempunyai kestabilan dan kadar kemenangan yang lebih tinggi, tetapi memerlukan pengoptimuman lebih lanjut untuk menghentikan kerugian, menghentikan dan mekanisme penilaian trend, supaya parameter strategi dapat disesuaikan dengan pelbagai jenis dan keadaan pasaran. Secara keseluruhan, strategi ini menggabungkan pelbagai petunjuk untuk menangkap peluang trend dengan cara yang mudah dan langsung.

Kod sumber strategi
/*backtest
start: 2022-10-16 00:00:00
end: 2023-01-08 00:00:00
period: 1d
basePeriod: 1h
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/
// © greenmask9

//@version=4
strategy("Oath", overlay=true)

// 21 EMA
emalength = input(21, title="Short EMA")
emashort = ema(close, emalength)

// 55 EMA
emalength2 = input(55, title="Long EMA")
ema = ema(close, emalength2)

//CCI calculation and inputs
lengthcci = input(20, minval=1, title="Overbought/sold detector period")
src = input(close, title="Overbought/sold detector source")
ma = sma(src, lengthcci)
ccivalue = (src - ma) / (0.015 * dev(src, lengthcci))


//CCI plotting
ccioverbought = input(defval=100, title="Overbought level 1")
ccioverbought2 = input(defval=140, title="Overbought level 2")
ccioverbought3 = input(defval=180, title="Overbought level 3")

ccioversold = input(defval=-100, title="Oversold level 1")
ccioversold2 = input(defval=-140, title="Oversold level 2")
ccioversold3 = input(defval=-180, title="Oversold level 3")

//cciOB = (ccivalue >= ccioverbought and ccivalue < ccioverbought2)
//cciOS = (ccivalue <= ccioversold and ccivalue > ccioversold2)

//cciOB2 = (ccivalue >= ccioverbought2 and ccivalue < ccioverbought3)
//cciOS2 = (ccivalue <= ccioversold and ccivalue > ccioversold3)

//cciOB3 = (ccivalue >= ccioverbought3)
//cciOS3 = (ccivalue <= ccioversold3)

//Supertrend

length = input(title="ATR Period", type=input.integer, defval=55)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=5.0)
wicks = input(title="Take Wicks into Account ?", type=input.bool, defval=true)
illuminate = input(title="Illuminate Trend", type=input.bool, defval=false)

atr = mult * atr(length)

longStop = hl2 - atr
longStopPrev = nz(longStop[1], longStop)
longStop := (wicks ? low[1] : close[1]) > longStopPrev ? max(longStop, longStopPrev) : longStop

shortStop = hl2 + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := (wicks ? high[1] : close[1]) < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and (wicks ? high : close) > shortStopPrev ? 1 : dir == 1 and (wicks ? low : close) < longStopPrev ? -1 : dir

//entries
uptrend = emashort>ema and dir == 1
upsignal = ccivalue<=ccioversold and ccivalue>ccioversold2
upsignal2 = ccivalue<=ccioversold2 and ccivalue>ccioversold3
upsignal3 = ccivalue<=ccioversold3
downtrend = emashort<ema and dir == -1
downsignal = ccivalue>=ccioverbought and ccivalue<ccioverbought2
downsignal2 = ccivalue>=ccioverbought2 and ccivalue<ccioverbought3
downsignal3 = ccivalue>=ccioverbought3

//adapts to the current bar, I need to save the bars number when the condition for buy was true, static number is spread
spread = input (0.00020, title="Spread")
upstoploss = longStop - spread
downstoploss = shortStop + spread
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
testlong = input(title="Test longs", type=input.bool, defval=true)
testshort = input(title="Test shorts", type=input.bool, defval=true)
//new
degree = input(title="Test level 1 overbought/sold levels", type=input.bool, defval=true)
degree2 = input(title="Test level 2 overbought/sold levels", type=input.bool, defval=false)
degree3 = input(title="Test level 3 overbought/sold levels", type=input.bool, defval=false)

statictarget = input(title="Use static target", type=input.bool, defval=true)
statictargetvalue = input(title="Static target in pips", type=input.integer, defval=400)

//timetrade = input(title="Open trades only withing specified time", type=input.bool, defval=true)
//timtrade = input()

//přidat možnost TP podle ATR a sl podle ATR
buy1 = uptrend and upsignal and strategy.opentrades==0 and testlong and degree
x1 = barssince (buy1)
if (buy1)
//bodlo by zakázat atrtarget v tomto případě
    if (statictarget)
        strategy.entry("Oath1", strategy.long, ordersize)
        strategy.exit( "Oath1 Close", from_entry="Oath1" , profit=statictargetvalue,stop=upstoploss[x1])
 
buy2 = uptrend and upsignal2 and strategy.opentrades==0 and testlong and degree2
x2 = barssince (buy2)
if (buy2)
//bodlo by zakázat atrtarget v tomto případě
    if (statictarget)
        strategy.entry("Oath2", strategy.long, ordersize)
        strategy.exit( "Oath2 Close", from_entry="Oath2" , profit=statictargetvalue,stop=upstoploss[x2])
  
buy3 = uptrend and upsignal3 and strategy.opentrades==0 and testlong and degree3
x3 = barssince (buy3)
if (buy3)
//bodlo by zakázat atrtarget v tomto případě
    if (statictarget)
        strategy.entry("Oath3", strategy.long, ordersize)
        strategy.exit( "Oath3 Close", from_entry="Oath3" , profit=statictargetvalue,stop=upstoploss[x3])

sell1 = downtrend and downsignal and strategy.opentrades==0 and testshort and degree
y1 = barssince (sell1)
if (sell1)
    if (statictarget)
        strategy.entry("Oath1.s", strategy.short, ordersize)
        strategy.exit( "Oath1 Close", from_entry="Oath1.s" , profit=statictargetvalue,stop=downstoploss[y1])

sell2 = downtrend and downsignal2 and strategy.opentrades==0 and testshort and degree2
y2 = barssince (sell2)
if (sell2)
    if (statictarget)
        strategy.entry("Oath2.s", strategy.short, ordersize)
        strategy.exit( "Oath2 Close", from_entry="Oath2.s" , profit=statictargetvalue,stop=downstoploss[y2])

sell3 = downtrend and downsignal3 and strategy.opentrades==0 and testshort and degree3
y3 = barssince (sell3)
if (sell3)
    if (statictarget)
        strategy.entry("Oath3.s", strategy.short, ordersize)
        strategy.exit( "Oath3 Close", from_entry="Oath3.s" , profit=statictargetvalue,stop=downstoploss[y3])

plotshape(uptrend and upsignal and degree, location=location.belowbar, color=color.green, transp=0, style=shape.triangleup, size=size.tiny, text="Oath up")
plotshape(downtrend and downsignal and degree, location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, size=size.tiny, text="Oath down")
plotshape(uptrend and upsignal2 and degree2, location=location.belowbar, color=color.green, transp=0, style=shape.triangleup, size=size.tiny, text="Oath up+")
plotshape(downtrend and downsignal2 and degree2, location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, size=size.tiny, text="Oath down+")
plotshape(uptrend and upsignal3 and degree3, location=location.belowbar, color=color.green, transp=0, style=shape.triangleup, size=size.tiny, text="Oath up++")
plotshape(downtrend and downsignal3 and degree3, location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, size=size.tiny, text="Oath down++")