Berbagai strategi mengikuti tren dan terobosan struktural

EMA RSI SL TP BOS
Tanggal Pembuatan: 2024-11-29 15:27:01 Akhirnya memodifikasi: 2024-11-29 15:27:01
menyalin: 0 Jumlah klik: 415
1
fokus pada
1617
Pengikut

Berbagai strategi mengikuti tren dan terobosan struktural

Ringkasan

Ini adalah strategi perdagangan komprehensif yang menggabungkan beberapa garis rata-rata, pelacakan tren, struktur breakout, dan indikator momentum. Strategi ini menentukan sinyal perdagangan dengan menganalisis arah tren selama beberapa periode waktu, sekaligus menggabungkan struktur harga dengan cara breakout dan pembelian kembali. Strategi ini menggunakan target stop loss dan profit yang tetap untuk mengelola risiko, dan meningkatkan akurasi perdagangan melalui mekanisme verifikasi ganda.

Prinsip Strategi

Strategi ini menggunakan tiga indeks moving average (EMA25, EMA50 dan EMA200) untuk menentukan tren pasar. Ketika harga berada di atas EMA200 dan EMA200 cenderung ke atas, dianggap dalam tren naik; sebaliknya dianggap sebagai tren menurun. Setelah menentukan arah tren, strategi mencari peluang untuk membalikkan harga ke EMA25 atau EMA50.

Keunggulan Strategis

  1. Multiple Verification Mechanism Meningkatkan Keandalan Transaksi
  2. Kombinasi analisis tren dan dinamika untuk mengurangi risiko terobosan palsu
  3. Tujuan stop loss dan profit yang jelas membantu dalam manajemen emosi
  4. Logika strategi sederhana dan jelas, mudah dipahami dan diterapkan
  5. Cocok untuk berbagai lingkungan pasar dan varietas perdagangan

Risiko Strategis

  1. Beberapa kondisi dapat menyebabkan kehilangan beberapa peluang perdagangan.
  2. Target stop loss dan profit yang tetap mungkin tidak cocok untuk semua kondisi pasar
  3. Hal ini dapat memicu stop loss yang sering terjadi di pasar yang sangat bergejolak.
  4. Perlu terus memantau pasar untuk memastikan kelayakan parameter strategi
  5. Di pasar horizontal, sinyal palsu mungkin lebih banyak.

Arah optimasi strategi

  1. Memperkenalkan metode penghitungan target stop loss dan profit yang beradaptasi
  2. Menambahkan analisis volume transaksi sebagai indikator konfirmasi tambahan
  3. Pertimbangan untuk memasukkan mekanisme penyaringan volatilitas pasar
  4. Periode waktu yang dipilih untuk mengoptimalkan penilaian tren
  5. Meningkatkan kemampuan strategi untuk beradaptasi dalam lingkungan pasar yang berbeda

Meringkaskan

Ini adalah strategi perdagangan komprehensif yang dirancang secara rasional, secara efektif menyeimbangkan peluang perdagangan dan pengendalian risiko dengan penggunaan kombinasi dari beberapa indikator teknis. Keunggulan inti dari strategi ini adalah mekanisme verifikasi ganda yang ketat, yang membantu meningkatkan tingkat keberhasilan perdagangan. Meskipun ada beberapa tempat yang perlu dioptimalkan, secara keseluruhan, ini adalah kerangka strategi yang layak dicoba.

Kode Sumber Strategi
/*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)