Mengikut aliran berbilang dan strategi penembusan struktur

EMA RSI SL TP BOS
Tarikh penciptaan: 2024-11-29 15:27:01 Akhirnya diubah suai: 2024-11-29 15:27:01
Salin: 0 Bilangan klik: 415
1
fokus pada
1617
Pengikut

Mengikut aliran berbilang dan strategi penembusan struktur

Gambaran keseluruhan

Ini adalah strategi perdagangan komprehensif yang menggabungkan pelbagai garis rata-rata, trend tracking, struktur pecah, dan indikator momentum. Strategi ini menentukan isyarat perdagangan dengan menganalisis arah trend dalam beberapa tempoh masa, sambil menggabungkan struktur harga pecah dan pembelian kembali. Strategi ini menggunakan sasaran berhenti dan keuntungan yang tetap untuk menguruskan risiko dan meningkatkan ketepatan perdagangan melalui mekanisme verifikasi berganda.

Prinsip Strategi

Strategi ini menggunakan tiga purata bergerak indeks (EMA25, EMA50 dan EMA200) untuk menentukan trend pasaran. Apabila harga berada di atas EMA200 dan EMA200 cenderung ke atas, ia dianggap dalam trend menaik; sebaliknya dianggap sebagai trend menurun. Selepas menentukan arah trend, strategi mencari peluang untuk harga berpatah balik ke EMA25 atau EMA50.

Kelebihan Strategik

  1. MOS meningkatkan kebolehpercayaan urus niaga
  2. Menggabungkan trend dan analisis momentum untuk mengurangkan risiko penembusan palsu
  3. Objektif berhenti dan keuntungan yang jelas membantu dalam pengurusan emosi
  4. Logik strategi ringkas dan jelas, mudah difahami dan dilaksanakan
  5. Sesuai untuk persekitaran pasaran yang berbeza dan jenis perdagangan

Risiko Strategik

  1. Keadaan yang berlainan boleh menyebabkan kehilangan sebahagian peluang perdagangan
  2. Sasaran stop loss dan keuntungan yang tetap mungkin tidak sesuai untuk semua keadaan pasaran
  3. Kemungkinan untuk mencetuskan hentian yang kerap dalam pasaran yang bergolak
  4. Pemantauan pasaran yang berterusan diperlukan untuk memastikan kebolehgunaan parameter strategi
  5. Mungkin lebih banyak isyarat palsu dalam pasaran setapak

Arah pengoptimuman strategi

  1. Memperkenalkan kaedah pengiraan sasaran kerugian dan keuntungan yang disesuaikan
  2. Menambah analisis jumlah transaksi sebagai penunjuk pengesahan tambahan
  3. Pertimbangan untuk memasukkan mekanisme penapisan kadar turun naik pasaran
  4. Pilihan tempoh masa untuk mengoptimumkan penilaian trend
  5. Meningkatkan kebolehlaksanaan strategi dalam persekitaran pasaran yang berbeza

ringkaskan

Ini adalah strategi perdagangan komprehensif yang direka dengan wajar, dengan penggunaan gabungan pelbagai petunjuk teknikal, menyeimbangkan peluang perdagangan dan kawalan risiko dengan berkesan. Kelebihan utama strategi ini adalah mekanisme pengesahan berganda yang ketat, yang membantu meningkatkan kadar kejayaan perdagangan. Walaupun terdapat beberapa tempat yang perlu dioptimumkan, secara keseluruhan, ini adalah kerangka strategi yang patut dicuba.

Kod 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)