Strategi Berhenti Dagangan Candlestick Purata Pergerakan Eksponen

EMA RSI SUPPORT RESISTANCE BREAKOUT
Tarikh penciptaan: 2025-02-25 11:11:35 Akhirnya diubah suai: 2025-02-25 11:11:35
Salin: 8 Bilangan klik: 348
2
fokus pada
319
Pengikut

Strategi Berhenti Dagangan Candlestick Purata Pergerakan Eksponen Strategi Berhenti Dagangan Candlestick Purata Pergerakan Eksponen

Gambaran keseluruhan

Strategi berhenti perdagangan indeks pergerakan rata-rata adalah sistem perdagangan kuantitatif berdasarkan bentuk kejatuhan dan pengesahan trend rata-rata bergerak. Strategi ini terutamanya dengan mengenal pasti bentuk kejatuhan tertentu (iaitu isyarat “berhenti kejatuhan”) sebagai titik masuk, sambil menggabungkan EMA (indices bergerak rata-rata) untuk menyeberang trend pasaran keseluruhan, dan menggunakan tahap sokongan dan rintangan dinamik untuk mengenal pasti penembusan pasaran.

Prinsip Strategi

Prinsip teras strategi ini adalah untuk mengenal pasti bentuk kejatuhan tertentu di pasaran, yang biasanya mewakili kemungkinan pembalikan pasaran dalam jangka pendek. Mekanisme operasi strategi adalah seperti berikut:

  1. Keputusan Trend: menilai trend pasaran dengan membandingkan kedudukan relatif EMA20 dengan EMA90. Apabila EMA20 berada di atas EMA90, ia dianggap sebagai tren naik; Apabila EMA20 berada di bawah EMA90, ia dianggap sebagai tren menurun.

  2. “Saya tidak tahu apa yang berlaku di sini, saya tidak tahu apa yang berlaku di sini.

    • Keperluan isyarat hentian kejatuhan dalam trend menaik: panjang garis bawah sekurang-kurangnya 0.8 kali panjang entiti, garis atas lebih kecil daripada entiti, dan harga penutupan lebih tinggi daripada harga bukaan ((jalur matahari)).
    • Keperluan isyarat hentian kejatuhan dalam trend menurun: panjang garisan menaik sekurang-kurangnya 0.8 kali ganda daripada entiti, garisan turun lebih kecil daripada entiti, dan harga penutupan kurang daripada harga bukaan ((garisan bawah).
  3. Pengesanan pecah: mengenal pasti pecah pasaran dengan membandingkan harga penutupan semasa dengan tahap sokongan / rintangan (dihitung berdasarkan harga terendah / tertinggi selama 30 kitaran).

  4. Syarat kemasukan: Apabila pasaran berada dalam trend tertentu dan tidak berada dalam keadaan pecah, jika terdapat isyarat berhenti kejatuhan, strategi akan masuk mengikut parameter risiko yang telah ditetapkan (risiko 2.5% setiap perdagangan).

  5. Tetapan hentikan kerugian: untuk kedudukan berbilang, hentikan kerugian ditetapkan pada 2.5% di bawah harga masuk; untuk kedudukan kosong, hentikan kerugian ditetapkan pada 2.5% di atas harga masuk.

  6. Syarat penangguhan: Syarat gabungan berdasarkan peratusan keuntungan dan nisbah pulangan risiko. Bagan memerlukan sekurang-kurangnya 7% keuntungan dan nisbah pulangan risiko tidak kurang dari 3; Bagan kosong memerlukan sekurang-kurangnya 6% keuntungan dan nisbah pulangan risiko tidak kurang dari 3.

Kelebihan Strategik

  1. Isyarat masuk dan keluar yang jelas: menyediakan isyarat dagangan yang jelas melalui corak kejatuhan tertentu dan trend garis lurus bergerak, mengurangkan kesan emosi dari penilaian subjektif.

  2. Mekanisme pengesahan trend komprehensif: Menggunakan indikator EMA untuk beberapa tempoh masa untuk mengesahkan trend pasaran, meningkatkan kebolehpercayaan isyarat perdagangan.

  3. Pengesanan sokongan dan rintangan dinamik: kedudukan sokongan dan rintangan dinamik yang dikira menggunakan tetingkap bergulir, membolehkan strategi menyesuaikan diri dengan peringkat pasaran yang berbeza.

  4. Pengurusan risiko yang ketat: parameter risiko yang ditetapkan (risiko 2.5% untuk setiap perdagangan) dan syarat penangguhan berdasarkan nisbah pulangan risiko untuk memastikan kefahaman pengurusan dana.

  5. Kriteria dagangan berlainan yang berbeza: menetapkan syarat kemasukan dan sasaran keuntungan yang berbeza untuk dagangan berlainan dan berlainan, menyesuaikan diri dengan ciri-ciri asimetri pasaran.

  6. Pengiraan Kedudukan Dinamik: Menghitung saiz kedudukan yang sesuai berdasarkan jarak stop loss secara automatik, memastikan keserasian risiko setiap perdagangan.

Risiko Strategik

  1. Penarikan Indeks: EMA sebagai penarikan yang terlewat, mungkin memberi isyarat kelewatan dalam pasaran yang berubah dengan cepat, yang menyebabkan masa masuk yang tidak baik.

  2. Risiko penembusan palsu: Pasaran mungkin mengalami fenomena penembusan palsu yang menyebabkan isyarat yang salah dihasilkan. Penyelesaian adalah dengan memperkenalkan pengesahan jumlah transaksi atau meningkatkan kitaran pengesahan penembusan.

  3. Cabaran penyesuaian sensitiviti: Parameter untuk isyarat henti kejatuhan (seperti nisbah garis bayangan terhadap entiti) perlu disesuaikan mengikut pasaran dan kitaran yang berbeza, terlalu sensitif boleh menyebabkan perdagangan berlebihan, dan terlalu ketat boleh kehilangan peluang.

  4. Risiko tempoh peralihan trend: Strategi mungkin menghasilkan satu siri perdagangan yang rugi semasa peralihan trend. Penyelesaian adalah dengan menambah penapis kekuatan trend atau mengurangkan frekuensi perdagangan apabila trend tidak jelas.

  5. Ketidakcocokan jarak hentian tetap: Penggunaan peratusan hentian yang sama untuk semua perdagangan (< 2.5%) mungkin tidak sesuai dengan kadar turun naik pasaran yang berbeza. Penggunaan jarak hentian dinamik berdasarkan kadar turun naik boleh dipertimbangkan.

  6. Batasan syarat penapisan RSI: Penggunaan penapisan RSI untuk perdagangan kosong sahaja boleh menyebabkan frekuensi perdagangan yang tidak seimbang. Anda boleh mempertimbangkan untuk memperkenalkan mekanisme penapisan serupa atau mengoptimumkan parameter RSI semasa untuk perdagangan berbilang kepala.

Arah pengoptimuman strategi

  1. Parameter penyesuaian kadar turun naik: pengenalan penunjuk kadar turun naik (seperti ATR) untuk menyesuaikan secara dinamik keperluan nisbah garis bayangan dan jarak hentian untuk isyarat hentian kejatuhan, membolehkan strategi lebih sesuai dengan keadaan pasaran yang berbeza.

  2. Pengesahan jangka masa berbilang: Pengesahan trend untuk memperkenalkan semula jangka masa yang lebih tinggi (seperti carta 1 jam), meningkatkan kebolehpercayaan isyarat perdagangan dan mengurangkan kesan isyarat palsu.

  3. Optimumkan masa masuk: Optimumkan masa masuk dengan menambah syarat penapisan tambahan (seperti penunjuk kekuatan trend, pengesahan jumlah transaksi) untuk meningkatkan kadar kejayaan perdagangan.

  4. Mekanisme penangguhan separa: memperkenalkan mekanisme penangguhan separa, bergerak berhenti kepada harga kos atau mengunci sebahagian keuntungan setelah mencapai keuntungan tertentu, untuk menyeimbangkan risiko dan pulangan dengan lebih baik.

  5. Pelancaran kitaran pengembalian: melakukan pengembalian yang lebih menyeluruh dalam kitaran dan keadaan pasaran yang berbeza untuk mengesahkan strategi yang kukuh dan bersesuaian.

  6. Pengoptimuman pembelajaran mesin: Menggunakan kaedah pembelajaran mesin untuk mengoptimumkan parameter strategi secara automatik untuk mencari kombinasi parameter yang paling optimum untuk pasaran tertentu.

  7. Kawalan frekuensi dagangan: Memperkenalkan sekatan bilangan dagangan atau mekanisme tempoh sejuk untuk mengelakkan perdagangan berlebihan dalam keadaan pasaran yang tidak menguntungkan.

ringkaskan

Strategi berhenti perdagangan Indicator Moving Average Line Stop adalah sistem perdagangan kuantitatif yang menggabungkan analisis teknikal dan pengurusan risiko untuk menghasilkan isyarat perdagangan dengan mengenal pasti bentuk kejatuhan tertentu dan pengesahan trend. Keuntungan utama strategi ini adalah peraturan perdagangan yang jelas dan mekanisme kawalan risiko yang ketat, yang menjadikan keputusan perdagangan lebih sistematik dan disiplin. Walau bagaimanapun, seperti strategi analisis teknikal, ia juga menghadapi cabaran seperti ketinggalan indikator dan adaptasi perubahan pasaran.

Strategi ini mempunyai potensi untuk mencapai prestasi yang lebih stabil dalam pelbagai keadaan pasaran dengan memperkenalkan parameter penyesuaian kadar turun naik, pengesahan dan pengoptimuman masa masuk dalam pelbagai jangka masa. Terutama, penggunaan kaedah pembelajaran mesin untuk pengoptimuman parameter mungkin meningkatkan penyesuaian strategi dan prestasi keseluruhan. Walau bagaimanapun, sebelum strategi ini digunakan, disarankan untuk melakukan pengesanan dan pengujian ke hadapan yang mencukupi untuk mengesahkan prestasinya di bawah keadaan pasaran sebenar.

Kod sumber strategi
/*backtest
start: 2024-02-26 00:00:00
end: 2025-02-23 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=6
strategy("Advanced Candle Stop Strategy Backtest - Tuned v9 - Max Trades", overlay=true)

// --- EMA Variables ---
ema5_length = 5
ema20_length = 20
ema90_length = 90

ema5 = ta.ema(close, ema5_length)
ema20 = ta.ema(close, ema20_length)
ema90 = ta.ema(close, ema90_length)

// --- Support, Resistance, and Volume Calculation ---
lookback_support_resistance = 30
support_level = ta.lowest(low, lookback_support_resistance)
resistance_level = ta.highest(high, lookback_support_resistance)

// --- Volume Condition for Short (Removed) ---
avg_volume_lookback = 20
avg_volume = ta.sma(volume, avg_volume_lookback)

// --- RSI Condition for Short (Removed) ---
rsi_length = 14
rsi_overbought = 70
rsi = ta.rsi(close, rsi_length)


// --- Candle Stop Function ---
is_candle_stop(trend) =>
    body = math.abs(close - open)
    upper_shadow = high - math.max(open, close)
    lower_shadow = math.min(open, close) - low

    if trend == "up"
        lower_shadow >= 0.8 * body and upper_shadow < body and close > open // Shadow ratio reduced to 0.8 for longs
    else if trend == "down"
        upper_shadow >= 0.8 * body and lower_shadow < body and close < open // Shadow ratio reduced to 0.8 for shorts - EMA5 and Volume conditions removed
    else
        false

// --- Trend Determination (only 15m, no 1H confirmation) ---
trend = ema20 > ema90 ? "up" : ema20 < ema90 ? "down" : "neutral"
final_trend = trend  // حذف تأیید با تایم‌فریم 1H

// --- Breakout Detection ---
var bool breakout_detected = false
if final_trend == "up" and close > resistance_level
    breakout_detected := true
    alert("شکست صعودی تشخیص داده شد! منتظر پولبک 🚀", alert.freq_once_per_bar)
else if final_trend == "down" and close < support_level
    breakout_detected := true
    alert("شکست نزولی تشخیص داده شد! منتظر پولبک 📉", alert.freq_once_per_bar)

// --- Entry and Exit Conditions ---
var float position = 0.0
var float entry_price = 0.0
var float stop_loss_price = na
var bool take_profit_long = false  // Declare take_profit_long
var bool stop_loss_hit_long = false // Declare stop_loss_hit_long
var bool take_profit_short = false // Declare take_profit_short
var bool stop_loss_hit_short = false // Declare stop_loss_hit_short
risk_per_trade_percent = 2.5  // افزایش ریسک به 2.5٪ برای موقعیت‌های بیشتر


if not breakout_detected
    if position == 0 and is_candle_stop(final_trend)
        risk_amount_usd = strategy.initial_capital * (risk_per_trade_percent / 100)
        if final_trend == "up"
            stop_loss_price := close * 0.975 // Stop loss at 2.5% below entry for longs
            if (close - stop_loss_price) != 0
                position_size_usd = risk_amount_usd / (close - stop_loss_price)
                amount = position_size_usd / close
                strategy.entry("Long", strategy.long, qty=amount)
                position := amount
                entry_price := close
        else if final_trend == "down"
            stop_loss_price := close * 1.025 // Stop loss at 2.5% above entry for shorts
            if (stop_loss_price - close) != 0
                position_size_usd = risk_amount_usd / (stop_loss_price - close)
                amount = position_size_usd / close
                if rsi >= rsi_overbought // RSI condition for short entry - No Change, still using RSI but not enforcing it for now - Consider removing RSI condition as well for max trades
                    strategy.entry("Short", strategy.short, qty=amount)
                    position := amount
                    entry_price := close

if position > 0
    profit_percent_long = (close - entry_price) / entry_price * 100
    profit_percent_short = (entry_price - close) / entry_price * 100
    loss_percent_long = (entry_price - close) / entry_price * 100
    loss_percent_short = (close - entry_price) / entry_price * 100

    risk_reward_long = loss_percent_long != 0 ? profit_percent_long / loss_percent_long : (profit_percent_long != 0 ? 99999 : 0)
    risk_reward_short = loss_percent_short != 0 ? profit_percent_short / loss_percent_short : (profit_percent_short != 0 ? 99999 : 0)


    take_profit_long := profit_percent_long >= 7 and risk_reward_long >= 3
    stop_loss_hit_long := close <= stop_loss_price
    take_profit_short := profit_percent_short >= 6 and risk_reward_short >= 3 // Reduced Take Profit for Shorts to 6% - No Change
    stop_loss_hit_short := close >= stop_loss_price

    if (final_trend == "up" and (take_profit_long or stop_loss_hit_long)) or (final_trend == "down" and (take_profit_short or stop_loss_hit_short))
        if final_trend == "up"
            strategy.close("Long")
        else
            strategy.close("Short")
        position := 0
        entry_price := 0.0
        breakout_detected := false

// --- Plotting EMAs and Support/Resistance Levels ---
plot(ema5, color=color.blue, title="EMA5")
plot(ema20, color=color.red, title="EMA20")
plot(ema90, color=color.green, title="EMA90")
plot(resistance_level, color=color.orange, style=plot.style_line, title="Resistance")
plot(support_level, color=color.orange, style=plot.style_line, title="Support")