Trend Berikutan Strategi Dagangan Jangka Pendek

Penulis:ChaoZhang, Tarikh: 2023-11-16 11:11:32
Tag:

img

Ringkasan

Strategi ini adalah strategi perdagangan jangka pendek yang mengenal pasti trend berdasarkan beberapa penunjuk. Ia menggabungkan 8 penunjuk termasuk WOW, BMA, BarColor, SuperTrend, DI, TTS, RSI dan WTO untuk menentukan arah trend dan membuat keputusan perdagangan dengan sewajarnya.

Logika Strategi

Strategi ini mula-mula mengira dan menilai arah trend 8 penunjuk - WOW, BMA, BarColor, SuperTrend, DI, TTS, RSI dan WTO.

Indikator WOW menilai trend menaik atau menurun berdasarkan lokasi badan.

Indikator BMA menilai trend dengan hubungan antara SMA terbuka dan dekat. SMA dekat melintasi di atas SMA Terbuka menunjukkan kenaikan sementara melintasi di bawah menunjukkan penurunan.

Penunjuk BarColor menilai trend dengan warna candelier. Lilin kuning berterusan menunjukkan bullish manakala lilin hitam menunjukkan bearish.

Indikator SuperTrend menilai trend berdasarkan lokasi harga berbanding julat purata. Harga di atas jalur atas menunjukkan kenaikan manakala harga di bawah jalur bawah menunjukkan penurunan.

Indikator DI menilai trend dengan hubungan antara pergerakan arah positif dan negatif.

Penunjuk TTS menilai trend berdasarkan lokasi harga berbanding purata bergerak.

Penunjuk RSI menilai arah trend berdasarkan tahap indeks kekuatan relatif.

Indikator WTO menilai arah trend berdasarkan pengayun trend gelombang.

Strategi kemudian mengira jumlah isyarat kenaikan dari 8 penunjuk dan memetakan garis sokongan dan rintangan SILA dengan sewajarnya.

Apabila pelbagai penunjuk menunjukkan kenaikan, isyarat beli dihasilkan apabila penutupan berada di atas garis sokongan terendah. Apabila pelbagai penunjuk menunjukkan penurunan, isyarat jual dihasilkan apabila penutupan berada di bawah garis rintangan terendah.

Di samping itu, strategi ini juga menggunakan corak lilin untuk mencari peluang menarik balik dan meningkatkan titik masuk.

Kelebihan Strategi

  1. Menggabungkan beberapa penunjuk meningkatkan ketepatan

Strategi ini menggunakan 8 penunjuk trend umum untuk menentukan trend dari pelbagai aspek, dengan itu meningkatkan ketepatan dan kebolehpercayaan penilaian trend.

  1. Sistem SILA mengenal pasti kekuatan isyarat

Garis sokongan / rintangan SILA mencerminkan bilangan isyarat kenaikan / penurunan. Lebih banyak garis menunjukkan isyarat yang lebih kuat. Ini membantu peniaga untuk menilai lebih lanjut kekuatan isyarat perdagangan.

  1. corak candlestick meningkatkan titik masuk

Strategi ini mencari peluang menarik balik berdasarkan corak candlestick untuk mencari titik masuk yang lebih baik apabila trend berbalik.

Risiko Strategi

  1. Potensi konflik antara penunjuk

Banyak penunjuk kadangkala boleh menghasilkan isyarat yang bertentangan, menjadikan pengambilan keputusan lebih sukar.

  1. Parameter mungkin memerlukan pengoptimuman

Parameter lalai mungkin tidak optimum. Pengoptimuman lanjut mungkin diperlukan untuk mencapai hasil yang terbaik.

  1. Pertimbangkan risiko sistemik

Peristiwa black swan boleh membatalkan isyarat teknikal biasa.

  1. Risiko penggunaan

Mengikuti trend ini boleh mengakibatkan pengeluaran yang lebih besar semasa pembetulan pasaran.

Peningkatan Strategi

  1. Mengoptimumkan parameter penunjuk

Secara sistematik menguji dan mengoptimumkan parameter seperti tempoh dan tahap nilai untuk mencari kombinasi parameter yang optimum.

  1. Tambah kaedah stop loss

Pertimbangkan untuk menambah pergerakan atau peratusan stop loss untuk mengawal pengeluaran.

  1. Masukkan penunjuk jumlah

Gabungkan penunjuk trend dengan penunjuk jumlah seperti MAVP dan OBV untuk meningkatkan keputusan taktikal.

  1. Menguruskan saiz kedudukan

Penyelidikan saiz kedudukan yang optimum untuk peringkat pasaran yang berbeza, dan ukuran apabila trend menjadi lebih jelas.

Kesimpulan

