Strategi Pembalikan Tren Pelacakan

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

img

Gambaran umum

Strategi Trend Tracking Reversal adalah strategi perdagangan tren jangka pendek yang didasarkan pada futures NQ 15 menit. Ini mengidentifikasi peluang perdagangan melalui penyaringan tren dan pengenalan pola pembalikan. Strategi sederhana namun efektif ini cocok untuk pedagang jangka pendek aktif.

Logika Strategi

Strategi ini bekerja pada prinsip-prinsip berikut:

  1. Gunakan EMA 8 periode sebagai filter tren utama, dengan sinyal panjang di atas EMA dan sinyal pendek di bawah EMA.

  2. Mengidentifikasi pola pembalikan candlestick tertentu sebagai sinyal masuk, termasuk lilin hijau panjang diikuti oleh lilin merah pendek untuk sinyal panjang, dan lilin merah panjang diikuti oleh lilin hijau pendek untuk sinyal pendek.

  3. Titik masuk ditetapkan di dekat tinggi/rendah lilin pembalikan, dengan tingkat stop loss di tinggi/rendah lilin pembalikan itu sendiri, memungkinkan rasio risiko/pembayaran yang efisien.

  4. Memvalidasi sinyal pembalikan menggunakan aturan hubungan candlestick misalnya harga buka lilin merah di atas tubuh lilin hijau terakhir, tubuh sepenuhnya menelan dll untuk menyaring kebisingan.

  5. Hanya mengoperasikan strategi selama jam perdagangan tertentu, menghindari periode volatilitas di sekitar rollover kontrak utama dll, untuk mencegah kerugian yang tidak perlu dari aksi harga yang tidak normal.

Analisis Keuntungan

Keuntungan utama dari strategi ini meliputi:

  1. Logika sinyal yang sederhana dan efektif yang mudah dipahami dan dilaksanakan.

  2. Berbasis tren dan pembalikan, menghindari whipsaws dari pasar banteng dan beruang yang marah.

  3. Pengendalian risiko yang baik dengan penempatan stop loss yang wajar untuk melestarikan modal.

  4. Kebutuhan data yang rendah cocok dengan berbagai platform dan alat.

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

Risiko & Solusi

Ada beberapa risiko yang perlu diperhatikan:

  1. Kemungkinan pembalikan yang tidak mencukupi dan sinyal yang terbatas.

  2. Kadang-kadang kesalahan, tambahkan filter untuk logika kombinasi.

  3. Volatilitas dalam sesi overnight dan non-main membatasi operasi strategi untuk jam perdagangan AS.

  4. Fleksibilitas optimasi terbatas. Pertimbangkan pembelajaran mesin untuk penyesuaian parameter yang lebih baik.

Peluang Peningkatan

Ada ruang untuk optimasi:

  1. Uji periode EMA yang lebih panjang untuk meningkatkan definisi tren.

  2. Tambahkan filter indeks ekuitas sebagai filter tren tambahan.

  3. Gunakan teknik pembelajaran mesin untuk menyesuaikan otomatis masuk dan menghentikan tingkat kerugian.

  4. Memperkenalkan ukuran posisi yang disesuaikan dengan volatilitas dan berhenti dinamis.

  5. Menjelajahi arbitrage lintas aset untuk mendiversifikasi risiko sistemik aset tunggal.

Kesimpulan

Trend Tracking Reversal Strategy menawarkan kerangka strategi jangka pendek yang sangat praktis yang mudah diterapkan dengan parameter terbatas dan kontrol risiko pribadi yang baik. Ini cocok untuk pedagang jangka pendek aktif di forum perdagangan harian. Dengan R&D lebih lanjut, ini berpotensi dapat diterapkan untuk perdagangan algoritmik jangka menengah dan panjang, menunjukkan fleksibilitas dan potensi pengembangan 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 banyak