Strategi Stop Trading Candlestick Moving Average Eksponensial

EMA RSI SUPPORT RESISTANCE BREAKOUT
Tanggal Pembuatan: 2025-02-25 11:11:35 Akhirnya memodifikasi: 2025-02-25 11:11:35
menyalin: 8 Jumlah klik: 348
2
fokus pada
319
Pengikut

Strategi Stop Trading Candlestick Moving Average Eksponensial Strategi Stop Trading Candlestick Moving Average Eksponensial

Ringkasan

Strategi stop trading indeks bergerak rata-rata adalah sistem perdagangan kuantitatif yang didasarkan pada identifikasi tren tren tren tren tren dan tren tren. Strategi ini terutama dilakukan dengan mengidentifikasi tren tren tertentu (yaitu sinyal “stop” tren) sebagai titik masuk, sementara dalam kombinasi dengan EMA (index bergerak rata-rata) untuk mengkonfirmasi tren pasar secara keseluruhan, dan menggunakan level dukungan dan resistensi dinamis untuk mengidentifikasi terobosan pasar. Strategi ini menggunakan mekanisme manajemen risiko yang ketat, termasuk posisi stop loss yang telah ditetapkan dan strategi stop loss berdasarkan rasio pengembalian risiko, untuk memastikan bahwa risiko setiap perdagangan terkendali.

Prinsip Strategi

Prinsip inti dari strategi ini adalah mengidentifikasi bentuk-bentuk penurunan tertentu di pasar, yang biasanya mewakili kemungkinan pembalikan pasar dalam jangka pendek. Mekanisme operasi strategi adalah sebagai berikut:

  1. Penilaian tren: menilai tren pasar dengan membandingkan posisi relatif EMA20 dan EMA90. Di atas EMA20 di atas EMA90, ini adalah tren naik; di bawah EMA90, ini adalah tren turun.

  2. “Sudah tidak bisa diandalkan lagi.

    • Sinyal berhenti di bawah tren naik: garis bawah setidaknya 0,8 kali panjang dari entitas, garis atas lebih kecil dari entitas, dan harga penutupan lebih tinggi dari harga bukaan ((Garis matahari)).
    • Sinyal berhenti di bawah tren turun: garis atas setidaknya 0,8 kali lebih panjang dari entitas, garis bawah lebih kecil dari entitas, dan harga tutup lebih rendah dari harga bukaan ((garis bawah)).
  3. Deteksi Penembusan: Identifikasi penembusan pasar dengan membandingkan harga penutupan saat ini dengan tingkat dukungan / resistensi (dihitung berdasarkan harga minimum / maksimum selama 30 siklus).

  4. Kondisi masuk: Jika ada sinyal berhenti jatuh ketika pasar berada dalam tren tertentu dan tidak dalam keadaan pecah, strategi akan masuk sesuai dengan parameter risiko default (risiko 2,5% per perdagangan).

  5. Stop loss setting: untuk posisi multihead, stop loss ditetapkan di bawah harga masuk 2.5%; untuk posisi kosong, stop loss ditetapkan di atas harga masuk 2.5%

  6. Kondisi penutupan: Kondisi gabungan berdasarkan persentase keuntungan dan rasio pengembalian risiko. Multipurpose membutuhkan setidaknya 7% keuntungan dan tidak kurang dari 3 rasio pengembalian risiko; kosong membutuhkan setidaknya 6% keuntungan dan tidak kurang dari 3 rasio pengembalian risiko.

Keunggulan Strategis

  1. Sinyal masuk dan keluar yang jelas: Memberikan sinyal perdagangan yang jelas melalui tren tren tren yang bergerak dan tren tren yang bergerak, mengurangi dampak emosional dari penilaian subjektif.

  2. Mekanisme konfirmasi tren komprehensif: Menggunakan indikator EMA dari beberapa periode waktu untuk mengkonfirmasi tren pasar, meningkatkan keandalan sinyal perdagangan.

  3. Identifikasi Dukungan dan Resistensi Dinamis: Dukungan dan Resistensi Dinamis yang dihitung menggunakan jendela bergulir memungkinkan strategi untuk beradaptasi dengan berbagai tahap pasar.

  4. Manajemen risiko yang ketat: parameter risiko yang diantisipasi (risiko 2,5% per transaksi) dan kondisi stop-loss berdasarkan rasio risiko-pengembalian untuk memastikan bahwa manajemen dana masuk akal.

  5. Standar perdagangan multihead yang berbeda: menetapkan persyaratan masuk dan target keuntungan yang berbeda untuk perdagangan multihead dan kosong, sesuai dengan karakteristik asimetris pasar.

  6. Perhitungan posisi dinamis: Menghitung ukuran posisi yang tepat berdasarkan jarak stop loss secara otomatis untuk memastikan konsistensi risiko setiap perdagangan.

