Strategi Pembalikan Pengesanan Trend

Penulis:ChaoZhang, Tarikh: 2024-01-16 14:44:35
Tag:

img

Ringkasan

Strategi pembalikan trend adalah strategi perdagangan trend jangka pendek berdasarkan niaga hadapan NQ 15 minit. Ia mengenal pasti peluang perdagangan melalui penapisan trend dan pengenalan corak pembalikan. Strategi yang mudah tetapi berkesan ini sesuai dengan peniaga jangka pendek yang aktif.

Logika Strategi

Strategi ini terutamanya beroperasi di atas prinsip berikut:

  1. Menggunakan EMA 8 tempoh sebagai penapis trend utama, dengan isyarat panjang di atas EMA dan isyarat pendek di bawah EMA.

  2. Mengenali corak pembalikan candlestick tertentu sebagai isyarat kemasukan, termasuk lilin hijau panjang diikuti oleh lilin merah pendek untuk isyarat panjang, dan lilin merah panjang diikuti oleh lilin hijau pendek untuk isyarat pendek. corak ini menunjukkan pembalikan trend yang berpotensi.

  3. Titik kemasukan ditetapkan berhampiran tinggi / rendah lilin pembalikan, dengan tahap stop loss di tinggi / rendah lilin pembalikan itu sendiri, yang membolehkan nisbah risiko / ganjaran yang cekap.

  4. Memvalidasi isyarat pembalikan menggunakan peraturan hubungan lilin, contohnya harga terbuka lilin merah di atas badan lilin hijau terakhir, badan sepenuhnya menelan dll untuk menapis bunyi bising.

  5. Hanya beroperasi strategi semasa jam dagangan tertentu, mengelakkan tempoh turun naik sekitar rollover kontrak utama dan lain-lain, untuk mengelakkan kerugian yang tidak perlu daripada tindakan harga yang tidak normal.

Analisis Kelebihan

Kelebihan utama strategi ini termasuk:

  1. Logik isyarat yang mudah dan berkesan yang mudah difahami dan dilaksanakan.

  2. Berasaskan trend dan pembalikan, mengelakkan whipsaws dari pasar lembu dan beruang yang marah.

  3. Kawalan risiko yang baik dengan penempatan stop loss yang munasabah untuk memelihara modal.

  4. Keperluan data yang rendah sesuai dengan pelbagai platform dan alat.

  5. Frekuensi perdagangan yang tinggi sesuai dengan gaya perdagangan jangka pendek yang aktif.

Risiko & Penyelesaian

Terdapat beberapa risiko yang perlu diperhatikan:

  1. Kemungkinan pembalikan yang tidak mencukupi dan isyarat yang terhad.

  2. Tambah lebih banyak penapis untuk logik kombinasi.

  3. Volatiliti dalam sesi semalam dan bukan sesi utama.

  4. Fleksibiliti pengoptimuman terhad. Pertimbangkan pembelajaran mesin untuk penyesuaian parameter yang lebih baik.

Peluang Peningkatan

Ada ruang untuk pengoptimuman:

  1. Uji tempoh EMA yang lebih lama untuk meningkatkan definisi trend.

  2. Tambah penapis indeks ekuiti sebagai penapis trend tambahan.

  3. Gunakan teknik pembelajaran mesin untuk menyesuaikan kemasukan automatik dan menghentikan tahap kehilangan.

  4. Memperkenalkan saiz kedudukan yang disesuaikan dengan turun naik dan berhenti dinamik.

  5. Meneroka pertimbangan antara aset untuk mempelbagaikan risiko sistemik aset tunggal.

Kesimpulan

Strategi Pembalikan Pengesanan Trend menawarkan kerangka strategi jangka pendek yang sangat praktikal yang mudah dilaksanakan dengan parameter terhad dan kawalan risiko peribadi yang baik. Ia sesuai untuk peniaga jangka pendek yang aktif di forum perdagangan harian. Dengan R&D lanjut, ia berpotensi dapat digunakan untuk perdagangan algoritma jangka menengah dan panjang, menunjukkan fleksibiliti dan potensi pembangunan yang kuat.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bdrex95

//@version=5

// Rob Reversal Strategy - Official
// Using Rob Reversal Indicator: Original
// Description
// This indicator is based on the strategy created by Trader Rob on the NQ 15m chart.
// 
// Timeframe for trading is 8:30am-1:15pm Central.
// 
// Above the EMA line, look for a long position. You will have a short candle, then a long candle that opens below the short candle. It will have a lower high and a lower low. Once the long candle closes, your entry will be 1 tick above the wick (green line) and stop loss will be at the bottom of the bottom wick (red line).
// 
// Below the EMA line, look for a short position. You will have a long candle, then a short candle that opens above the long candle. It will have a higher high and a higher low. Once the short candle closes, your entry will be 1 tick below the wick (green line) and stop loss will be at the top of the top wick (red line).
//

