Двухдинамическая однолинейная торговая стратегия - это стратегия, в которой используются OTT-индикаторы и показатели колебателя Wavetrend. Она объединяет OTT-индикаторы, разработанные преподавателем Anıl Özekşi, и Wavetrend-индикаторы lonestar108, чтобы сформировать успешный торговый показатель. Эта стратегия может быть использована для многократного позиционирования на двусторонних рынках.
Сначала вычисляется средняя траектория по Бриньовой полосе, то есть движущаяся средняя MAvg. Затем, в зависимости от процентного диапазона и цикла, установленного пользователем, вычисляются длинные остановки longStop и короткие остановки shortStop.
В частности, центральным показателем этой стратегии является показатель OTT. OTT-индикатор, состоящий из средней и пограничной линии, состоит в том, чтобы на основе определенного алгоритма корректировать положение пограничной линии в соответствии с уровнем рыночных колебаний.
Стратегия одновременно использует индикатор Wavetrend для определения направления ценовой тенденции, если она определяется как нисходящая тенденция, только не делайте больше; если она определяется как восходящая тенденция, только делайте больше, не делайте больше.
Двойная динамическая равнолинейная торговая стратегия объединяет преимущества движущихся средних, брин-полосы и OTT-индикаторов, позволяя автоматически регулировать положение стоп-ложа, снижая вероятность активирования стоп-ложа. При этом в сочетании с индикаторами для оценки тренда, избегайте быть заложенными в колебательных тенденциях.
В частности, основными преимуществами этой стратегии являются:
Существуют определенные риски, связанные с двунаправленной стратегией торговли в однородной форме, в основном в следующих аспектах:
Основные методы борьбы:
Однако, по мнению экспертов, в этом случае есть все основания для дальнейшей оптимизации стратегии торговли двумя линиями:
Стратегия торговли двумя динамическими равнолинейными линиями объединяет преимущества различных показателей, может автоматически регулировать уровень остановки, определять обратные сигналы, идентифицировать направление тенденции. Она обладает сильными преимуществами управления рисками, легко понимает использование. Но также существует риск подпоры, неточности сигнала и т. Д. Эта стратегия может быть далее оптимизирована, использоваться в комбинации с другими показателями, исследовать алгоритмы самостоятельной адаптации и т. Д. В целом, стратегия торговли двумя динамическими равнолинейными линиями является практической стратегией торговли прорывного типа.
/*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")