Risiko Strategis

  1. Lagging Indikator: EMA sebagai indikator lag, dapat memberikan sinyal yang tertunda di pasar yang berubah dengan cepat, yang menyebabkan waktu masuk yang buruk.

  2. Risiko penembusan palsu: Pasar dapat mengalami penembusan palsu, yang menyebabkan sinyal yang salah. Solusi adalah dengan memperkenalkan konfirmasi volume atau meningkatkan siklus konfirmasi penembusan.

  3. Tantangan penyesuaian sensitivitas: Parameter untuk sinyal berhenti di bangku (misalnya rasio garis bayangan terhadap entitas) perlu disesuaikan dengan pasar dan siklus yang berbeda. Terlalu sensitif dapat menyebabkan over-trading, dan terlalu ketat dapat kehilangan peluang.

  4. Risiko periode konversi tren: Strategi dapat menghasilkan serangkaian perdagangan yang merugikan selama konversi tren. Solusinya adalah menambahkan filter kekuatan tren atau mengurangi frekuensi perdagangan ketika tren tidak jelas.

  5. Ketidakcocokan dari Stop Loss Fixed: Penggunaan Stop Loss Persentase yang sama untuk semua transaksi (<2.5%) mungkin tidak sesuai dengan fluktuasi pasar yang berbeda. Penggunaan Stop Loss Dynamic based on Volatility dapat dipertimbangkan.

  6. Keterbatasan kondisi penyaringan RSI: Penggunaan penyaringan RSI hanya untuk perdagangan kosong dapat menyebabkan frekuensi perdagangan yang tidak seimbang. Dapat dipertimbangkan untuk memperkenalkan mekanisme penyaringan serupa atau mengoptimalkan parameter RSI saat ini untuk perdagangan multi-head.

Arah optimasi strategi

  1. Parameter adaptasi tingkat fluktuasi: memperkenalkan indikator tingkat fluktuasi (seperti ATR) untuk secara dinamis menyesuaikan persyaratan rasio garis bayangan dan jarak stop loss dari sinyal stop-loss, sehingga strategi dapat beradaptasi dengan lebih baik terhadap kondisi pasar yang berbeda.

  2. Konfirmasi multi-frame waktu: Konfirmasi tren untuk memperkenalkan kembali frame waktu yang lebih tinggi (seperti grafik 1 jam), meningkatkan keandalan sinyal perdagangan, mengurangi dampak sinyal palsu.

  3. Optimalisasi waktu masuk: Optimalkan waktu masuk dengan menambahkan kondisi penyaringan tambahan (seperti indikator kekuatan tren, konfirmasi volume transaksi) untuk meningkatkan tingkat keberhasilan perdagangan.

  4. Mekanisme stop-loss parsial: Memperkenalkan mekanisme stop-loss bertahap, memindahkan stop-loss ke harga biaya atau mengunci sebagian keuntungan setelah mencapai keuntungan tertentu, untuk menyeimbangkan risiko dan imbalan yang lebih baik.

  5. Ekstensi siklus pengembalian: melakukan pengembalian yang lebih komprehensif dalam siklus dan kondisi pasar yang berbeda untuk memverifikasi kehandalan dan adaptasi strategi.

  6. Optimasi Pembelajaran Mesin: Menggunakan metode pembelajaran mesin untuk mengoptimalkan parameter strategi secara otomatis untuk menemukan kombinasi parameter yang optimal untuk pasar tertentu.

  7. Kontrol frekuensi perdagangan: Memperkenalkan mekanisme pembatasan atau cooling-off untuk menghindari perdagangan berlebihan dalam kondisi pasar yang tidak menguntungkan.

Meringkaskan

Strategi stop trading adalah sistem perdagangan kuantitatif yang menggabungkan analisis teknis dan manajemen risiko untuk menghasilkan sinyal perdagangan dengan mengidentifikasi bentuk-bentuk tertentu dan mengkonfirmasi tren. Keuntungan utama dari strategi ini adalah aturan perdagangan yang jelas dan mekanisme kontrol risiko yang ketat, yang membuat keputusan perdagangan lebih sistematis dan disiplin. Namun, seperti strategi analisis teknis lainnya, strategi ini juga menghadapi tantangan seperti keterlambatan indikator dan adaptasi terhadap perubahan pasar.

Strategi ini memiliki potensi untuk mendapatkan kinerja yang lebih stabil di berbagai lingkungan pasar dengan memperkenalkan parameter adaptasi tingkat volatilitas, pengakuan multi-frame dan optimalisasi waktu masuk. Terutama, penerapan metode pembelajaran mesin untuk optimalisasi parameter dapat secara signifikan meningkatkan adaptasi strategi dan kinerja keseluruhan. Bagaimanapun, sebelum strategi ini benar-benar digunakan, dianjurkan untuk melakukan pengetesan dan pengujian ke depan yang memadai untuk memverifikasi kinerjanya di bawah kondisi pasar yang sebenarnya.

Kode 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")