Strategi perdagangan linier dinamis ganda adalah strategi yang menggunakan indikator OTT dan indikator osilator Wavetrend. Ini menggabungkan indikator OTT yang dikembangkan oleh guru Anıl Özekşi dan indikator osilator Wavetrend lonestar108 untuk membentuk indikator perdagangan yang sukses. Strategi ini dapat dilakukan dalam pasar dua arah.
Strategi perdagangan rasio energi dua arah pertama kali menghitung rata-rata Brin, yaitu rata-rata bergerak MAvg. Kemudian, berdasarkan rentang persentase dan periode yang ditetapkan pengguna, menghitung longStop dan shortStop.
Secara khusus, indikator inti dari strategi ini adalah indikator OTT. Indikator OTT terdiri dari garis rata-rata dan garis batas, yang merupakan posisi garis batas yang disesuaikan dengan tingkat fluktuasi pasar berdasarkan algoritma tertentu.
Strategi ini juga menggunakan indikator Wavetrend untuk menentukan arah tren harga, hanya melakukan shorting jika ditentukan sebagai tren turun; jika ditentukan sebagai tren naik, hanya melakukan shorting.
Strategi perdagangan linier dinamis ganda menggabungkan keunggulan indikator moving average, Brinks, dan OTT, yang dapat secara otomatis menyesuaikan posisi stop loss, mengurangi probabilitas stop loss diaktifkan.
Secara khusus, keuntungan utama dari strategi ini adalah:
Strategi perdagangan linear biner juga memiliki beberapa risiko, terutama yang berkaitan dengan:
Cara pencegahannya adalah:
Ada ruang untuk lebih memaksimalkan strategi perdagangan linier energi dua arah:
Strategi perdagangan berorientasi energi ganda mengintegrasikan keunggulan dari berbagai indikator, dapat secara otomatis menyesuaikan stop loss, menilai sinyal reversal, mengidentifikasi arah tren. Ini memiliki kemampuan kontrol risiko yang kuat, mudah untuk memahami penggunaan, dan lain-lain. Namun, ada juga risiko seperti kebocoran, sinyal tidak akurat.
/*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")