strategy("Trader Rob Reversal Strategy NQ 15min", shorttitle="Official Rob Rev Strat", overlay=true)


//--- Session Input ---
sess = input(defval = "0930-1415", title="Trading Session")
t = time(timeframe.period, sess)
sessionOpen = na(t) ? false : true

flat_time = input(defval = "1515-1558", title="Close All Open Trades")
ft = time(timeframe.period, flat_time)
flatOpen = na(ft) ? false : true


// Calculate start/end date and time condition
startDate = input(timestamp('2018-12-24T00:00:00'),group = "ALL STRATEGY SETTINGS BELOW")
finishDate = input(timestamp('2029-02-26T00:00:00'),group = "ALL STRATEGY SETTINGS BELOW")
time_cond = true


emaColor = input.color(color.orange, title="EMA Color")
emaLength = input.int(8, title="EMA Length")


emaInd = ta.ema(close, emaLength)


rr = input(1.0,"Enter RR",group = "TP/SL CONDITION INPUTS HERE")


sellShapeInput = input.string("Arrow", title="Sell Entry Shape", options=["Arrow", "Triangle"])
buyShapeInput = input.string("Arrow", title="Buy Entry Shape", options=["Arrow", "Triangle"])


sellShapeOption = switch sellShapeInput
    "Arrow" => shape.arrowdown
    "Triangle" => shape.triangledown
   
buyShapeOption = switch buyShapeInput
    "Arrow" => shape.arrowup
    "Triangle" => shape.triangleup


O = open
C = close
H = high
L = low


sellEntry = (C[1] > O[1]) and (C < O) and (H[1] < H) and (C < H[1]) and (C > L[1]) and (L > L[1]) and (C < emaInd) and sessionOpen and time_cond
buyEntry = (C[1] < O[1]) and (C > O) and (H[1] > H) and (L[1] > L) and (C < H[1]) and (C > L[1]) and (C > emaInd) and sessionOpen and time_cond


sellEntry_index = ta.valuewhen(sellEntry,bar_index,0)
sellEntry_hi = ta.valuewhen(sellEntry,high,0)
sellEntry_low = ta.valuewhen(sellEntry,low,0)
buyEntry_index = ta.valuewhen(buyEntry,bar_index,0)
buyEntry_hi = ta.valuewhen(buyEntry,high,0)
buyEntry_lo = ta.valuewhen(buyEntry,low,0)


plotshape(buyEntry, color = color.green, location = location.belowbar, style = buyShapeOption, size = size.small)
plotshape(sellEntry, color = color.red, location = location.abovebar, style = sellShapeOption, size = size.small)
plot(emaInd, color=emaColor)


// Risk Management
entry_price_long = (buyEntry_hi + syminfo.mintick)
entry_price_short = (sellEntry_low - syminfo.mintick)
long_sl_price = (buyEntry_lo-syminfo.mintick)
short_sl_price = (sellEntry_hi + syminfo.mintick)
long_tp_price = ((entry_price_long - long_sl_price)*rr) + entry_price_long
short_tp_price = entry_price_short - ((short_sl_price - entry_price_short)*rr)


long_sl_ticks = (entry_price_long - long_sl_price) / syminfo.mintick
short_sl_ticks = (short_sl_price - entry_price_short) / syminfo.mintick


long_tp_ticks = (long_tp_price - entry_price_long) / syminfo.mintick
short_tp_ticks = (entry_price_short - short_tp_price) / syminfo.mintick


// Positions
if (buyEntry)
    strategy.entry("Long", strategy.long,stop = H + syminfo.mintick)
if strategy.position_size > 0
    strategy.exit("Long Ex","Long", loss = long_sl_ticks, profit = long_tp_ticks, comment_loss = "SL Long", comment_profit = "TP Long")


if (sellEntry)
    strategy.entry("Short", strategy.short,stop = L - syminfo.mintick)
if strategy.position_size < 0
    strategy.exit("Short Ex","Short",loss = short_sl_ticks, profit = short_tp_ticks, comment_loss = "SL Short", comment_profit = "TP Short")


// Cancel order if close beyond ema
if (C < emaInd)
    strategy.cancel("Long")


if (C > emaInd)
    strategy.cancel("Short")


// Go flat at close (for futures funded account)
if strategy.position_size > 0 and flatOpen
    strategy.close_all(comment = "EOD Flat")
if strategy.position_size < 0 and flatOpen
    strategy.close_all(comment = "EOD Flat")
 
//END

Lebih lanjut