
Trend wobble tipping system adalah strategi pelacakan tren yang menggunakan moving average, indikator CCI, dan indikator supertrend untuk mengidentifikasi tren dan masuk pada saat pullback. Ia dapat mengkonfirmasi arah tren dan memberikan sinyal masuk saat pullback.
Strategi ini menggunakan EMA 21 periode sebagai rata-rata bergerak jangka pendek dan EMA 55 periode sebagai rata-rata bergerak jangka panjang. EMA 21 hari di atas EMA 55 hari menunjukkan bahwa saat ini sedang dalam tren naik, dan EMA 21 hari di bawah EMA 55 hari menunjukkan bahwa saat ini sedang dalam tren turun.
Indikator CCI dapat menunjukkan apakah harga telah mencapai tingkat ekstrim. Ketika CCI mencapai 100 atau -100 standar, itu adalah sinyal tingkat pertama, 140/-140 adalah sinyal tingkat kedua, dan 180/-180 adalah sinyal tingkat ketiga. Ini menunjukkan bahwa saat ini mungkin berada dalam keadaan overbought atau oversold.
Indikator supertrend dapat menentukan arah tren tertentu. Ini menggabungkan amplitudo rata-rata fluktuasi nyata untuk menentukan titik berhenti dan titik masuk untuk tren naik dan tren turun.
Ketika muncul EMA 21 di atas EMA 55 dan CCI mencapai level rendah, Anda dapat melakukan over entry. Ketika muncul EMA 21 di bawah EMA 55 dan CCI mencapai level tinggi, Anda dapat melakukan entri kosong. Stop loss setelah masuk ditetapkan sebagai stop loss untuk indikator tren super, dan stop loss ditetapkan sebagai keuntungan 400 poin tetap.
Strategi ini menggabungkan beberapa indikator untuk menilai tren dan overbought oversold, yang dapat secara efektif memfilter penipuan palsu. Menggunakan stop-loss tetap dapat memperoleh rasio risiko-pengembalian yang stabil. Mengikuti perdagangan tren dapat memperoleh tingkat kemenangan yang lebih tinggi.
Strategi ini perlu dioptimalkan untuk parameter varietas perdagangan, pengaturan parameter varietas yang berbeda dapat mempengaruhi efektivitas strategi. Pengaturan stop loss relatif kasar dan tidak dapat disesuaikan dengan pasar yang berbeda.
Anda dapat menguji pengaturan parameter dari berbagai jenis perdagangan, mengoptimalkan siklus rata-rata bergerak, siklus ATR, penggandaan ATR, dll. Anda dapat mempertimbangkan untuk mengubah stop loss menjadi stop loss ATR atau trailing stop, untuk menyesuaikan dengan fluktuasi pasar. Anda dapat menguji stop loss menjadi stop loss fluktuasi, untuk mengatur target profit berdasarkan nilai ATR. Anda dapat menambahkan kondisi penyaringan, untuk menilai kekuatan tren ketika sinyal CCI muncul, untuk menghindari terjebak di pasar yang bergolak.
Sistem pivot point yang bergoyang tren menggabungkan moving average, indikator CCI, dan supertrend untuk mengidentifikasi arah tren dan overbought oversold untuk masuk saat tren berbalik. Ini memiliki stabilitas dan tingkat kemenangan yang lebih tinggi, tetapi perlu lebih mengoptimalkan mekanisme stop loss, stop loss, dan penilaian tren, sehingga parameter strategi dapat disesuaikan dengan berbagai varietas dan lingkungan pasar. Secara keseluruhan, strategi ini menggabungkan beberapa indikator untuk menangkap peluang tren dengan cara yang mudah dan langsung.
/*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++")