
Strategi dagangan linear dua dinamik adalah strategi yang menggunakan penunjuk OTT dan penunjuk osilator Wavetrend. Ia menggabungkan penunjuk OTT yang dibangunkan oleh guru Anıl Özekşi dan penunjuk osilator Wavetrend oleh lonestar108 untuk membentuk satu penunjuk perdagangan yang berjaya. Strategi ini boleh dilakukan dalam pasaran dua hala.
Strategi perdagangan garis lurus dua hala pertama kali mengira garis tengah Brin, iaitu rata-rata bergerak MAvg. Kemudian berdasarkan peratusan yang ditetapkan oleh pengguna dan jangka masa, mengira titik longStop dan titik shortStop. Apabila harga menembusi garis atas, lakukan lebih banyak, dan apabila ia menembusi garis bawah, kosong.
Khususnya, indikator utama strategi ini adalah indikator OTT. Indikator OTT terdiri daripada garis rata-rata dan garis sempadan, yang menyesuaikan kedudukan garis sempadan mengikut tahap turun naik pasaran berdasarkan algoritma tertentu. Apabila harga jatuh di bawah garis sempadan OTT, buat kosong; apabila harga menembusi garis sempadan OTT, buat lebih banyak.
Strategi ini juga menggunakan indikator Wavetrend untuk menentukan arah trend harga, jika ditentukan sebagai tren turun, hanya melakukan lebih banyak dan tidak melakukan lebih banyak; jika ditentukan sebagai tren naik, hanya melakukan lebih banyak dan tidak melakukan lebih banyak.
Strategi perdagangan linear dua dinamik menggabungkan kelebihan rata-rata bergerak, Brinband dan OTT, yang dapat menyesuaikan kedudukan hentian secara automatik, mengurangkan kebarangkalian hentian diaktifkan. Ia juga menggabungkan indikator penghakiman trend untuk mengelakkan terikat dalam tren goyah.
Secara khusus, kelebihan utama strategi ini ialah:
Strategi dagangan linear biner juga mempunyai risiko, terutama tertumpu pada beberapa aspek berikut:
Kaedah-kaedah utama yang boleh digunakan ialah:
Strategi perdagangan linear dua dinamik masih mempunyai ruang untuk pengoptimuman yang lebih lanjut:
Strategi perdagangan bertaraf dua mengintegrasikan kelebihan pelbagai petunjuk, dapat menyesuaikan stop loss secara automatik, menilai isyarat pembalikan, mengenal pasti arah trend. Ia mempunyai kelebihan seperti kawalan risiko yang kuat, mudah difahami. Tetapi ada juga risiko seperti tersembunyi, isyarat tidak tepat.
/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Bugra trade strategy", shorttitle="Bugra trade strategy", overlay=true)
// Kullanıcı Girdileri
length = input(5, title="Period", minval=1)
percent = input(1, title="Sihirli Yüzde", type=input.float, step=0.1, minval=0)
mav = input(title="Hareketli Ortalama Türü", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
wt_n1 = input(10, title="Kanal Periyodu")
wt_n2 = input(21, title="Averaj Uzunluğu")
src = close
// Tarih Aralığı Girdileri
startDate = input(20200101, title="Başlangıç Tarihi (YYYYMMDD)")
endDate = input(20201231, title="Bitiş Tarihi (YYYYMMDD)")
// Tarih Filtresi Fonksiyonu
isDateInRange() => true
// Özel Fonksiyonlar
Var_Func(src, length) =>
valpha = 2 / (length + 1)
vud1 = src > src[1] ? src - src[1] : 0
vdd1 = src < src[1] ? src[1] - src : 0
vUD = sum(vud1, length)
vDD = sum(vdd1, length)
vCMO = (vUD - vDD) / (vUD + vDD)
varResult = 0.0
varResult := nz(valpha * abs(vCMO) * src + (1 - valpha * abs(vCMO)) * nz(varResult[1]))
varResult
Wwma_Func(src, length) =>
wwalpha = 1 / length
wwma = 0.0
wwma := wwalpha * src + (1 - wwalpha) * nz(wwma[1])
wwma
Zlema_Func(src, length) =>
zxLag = floor(length / 2)
zxEMAData = src + (src - src[zxLag])
zlema = ema(zxEMAData, length)
zlema
Tsf_Func(src, length) =>
lrc = linreg(src, length, 0)
lrs = lrc - linreg(src, length, 1)
tsf = lrc + lrs
tsf
getMA(src, length) =>
ma = mav == "SMA" ? sma(src, length) :
mav == "EMA" ? ema(src, length) :
mav == "WMA" ? wma(src, length) :
mav == "TMA" ? sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) :
mav == "VAR" ? Var_Func(src, length) :
mav == "WWMA" ? Wwma_Func(src, length) :
mav == "ZLEMA" ? Zlema_Func(src, length) :
mav == "TSF" ? Tsf_Func(src, length) : na
// Strateji Hesaplamaları
MAvg = getMA(src, length)
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT = MAvg > MT ? MT*(200+percent)/200 : MT*(200-percent)/200
plot(OTT, title="BugRA", color=color.rgb(251, 126, 9))
// Alım ve Satım Koşulları
longCondition = crossover(src, OTT) and isDateInRange()
shortCondition = crossunder(src, OTT) and isDateInRange()
// Strateji Giriş ve Çıkış Emirleri
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.close("Long")