Ringkasnya, ini adalah trend multi-penunjuk yang mengikuti strategi perdagangan jangka pendek. Ia menentukan arah trend menggunakan beberapa penunjuk dan mengenal pasti kekuatan isyarat dengan sistem SILA, ditambah dengan corak candlestick untuk peningkatan kemasukan. Strategi ini boleh meningkatkan ketepatan tetapi risiko isyarat yang bertentangan harus diperhatikan. Penambahbaikan lanjut boleh dibuat melalui pengoptimuman parameter, pengoptimuman kehilangan berhenti, penggabungan jumlah dll.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// (c) Noro
//2017

//@version=2

strategy(title="Noro's SILA v1.6L Strategy", shorttitle="SILA v1.6L str", overlay=true)

//settings
sensup = input(5, title="Uptrend-sensivity", minval = -8, maxval = 8)
sensdn = input(5, title="Downtrend-sensivity", minval = -8, maxval = 8)
usewow = input(true, title="Use trend-indicator WOW?")
usebma = input(true, title="Use trend-indicator BestMA?")
usebc = input(true, title="Use trend-indicator BarColor?")
usest = input(true, title="Use trend-indicator SuperTrend?")
usedi = input(true, title="Use trend-indicator DI?")
usetts = input(true, title="Use trend-indicator TTS?")
usersi = input(true, title="Use trend-indicator RSI?")
usewto = input(true, title="Use trend-indicator WTO?")
dist = input(100, title="Distance SILA-lines", minval = 0, maxval = 100)
usetl = input(true, title="Need SILA-lines?")
usebgup = input(true, title="Need uptrend-background?")
usebgdn = input(true, title="Need downtrend-background?")
usealw = input(true, title="Need background always?")
usearr = input(true, title="Need new-trend-arrows?")
useloco = input(true, title="Need locomotive-arrows?")
usemon = input(true, title="Need money?") //joke

// WOW 1.0 method
lasthigh = highest(close, 30)
lastlow = lowest(close, 30)
center = (lasthigh +lastlow) / 2
body = (open + close) / 2
trend1 = body > center ? 1 : body < center ? -1 : trend1[1]
trend2 = center > center[1] ? 1 : center < center[1] ? -1 : trend2[1]
WOWtrend = usewow == true ? trend1 == 1 and trend2 == 1 ? 1 : trend1 == -1 and trend2 == -1 ? -1 : WOWtrend[1] : 0

// BestMA 1.0 method
SMAOpen = sma(open, 30)
SMAClose = sma(close, 30)
BMAtrend = usebma == true ? SMAClose > SMAOpen ? 1 : SMAClose < SMAOpen ? -1 : BMAtrend[1] : 0

// BarColor 1.0 method
color = close > open ? 1 : 0
score = color + color[1] + color[2] + color[3] + color[4] + color[5] + color[6] + color[7]
BARtrend = usebc == true ? score > 5 ? 1 : score < 3 ? -1 : BARtrend[1] : 0

// SuperTrend mehtod
Up = hl2 - (7 * atr(3))
Dn = hl2 + (7 * atr(3))
TrendUp = close[1] > TrendUp[1] ? max(Up, TrendUp[1]) : Up
TrendDown = close[1] < TrendDown[1] ? min(Dn, TrendDown[1]) : Dn
SUPtrend = usest == true ? close > TrendDown[1] ? 1: close < TrendUp[1]? -1 : SUPtrend[1] : 0

//DI method
th = 20
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/14) + TrueRange
SmoothedDirectionalMovementPlus = nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/14) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/14) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DItrend = usedi == true ? DIPlus > DIMinus ? 1 : -1 : 0

