Sumber dimuat naik... memuat...

Multi-Trend Following dan Struktur Breakout Strategy

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

img

Ringkasan

Ini adalah strategi dagangan yang komprehensif yang menggabungkan pelbagai purata bergerak, trend berikut, penyemburan struktur, dan penunjuk momentum. Strategi menentukan isyarat dagangan dengan menganalisis trend merentasi pelbagai bingkai masa sambil menggabungkan penyemburan struktur harga dan entri pulback. Ia menggunakan sasaran stop-loss dan mengambil keuntungan tetap untuk pengurusan risiko dan menggunakan pelbagai mekanisme pengesahan untuk meningkatkan ketepatan dagangan.

Prinsip Strategi

Strategi ini menggunakan tiga purata bergerak eksponensial (EMA25, EMA50, dan EMA200) untuk menentukan trend pasaran. Trend menaik dikenal pasti apabila harga berada di atas EMA200 dan EMA200 miring ke atas; sebaliknya menunjukkan trend menurun. Selepas menentukan arah trend, strategi mencari kenaikan harga ke EMA25 atau EMA50. Di samping itu, strategi ini memerlukan pengesahan harga tertinggi atau terendah baru-baru ini dan kedudukan harga penutupan berbanding harga pembukaan untuk mengesahkan arah momentum. Indikator RSI berfungsi sebagai penapis tambahan, memerlukan RSI di atas 50 untuk isyarat beli dan di bawah 50 untuk isyarat jual.

Kelebihan Strategi

  1. Mekanisme pengesahan berbilang meningkatkan kebolehpercayaan perdagangan dengan ketara
  2. Integrasi analisis trend dan momentum mengurangkan risiko pecah palsu
  3. Matlamat stop-loss dan mengambil keuntungan yang jelas membantu dalam pengurusan emosi
  4. Logik strategi yang mudah dan jelas, mudah difahami dan dilaksanakan
  5. Berlaku pada pelbagai persekitaran pasaran dan instrumen dagangan

Risiko Strategi

  1. Beberapa keadaan boleh menyebabkan peluang perdagangan yang hilang
  2. Sasaran stop loss dan mengambil keuntungan tetap mungkin tidak sesuai dengan semua keadaan pasaran
  3. Boleh mencetuskan hentian yang kerap di pasaran yang sangat tidak menentu
  4. Memerlukan pemantauan pasaran berterusan untuk memastikan kesesuaian parameter
  5. Boleh menghasilkan isyarat palsu di pasaran yang berbeza

Arahan Pengoptimuman Strategi

  1. Memperkenalkan kaedah pengiraan stop-loss dan mengambil keuntungan adaptif
  2. Tambah analisis jumlah sebagai penunjuk pengesahan
  3. Pertimbangkan untuk melaksanakan penapis turun naik pasaran
  4. Mengoptimumkan pemilihan jangka masa untuk penentuan trend
  5. Meningkatkan kebolehsesuaian strategi dalam keadaan pasaran yang berbeza

Ringkasan

Ini adalah strategi perdagangan komprehensif yang direka dengan baik yang menyeimbangkan peluang perdagangan dan kawalan risiko dengan berkesan melalui penggunaan pelbagai penunjuk teknikal yang diselaraskan. Kekuatan teras strategi ini terletak pada mekanisme pengesahan berganda yang ketat, yang membantu meningkatkan kadar kejayaan perdagangan. Walaupun terdapat bidang untuk pengoptimuman, secara keseluruhan, ini mewakili kerangka strategi yang berbaloi untuk diterokai.


/*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 lanjut