Sumber daya yang dimuat... Pemuatan...

Multi-Trend Following dan Struktur Breakout Strategy

Penulis:ChaoZhang, Tanggal: 2024-11-29 15:27:01
Tag:EMARSISLTPBOS

img

Gambaran umum

Ini adalah strategi trading yang komprehensif yang menggabungkan beberapa moving average, trend following, structure breakout, dan momentum indicators. Strategi ini menentukan sinyal trading dengan menganalisis tren di berbagai timeframe sambil menggabungkan price structure breakout dan pullback entry.

Prinsip Strategi

Strategi ini menggunakan tiga rata-rata bergerak eksponensial (EMA25, EMA50, dan EMA200) untuk menentukan tren pasar. Sebuah tren naik diidentifikasi ketika harga di atas EMA200 dan EMA200 miring ke atas; sebaliknya menunjukkan tren menurun. Setelah menentukan arah tren, strategi mencari penarikan harga ke EMA25 atau EMA50. Selain itu, strategi ini membutuhkan konfirmasi puncak atau terendah baru-baru ini dan posisi harga penutupan relatif dengan harga pembukaan untuk memverifikasi arah momentum. Indikator RSI berfungsi sebagai filter tambahan, membutuhkan RSI di atas 50 untuk sinyal beli dan di bawah 50 untuk sinyal jual.

Keuntungan Strategi

  1. Mekanisme validasi ganda secara signifikan meningkatkan keandalan perdagangan
  2. Integrasi analisis tren dan momentum mengurangi risiko pecah palsu
  3. Tujuan stop-loss dan take-profit yang jelas membantu dalam manajemen emosional
  4. Logika strategi yang sederhana dan jelas, mudah dimengerti dan dilaksanakan
  5. Berlaku pada berbagai lingkungan pasar dan instrumen perdagangan

Risiko Strategi

  1. Beberapa kondisi dapat menyebabkan kesempatan perdagangan yang hilang
  2. Target stop loss dan take profit yang tetap mungkin tidak sesuai dengan semua kondisi pasar
  3. Dapat memicu seringnya berhenti di pasar yang sangat volatile
  4. Membutuhkan pemantauan pasar terus menerus untuk memastikan kesesuaian parameter
  5. Dapat menghasilkan sinyal palsu di pasar yang berbeda

Arah Optimasi Strategi

  1. Memperkenalkan metode perhitungan stop-loss dan take-profit adaptif
  2. Tambahkan analisis volume sebagai indikator konfirmasi
  3. Pertimbangkan untuk menerapkan filter volatilitas pasar
  4. Mengoptimalkan pemilihan kerangka waktu untuk penentuan tren
  5. Meningkatkan kemampuan adaptasi strategi di berbagai kondisi pasar

Ringkasan

Ini adalah strategi perdagangan komprehensif yang dirancang dengan baik yang secara efektif menyeimbangkan peluang perdagangan dan pengendalian risiko melalui penggunaan terkoordinasi dari beberapa indikator teknis. Kekuatan inti strategi terletak pada mekanisme validasi ganda yang ketat, yang membantu meningkatkan tingkat keberhasilan perdagangan. Meskipun ada bidang untuk optimasi, secara keseluruhan, ini merupakan kerangka strategi yang bermanfaat untuk dijelajahi.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Custom Buy/Sell Strategy", overlay=true)

// Input parameters
ema25 = ta.ema(close, 25)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
rsi = ta.rsi(close, 14)
sl_pips = 10
tp_pips = 15

// Convert pips to price units
sl_price_units = sl_pips * syminfo.pointvalue
tp_price_units = tp_pips * syminfo.pointvalue

// Define conditions for buy and sell signals
uptrend_condition = ema200 < close and ta.rising(ema200, 1)
downtrend_condition = ema200 > close and ta.falling(ema200, 1)

pullback_to_ema25 = low <= ema25
pullback_to_ema50 = low <= ema50
pullback_condition = pullback_to_ema25 or pullback_to_ema50

break_of_structure = high > ta.highest(high, 5)[1]
candle_imbalance = close > open

buy_condition = uptrend_condition and pullback_condition and rsi > 50 and break_of_structure and candle_imbalance

pullback_to_ema25_sell = high >= ema25
pullback_to_ema50_sell = high >= ema50
pullback_condition_sell = pullback_to_ema25_sell or pullback_to_ema50_sell

break_of_structure_sell = low < ta.lowest(low, 5)[1]
candle_imbalance_sell = close < open

sell_condition = downtrend_condition and pullback_condition_sell and rsi < 50 and break_of_structure_sell and candle_imbalance_sell

// Plot signals on the chart
plotshape(series=buy_condition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.large)
plotshape(series=sell_condition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.large)

// Calculate stop loss and take profit levels for buy signals
var float buy_sl = na
var float buy_tp = na

if buy_condition and strategy.position_size == 0
    buy_sl := close - sl_price_units
    buy_tp := close + tp_price_units
    strategy.entry("Buy", strategy.long)
    strategy.exit("TP/SL Buy", from_entry="Buy", limit=buy_tp, stop=buy_sl)
    label.new(bar_index, high, text="Entry: " + str.tostring(close) + "\nSL: " + str.tostring(buy_sl) + "\nTP: " + str.tostring(buy_tp), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

// Calculate stop loss and take profit levels for sell signals
var float sell_sl = na
var float sell_tp = na

if sell_condition and strategy.position_size == 0
    sell_sl := close + sl_price_units
    sell_tp := close - tp_price_units
    strategy.entry("Sell", strategy.short)
    strategy.exit("TP/SL Sell", from_entry="Sell", limit=sell_tp, stop=sell_sl)
    label.new(bar_index, low, text="Entry: " + str.tostring(close) + "\nSL: " + str.tostring(sell_sl) + "\nTP: " + str.tostring(sell_tp), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)

// // Plot stop loss and take profit levels for buy signals
// if not na(buy_sl)
//     line.new(x1=bar_index, y1=buy_sl, x2=bar_index + 1, y2=buy_sl, color=color.red, width=1)
// if not na(buy_tp)
//     line.new(x1=bar_index, y1=buy_tp, x2=bar_index + 1, y2=buy_tp, color=color.green, width=1)

// // Plot stop loss and take profit levels for sell signals
// if not na(sell_sl)
//     line.new(x1=bar_index, y1=sell_sl, x2=bar_index + 1, y2=sell_sl, color=color.red, width=1)
// if not na(sell_tp)
//     line.new(x1=bar_index, y1=sell_tp, x2=bar_index + 1, y2=sell_tp, color=color.green, width=1)


Berkaitan

Lebih banyak