
Strategi ini menggunakan 24 kitaran saluran Dongguan digabungkan dengan garis rata-rata 200 kitaran sebagai isyarat perdagangan utama. Titik masuk memilih untuk melakukan shorting di bawah gelombang merah hijau, dan lebih banyak pilihan untuk bergerak ke atas.
Strategi ini adalah berdasarkan kepada beberapa perkara:
Menggunakan nilai tertinggi dan terendah dalam 24 kitaran untuk membina saluran Dongguan, menunjukkan kemungkinan penurunan yang lebih besar apabila harga menembusi saluran tersebut.
200 garis purata kitaran sebagai syarat penapisan kosong, jika pecah saluran Dongxian dan harga di sisi lain garis purata, dianggap bahawa keadaan mungkin berbalik.
Isyarat masuk ialah:
Hentikan kerugian adalah harga tertinggi dalam 3 garis K terkini, dan hentikan kerugian adalah 3 kali ganda daripada perbezaan antara hentikan dan harga terbuka. Hentikan kerugian dan hentikan kerugian adalah sebaliknya daripada melakukan kerugian.
Kelebihan strategi ini ialah penggunaan campuran penapisan sejajar dengan saluran Dongxian + mengelakkan salah kaprah satu petunjuk teknikal, dan meningkatkan peluang kemenangan strategi secara ketara.
Strategi ini mempunyai kelebihan berikut:
Kadar kemenangan yang tinggi: penggunaan gabungan saluran Dongxian dan penunjuk garis rata, dapat menghalang kerugian yang tidak perlu yang disebabkan oleh kesalahan satu petunjuk teknikal.
Risiko terkawal: Menggunakan harga tertinggi / terendah terkini sebagai titik hentian, mengawal kerugian tunggal dengan berkesan. Stop adalah 3 kali ganda daripada stop, risiko keuntungan lebih tinggi.
Operasi mudah: Indikator dan logik sangat mudah dan jelas, mudah difahami dan dilaksanakan
Kebolehgunaan yang kuat: kurang parameter strategi dan kestabilan yang baik dalam pelbagai jenis dan kitaran.
Strategi ini mempunyai risiko utama:
Risiko keadaan yang melampau: Jika menghadapi keadaan unilateral yang sangat besar, ia mudah mencetuskan hentian atau menyebabkan peningkatan kerugian. Ia boleh ditangani dengan cara yang sesuai dengan melepaskan kedudukan hentian dan mengurangkan kedudukan.
Risiko salah faham isyarat berlepas: Menggunakan isyarat baru yang bertentangan sebagai isyarat berlepas, mungkin sering masuk dan keluar dalam keadaan gegaran, kehilangan titik slip yang tidak perlu. Ia boleh diselesaikan dengan mengoptimumkan logik berlepas.
Risiko pengoptimuman parameter: Siklus saluran Dongguan dan parameter garis rata yang tidak betul boleh menyebabkan isyarat sering atau lambat, risiko ini dapat dikurangkan dengan pengoptimuman parameter dan ujian gabungan.
Strategi ini boleh dioptimumkan dengan cara berikut:
Tempoh laluan Dongguan dan tempoh garis rata dapat dioptimumkan untuk mencari kombinasi parameter terbaik.
Ia juga boleh menguji pelbagai peratusan stop loss, kemenangan seimbang, dan kadar keuntungan.
Anda boleh cuba menggabungkan isyarat kemasukan penyesuaian penunjuk lain, seperti MACD, KD, dan lain-lain, untuk meningkatkan kestabilan strategi.
Isyarat berlepas boleh dioptimumkan, mengelakkan keluar yang tidak perlu dalam keadaan gegaran. Isyarat berlepas juga boleh mempertimbangkan indikator trend dan sebagainya.
Kerangka strategi ini boleh digunakan untuk membangunkan kombinasi strategi baru, seperti dengan penunjuk jenis saluran lain, penunjuk jenis senarai, dan sebagainya.
Strategi perlahan-lahan dan rata-rata strategi keseluruhan jelas dan mudah difahami, dengan menggunakan gabungan saluran dan garis rata sebagai isyarat strategi, dapat meningkatkan kestabilan dan kemenangan strategi secara berkesan. Tetapan stop loss lebih besar daripada stop loss membuat keuntungan dan kerugian yang baik, dan tetapan parameter mudah dan mudah dilaksanakan. Terdapat beberapa keadaan yang melampau dan risiko kesalahan, tetapi strategi dapat dioptimumkan dan diperbaiki dengan pelbagai cara, dengan potensi pengembangan dan pengembangan yang kuat.
/*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)