
Strategi ini menggunakan 24 periode saluran Dongguan digabungkan dengan 200 periode garis rata-rata sebagai sinyal perdagangan utama. Masuk titik titik di bawah gelombang merah hijau memilih untuk melakukan shorting, gelombang ke atas memilih untuk melakukan lebih banyak.
Kebijakan ini didasarkan pada beberapa hal:
Menggunakan nilai tertinggi dan terendah dari 24 siklus untuk membangun saluran Dongguan, ketika harga menembus saluran ini, menunjukkan kemungkinan penurunan besar.
200 Periode rata-rata garis sebagai kondisi penyaringan polygon, jika pecah saluran Dongguan dan harga di sisi lain dari rata-rata garis, dianggap bahwa perdagangan mungkin terjadi pembalikan.
Sinyal masuk adalah:
Stop loss adalah harga tertinggi dari 3 garis K terbaru, dan stop loss adalah harga open minus tiga kali lipat dari stop loss dan open. Stop loss dan stop loss dihitung dengan cara yang berbeda dari shorting.
Keuntungan dari strategi ini adalah bahwa dengan menggunakan campuran penyaringan seragam melalui saluran Dongxian +, menghindari kesalahan dalam satu indikator teknis, dan secara signifikan meningkatkan tingkat keberhasilan strategi.
Strategi ini memiliki keuntungan sebagai berikut:
Tingkat kemenangan yang tinggi: Menggunakan kombinasi antara saluran dan indikator garis rata, dapat secara efektif menghindari kerugian yang tidak perlu yang disebabkan oleh kesalahan indikator teknis tunggal.
Pengendalian risiko: Menggunakan harga tertinggi/terendah terbaru sebagai titik stop loss, secara efektif mengendalikan kerugian tunggal. Stop loss adalah 3 kali lipat dari stop loss, risiko keuntungan lebih tinggi.
Sederhana dan mudah dioperasikan: indikator dan logika sangat sederhana dan jelas, mudah dipahami dan diterapkan.
Adaptasi yang kuat: lebih sedikit parameter strategi, stabilitas yang baik dalam berbagai varietas dan siklus.
Strategi ini menghadapi risiko utama sebagai berikut:
Risiko situasi ekstrim: Jika terjadi situasi unilateral yang sangat besar, mudah untuk memicu stop loss atau menyebabkan peningkatan kerugian. Hal ini dapat ditanggapi dengan cara yang sesuai dengan pelepasan stop loss, pengurangan posisi, dll.
Risiko kesalahan penghitungan sinyal tandang: Mengadopsi sinyal baru dari lawan sebagai sinyal tandang, mungkin sering masuk dan keluar dalam situasi yang bergoyang, dan kehilangan slip point yang tidak perlu. Dapat diselesaikan dengan mengoptimalkan logika tandang.
Risiko optimasi parameter: Periode saluran Dongguan dan pengaturan parameter garis rata yang tidak tepat dapat menyebabkan frekuensi atau keterlambatan sinyal, yang dapat dikurangi dengan optimasi parameter dan tes kombinasi.
Strategi ini dapat dioptimalkan dari beberapa arah:
Periode saluran dan rata-rata siklus dapat dioptimalkan untuk mencari kombinasi parameter yang optimal.
Dapat menguji berbagai stop loss stop loss rasio, keseimbangan kemenangan dan rasio untung-rugi.
Anda dapat mencoba menggabungkan sinyal masuk koreksi indikator lainnya, seperti MACD, KD, dan lain-lain, untuk meningkatkan stabilitas strategi.
Anda dapat mengoptimalkan sinyal keluar, menghindari keluar yang tidak perlu dalam situasi yang bergejolak. Anda juga dapat mempertimbangkan indikator tren.
Strategi baru dapat dikembangkan berdasarkan kerangka kebijakan ini, seperti yang digunakan dalam kombinasi dengan indikator saluran lainnya, indikator jenis daftar, dan sebagainya.
Strategi lambat dan rata-rata strategi keseluruhan ide yang jelas dan mudah dipahami, dengan campuran menggunakan saluran dan garis rata-rata sebagai sinyal strategi, dapat secara efektif meningkatkan stabilitas strategi dan kemenangan. Stop loss lebih besar dari pengaturan berhenti membuat keuntungan yang baik, parameter pengaturan sederhana mudah untuk menerapkan. Ada beberapa situasi ekstrem dan risiko kesalahan penilaian, tetapi dapat dioptimalkan dan diperbaiki dengan berbagai cara untuk strategi, memiliki potensi yang sangat kuat ekspansi dan pengembangan.
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
basePeriod: 15m
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/
// © Mysteriown
//@version=4
strategy("Lagged Donchian Channel + EMA", overlay = true)
//tradePeriod = time(timeframe.period,"0000-0000:1234567")?true:false
// ------------------------------------------ //
// ----------------- Inputs ----------------- //
// ------------------------------------------ //
period = input(24, title="Channel's periods")
Pema = input(200, title="EMA's periods ?")
ratio = input(3, title="Ratio TP", type=input.float)
loss = input(20, title="Risk Loss ($)")
lev = input(5, title="Leverage *...")
chan = input(title="Plot channel ?", type=input.bool, defval=false)
Bpos = input(title="Plot Bull positions ?", type=input.bool, defval=false)
bpos = input(title="Plot Bear positions ?", type=input.bool, defval=false)
labels = input(title="Plot labels of bets ?", type=input.bool, defval=true)
supp = input(title="Delete last labels ?", type=input.bool, defval=true)
// ------------------------------------------ //
// ---------- Canal, EMA and arrow ---------- //
// ------------------------------------------ //
pema = ema(close,Pema)
plot(pema, title="EMA", color=color.blue)
canalhaut = highest(period)[1]
canalbas = lowest(period)[1]
bear = close[1] > canalhaut[1] and close < open and high > pema
bull = close[1] < canalbas[1] and open < close and low < pema
canalhautplot = plot(chan? canalhaut:na, color=color.yellow)
canalbasplot = plot(chan? canalbas:na, color=color.yellow)
plotshape(bear, title='Bear', style=shape.triangledown, location=location.abovebar, color=color.red, offset=0)
plotshape(bull, title='Bull', style=shape.triangleup, location=location.belowbar, color=color.green, offset=0)
// ------------------------------------------ //
// ------------- Position Short ------------- //
// ------------------------------------------ //
SlShort = highest(3)
BidShort = close[1]
TpShort = BidShort-((SlShort-BidShort)*ratio)
deltaShort = (SlShort-BidShort)/BidShort
betShort = round(loss/(lev*deltaShort)*100)/100
cryptShort = round(betShort*lev/BidShort*1000)/1000
// if bear[1] and labels //and low < low[1]
// Lbear = label.new(bar_index, na, text="SHORT\n\nSL: " + tostring(SlShort) + "\n\nBid: " + tostring(BidShort) + "\n\nTP: " + tostring(TpShort) + "\n\nMise: " + tostring(betShort) + "\n\nCryptos: " + tostring(cryptShort), color=color.red, textcolor=color.white, style=label.style_labeldown, yloc=yloc.abovebar)
// label.delete(supp ? Lbear[1] : na)
var bentry=0.0
var bsl=0.0
var btp=0.0
if bear[1] and low < low[1]
bentry:=BidShort
bsl:=SlShort
btp:=TpShort
pbentry = plot(bpos? bentry:na, color=color.orange)
plot(bpos? (bentry+btp)/2:na, color=color.gray)
pbsl = plot(bpos? bsl:na, color=color.red)
pbtp = plot(bpos? btp:na, color=color.green)
fill(pbentry,pbsl, color.red, transp=70)
fill(pbentry,pbtp, color.green, transp=70)
// ------------------------------------------ //
// ------------- Position Long -------------- //
// ------------------------------------------ //
SlLong = lowest(3)
BidLong = close[1]
TpLong = BidLong + ((BidLong - SlLong) * ratio)
deltaBull = (BidLong - SlLong)/BidLong
betLong = round(loss/(lev*deltaBull)*100)/100
cryptLong = round(betLong*lev/BidLong*1000)/1000
// if bull[1] and labels //and high > high[1]
// Lbull = label.new(bar_index, na, text="LONG\n\nSL: " + tostring(SlLong) + "\n\nBid: " + tostring(BidLong) + "\n\nTP: " + tostring(TpLong) + "\n\nMise: " + tostring(betLong) + "\n\nCryptos: " + tostring(cryptLong), color=color.green, textcolor=color.white, style=label.style_labelup, yloc=yloc.belowbar)
// label.delete(supp ? Lbull[1] : na)
var Bentry=0.0
var Bsl=0.0
var Btp=0.0
if bull[1] and high > high[1]
Bentry:=BidLong
Bsl:=SlLong
Btp:=TpLong
pBentry = plot(Bpos?Bentry:na, color=color.orange)
plot(Bpos?(Bentry+Btp)/2:na, color=color.gray)
pBsl = plot(Bpos?Bsl:na, color=color.red)
pBtp = plot(Bpos?Btp:na, color=color.green)
fill(pBentry,pBsl, color.red, transp=70)
fill(pBentry,pBtp, color.green, transp=70)
// ------------------------------------------ //
// --------------- Strategie ---------------- //
// ------------------------------------------ //
Bear = bear[1] and low < low[1]
Bull = bull[1] and high > high[1]
if (Bear and strategy.opentrades==0)
strategy.order("short", false, 1, limit=BidShort)
strategy.exit("exit", "short", limit = TpShort, stop = SlShort)
strategy.cancel("short", when = high > SlShort or low < (BidShort+TpShort)/2)
strategy.close("short", when=bull)
if (Bull and strategy.opentrades==0)
strategy.order("long", true, 1, limit=BidLong)
strategy.exit("exit", "long", limit = TpLong, stop = SlLong)
strategy.cancel("long", when = low < SlLong or high > (BidLong+TpLong)/2)
strategy.close("long", when=bear)