
Tiga atau empat garis K melanggar strategi pembalikan dengan mengenal pasti tiga atau empat garis K yang mempunyai momentum yang lebih tinggi pada garis K, dan kemudian beberapa garis K yang lebih kecil membentuk sokongan atau tekanan, dan berdagang dengan berlawanan apabila garis K yang berbalik berlaku. Strategi perdagangan berlawanan.
Logik pengiktirafan strategi ini terdiri daripada beberapa bahagian utama:
Kenali garis K dengan peningkatan yang ketara ((Gap Bar): Melebihi 1.5 kali rata-rata ATR, dengan bahagian fizikal lebih besar daripada 0.65. Garis K ini dianggap mempunyai momentum penurunan yang kuat.
Keterangan garis K ((Collecting Bar): garis K yang bergelombang 1-2 bit di belakang Garis Jurang, dengan titik tinggi atau rendah berhampiran dengan Garis Jurang. Garis K ini mewakili penurunan dan penyusunan trend, yang membentuk sokongan atau tekanan.
Kenali garis K isyarat pembalikan: Setelah menyusun garis K, jika terdapat entiti yang menembusi garis K yang lebih tinggi atau lebih rendah dari beberapa garis K sebelumnya, ia boleh dianggap sebagai isyarat pembalikan, berdasarkan arah entiti untuk melakukan lebih banyak atau kosong, dan membuka kedudukan di garis K tersebut.
Hentikan dan hentikan: Hentikan set di bawah atau di atas titik rendah garis Gap K; Hentikan berdasarkan pada titik hentikan dengan peratusan kerugian yang dikalikan dengan konfigurasi.
Strategi ini mempunyai beberapa kelebihan utama:
Menggunakan ciri-ciri garis K sendiri untuk menilai trend dan titik balik, tanpa bergantung pada mana-mana penunjuk, untuk mencapai penunjuk tali pinggang sendiri.
Gap Bar dan Collecting Bar mempunyai kriteria penyaringan yang ketat, yang membolehkan anda mengenal pasti trend dan pengumpulan sebenar.
Ulasan isyarat pembalikan berdasarkan entiti, mengurangkan kebarangkalian isyarat palsu.
Hanya 3-4 kombinasi K boleh menyelesaikan satu transaksi, tempoh masa pendek, frekuensi tinggi.
Pengaturan Stop Loss jelas, pengunduran dan kadar kerugian mudah dikawal.
Strategi ini juga mempunyai beberapa risiko:
Bergantung kepada kualiti parameter yang ditetapkan, jika parameter yang ditetapkan terlalu longgar, akan meningkatkan peluang untuk isyarat palsu dan kehilangan wang.
Mudah diganggu oleh frekuensi tinggi palsu, tidak dapat menyaring semua isyarat palsu dengan berkesan.
Terdapat risiko untuk terjebak, mudah untuk menyesuaikan diri jika tidak cukup pembalikan, sehingga tidak dapat menghentikan kerosakan.
Stop loss adalah lebih besar dan individu yang mengambil peluang boleh menyebabkan kerugian yang lebih besar.
Untuk mengurangkan risiko ini, anda boleh mengoptimumkan dalam beberapa cara:
Parameter yang dioptimumkan untuk mengenal pasti lebih tepat antara Bar Gap dan Bar Mengumpul.
Tambah penapis dan buka kedudukan selepas K line dibalikkan disahkan semula.
Mengoptimumkan algoritma Hentikan Kerosakan supaya Hentikan Kerosakan lebih dekat dengan harga dan Kerosakan lebih terkawal.
Strategi ini mempunyai beberapa penambahbaikan utama:
Menambah penapis komposit untuk mengelakkan gangguan pecah palsu. Sebagai contoh, menambah indikator jumlah transaksi, hanya mempertimbangkan isyarat perdagangan jika jumlah transaksi meningkat.
Bersama-sama dengan penunjuk garis rata, isyarat perdagangan hanya dipertimbangkan apabila harga menembusi garis rata-rata penting (seperti garis 20 hari, garis 60 hari).
Pengesahan pelbagai kerangka masa, hanya membuka kedudukan apabila beberapa kitaran memberi isyarat pada masa yang sama.
Mengoptimumkan keadaan hentian, menyesuaikan kadar keuntungan dan kerugian mengikut tahap turun naik pasaran dan keutamaan risiko yang dinamik.
Strategi ini hanya digunakan dalam keadaan pasaran yang sedang trending, digabungkan dengan sistem penilaian keadaan kosong pasaran.
Pengoptimuman ini dapat meningkatkan lagi kestabilan dan kebarangkalian keuntungan strategi.
Strategi berbalik arah tiga atau empat K berpusat pada perdagangan dengan mengenal pasti segmen potensi trend yang berkualiti tinggi dan isyarat pembalikan. Siklus operasi yang pendek, frekuensi yang tinggi, dijangka memperoleh keuntungan tambahan yang banyak.
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Three (3)-Bar and Four (4)-Bar Plays Strategy", shorttitle="Three (3)-Bar and Four (4)-Bar Plays Strategy", overlay=true, calc_on_every_tick=true, currency=currency.USD, default_qty_value=1.0,initial_capital=30000.00,default_qty_type=strategy.percent_of_equity)
frommonth = input(defval = 1, minval = 01, maxval = 12, title = "From Month")
fromday = input(defval = 1, minval = 01, maxval = 31, title = "From day")
fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year")
tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month")
today = input(defval = 31, minval = 01, maxval = 31, title = "To day")
toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
garBarSetting1 = input(defval = 1.5, minval = 0.0, maxval = 100.0, title = "Gap Bar Size", type = input.float)
garBarSetting2 = input(defval = 0.65, minval = 0.0, maxval = 100.0, title = "Gap Bar Body Size", type = input.float)
TopSetting = input(defval = 0.10, minval = 0.0, maxval = 100.0, title = "Bull Top Bar Size", type = input.float)
profitMultiplier = input(defval = 2.0, minval = 1.0, maxval = 100.0, title = "Profit Multiplier", type = input.float)
// ========== 3-Bar and 4-Bar Play Setup ==========
barSize = abs(high - low)
bodySize = abs(open - close)
gapBar = (barSize > (atr(1000) * garBarSetting1)) and (bodySize >= (barSize * garBarSetting2)) // find a wide ranging bar that is more than 2.5x the size of the average bar size and body is at least 65% of bar size
bullTop = close > close[1] + barSize[1] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (first collecting bull bar)
bullTop2 = close > close[2] + barSize[2] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (first collecting bear bar)
bearTop = close < close[1] - barSize[1] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (second collecting bull bar)
bearTop2 = close < close[2] - barSize[2] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (second collecting bear bar)
collectingBarBull = barSize < barSize[1] / 2 and low > close[1] - barSize[1] / 2 and bullTop // find a collecting bull bar
collectingBarBear = barSize < barSize[1] / 2 and high < close[1] + barSize[1] / 2 and bearTop // find a collecting bear bar
collectingBarBull2 = barSize < barSize[2] / 2 and low > close[2] - barSize[2] / 2 and bullTop2 // find a second collecting bull bar
collectingBarBear2 = barSize < barSize[2] / 2 and high < close[2] + barSize[2] / 2 and bearTop2 // find a second collecting bear bar
triggerThreeBarBull = close > close[1] and close > close[2] and high > high[1] and high > high[2] // find a bull trigger bar in a 3 bar play
triggerThreeBarBear = close < close[1] and close < close[2] and high < high[1] and high < high[2] // find a bear trigger bar in a 3 bar play
triggerFourBarBull = close > close[1] and close > close[2] and close > close[3] and high > high[1] and high > high[2] and high > high[3] // find a bull trigger bar in a 4 bar play
triggerFourBarBear = close < close[1] and close < close[2] and close < close[3] and high < high[1] and high < high[2] and high < high[3] // find a bear trigger bar in a 4 bar play
threeBarSetupBull = gapBar[2] and collectingBarBull[1] and triggerThreeBarBull // find 3-bar Bull Setup
threeBarSetupBear = gapBar[2] and collectingBarBear[1] and triggerThreeBarBear // find 3-bar Bear Setup
fourBarSetupBull = gapBar[3] and collectingBarBull[2] and
collectingBarBull2[1] and triggerFourBarBull // find 4-bar Bull Setup
fourBarSetupBear = gapBar[3] and collectingBarBear[2] and
collectingBarBear2[1] and triggerFourBarBear // find 4-bar Bear Setup
labels = input(title="Show Buy/Sell Labels?", type=input.bool, defval=true)
plotshape(threeBarSetupBull and labels, title="3-Bar Bull", text="3-Bar Play", location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
plotshape(threeBarSetupBear and labels, text="3-Bar Bear", title="3-Bar Play", location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
plotshape(fourBarSetupBull and labels, title="4-Bar Bull", text="4-Bar Play", location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
plotshape(fourBarSetupBear and labels, text="4-Bar Bear", title="4-Bar Play", location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
alertcondition(threeBarSetupBull or threeBarSetupBear or fourBarSetupBull or fourBarSetupBear, title="3-bar or 4-bar Play", message="Potential 3-bar or 4-bar Play")
float sl = na
float tp = na
sl := nz(sl[1], 0.0)
tp := nz(tp[1], 0.0)
plot(sl==0.0?na:sl,title='SL', color = color.red)
plot(tp==0.0?na:tp,title='TP', color = color.green)
if (true)
if threeBarSetupBull and strategy.position_size <=0
strategy.entry("3 Bar Long", strategy.long, when=threeBarSetupBull)
sl :=low[1]
if threeBarSetupBear and strategy.position_size >=0
strategy.entry("3 Bar Short", strategy.short, when=threeBarSetupBull)
sl :=high[1]
if fourBarSetupBull and strategy.position_size <=0
strategy.entry("4 Bar Long", strategy.long, when=fourBarSetupBull)
sl :=min(low[1], low[2])
if fourBarSetupBear and strategy.position_size >=0
strategy.entry("4 Bar Short", strategy.short, when=fourBarSetupBear)
sl :=max(high[1], high[2])
if sl !=0.0
if strategy.position_size > 0
tp := strategy.position_avg_price + ((strategy.position_avg_price - sl) * profitMultiplier)
strategy.exit(id="Exit", limit=tp, stop=sl)
if strategy.position_size < 0
tp := strategy.position_avg_price - ((sl - strategy.position_avg_price) * profitMultiplier)
strategy.exit(id="Exit", limit=tp, stop=sl)