//TTS method (Trend Trader Strategy)
//Start of HPotter's code
//Andrew Abraham' idea
avgTR      = wma(atr(1), 21)
highestC   = highest(21)
lowestC    = lowest(21)
hiLimit = highestC[1]-(avgTR[1] * 3)
loLimit = lowestC[1]+(avgTR[1] * 3)
ret = iff(close > hiLimit and close > loLimit, hiLimit, iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
pos =	iff(close > ret, 1, iff(close < ret, -1, nz(pos[1], 0))) 
//End of HPotter's code

TTStrend = usetts == true ? pos == 1 ? 1 : pos == -1 ? -1 : TTStrend[1] : 0

//RSI method
RSIMain = (rsi(close, 13) - 50) * 1.5
rt = iff(RSIMain > -10, 1, iff(RSIMain < 10, -1, nz(pos[1], 0))) 
RSItrend = usersi == true ? rt : 0

//WTO ("WaveTrend Oscilator") method by LazyBear
//Start of LazyBear's code
esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
tci = ema(ci, 21)
//End of LazyBear's code

WTOtrend = usewto == true ? tci > 0 ? 1 : tci < 0 ? -1 : 0 : 0

//plots
trends = usemon == true ? WOWtrend + BMAtrend + BARtrend + SUPtrend + DItrend + TTStrend + RSItrend + WTOtrend: -1 * (WOWtrend + BMAtrend + BARtrend + SUPtrend + DItrend + TTStrend + RSItrend + WTOtrend)
pricehi = sma(high, 10)
pricelo = sma(low, 10)
per = usetl == 1 ? dist / 10000 : 0

color1 = usetl == true ? trends > 0 ? blue : na : na
plot(pricelo * (1 - per), color=color1, linewidth=1, title="SILA-line")
color2 = usetl == true ? trends > 1 ? blue : na : na
plot(pricelo * (1 - 2 * per), color=color2, linewidth=1, title="SILA-line")
color3 = usetl == true ? trends > 2 ? blue : na : na
plot(pricelo * (1 - 3 * per), color=color3, linewidth=1, title="SILA-line")
color4 = usetl == true ? trends > 3 ? blue : na : na
plot(pricelo * (1 - 4 * per), color=color4, linewidth=1, title="SILA-line")
color5 = usetl == true ? trends > 4 ? blue : na : na
plot(pricelo * (1 - 5 * per), color=color5, linewidth=1, title="SILA-line")
color6 = usetl == true ? trends > 5 ? blue : na : na
plot(pricelo * (1 - 6 * per), color=color6, linewidth=1, title="SILA-line")
color7 = usetl == true ? trends > 6 ? blue : na : na
plot(pricelo * (1 - 7 * per), color=color7, linewidth=1, title="SILA-line")
color8 = usetl == true ? trends > 7 ? blue : na : na
plot(pricelo * (1 - 8 * per), color=color8, linewidth=1, title="SILA-line")

color10 = usetl == true ? trends < 0 ? black : na : na
plot(pricehi * (1 + per), color=color10, linewidth=1, title="SILA-line")
color11 = usetl == true ? trends < -1 ? black : na : na
plot(pricehi * (1 + 2 * per), color=color11, linewidth=1, title="SILA-line")
color12 = usetl == true ? trends < -2 ? black : na : na
plot(pricehi * (1 + 3 * per), color=color12, linewidth=1, title="SILA-line")
color13 = usetl == true ? trends < -3 ? black : na : na
plot(pricehi * (1 + 4 * per), color=color13, linewidth=1, title="SILA-line")
color14 = usetl == true ? trends < -4 ? black : na : na
plot(pricehi * (1 + 5 * per), color=color14, linewidth=1, title="SILA-line")
color15 = usetl == true ? trends < -5 ? black : na : na
plot(pricehi * (1 + 6 * per), color=color15, linewidth=1, title="SILA-line")
color16 = usetl == true ? trends < -6 ? black : na : na
plot(pricehi * (1 + 7 * per), color=color16, linewidth=1, title="SILA-line")
color17 = usetl == true ? trends < -7 ? black : na : na
plot(pricehi * (1 + 8 * per), color=color17, linewidth=1, title="SILA-line")

//background
col = usebgup == true and trends >= sensup ? 1 : usebgdn == true and trends <= (-1 * sensdn) ? -1 : usealw == true ? col[1] : 0
bgcolor = col == 1 ? lime : col == -1 ? red : na
//bgcolor(bgcolor, transp=70)

//arrows
posi = trends >= sensup ? 1 : trends <= (-1 * sensdn) ? -1 : posi[1]
arr = usearr == true ? posi == 1 and posi[1] < 1 ? 1 : posi == -1 and posi[1] > -1 ? -1 : na : na
//plotarrow(arr == 1 ? 1 : na, title="UpArrow", colorup=blue, maxheight=60, minheight=50, transp=0)
//plotarrow(arr == -1 ? -1 : na, title="DnArrow", colordown=blue, maxheight=60, minheight=50, transp=0)

//locomotive
bar = close > open ? 1 : close < open ? -1 : 0
locotop = bar == -1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0
locobot = bar == 1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
entry = useloco == false ? 1 : posi == posi[1] ? (locotop == 1 and posi == -1) or (locobot == 1 and posi == 1) ? 1 : entry[1] : 0
//plotarrow(locobot == 1 and entry[1] == 0 and posi == 1 ? 1 : na, title="UpLocomotive", colorup=yellow, maxheight=60, minheight=50, transp=0)
//plotarrow(locotop == 1 and entry[1] == 0 and posi == -1 ? -1 : na, title="DnLocomotive", colordown=yellow, maxheight=60, minheight=50, transp=0)

longCondition = arr == 1
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = arr == -1
if (shortCondition)
    strategy.entry("Short", strategy.short)

Lebih lanjut