Strategi biaya rata-rata tertimbang berganda EMA berdasarkan stop loss dinamis dan target laba


Tanggal Pembuatan: 2024-01-19 15:16:53 Akhirnya memodifikasi: 2024-01-19 15:16:53
menyalin: 2 Jumlah klik: 778
1
fokus pada
1617
Pengikut

Strategi biaya rata-rata tertimbang berganda EMA berdasarkan stop loss dinamis dan target laba

Ringkasan

Strategi ini menggunakan moving average multi-index yang dinamis sebagai sinyal masuk, dikombinasikan dengan mekanisme pelacakan stop loss dan target profit untuk mengelola risiko dan keuntungan. Strategi ini memanfaatkan sifat halus EMA untuk mengidentifikasi tren, mengendalikan biaya melalui beberapa kali DCA. Selain itu, pengaturan stop loss dan target profit yang dinamis terintegrasi membuat keseluruhan strategi lebih cerdas dan otomatis.

Prinsip Strategi

Perhitungan indikator

  • EMA5, EMA10, EMA20, EMA50, EMA100, dan EMA200 Indeks Rata-rata Bergerak
  • Rata-rata nilai riil ATR

Sinyal masuk

Ketika harga mendekati atau melintasi siklus EMA yang ditetapkan, sinyal masuk ke pasar dihasilkan. Periode EMA dapat disesuaikan, biasanya dipilih 5, 10, 20, 50, 100, dan 200 siklus. Strategi ini menggunakan harga dalam kisaran 1% ke atas dan ke bawah EMA sebagai kondisi masuk ke pasar.

Manajemen Risiko

Mengintegrasikan berbagai mekanisme manajemen risiko:

  1. ATR stop loss: Stop loss yang dihapus saat ATR melebihi set threshold
  2. Pengendalian jumlah peluncuran maksimum: hindari investasi berlebihan
  3. Trailing stop: Trailing stop berdasarkan fluktuasi harga secara real time

Mekanisme keuntungan

Menetapkan target tingkat keuntungan dan keluar ketika harga melebihi target harga

Analisis Keunggulan Strategi

  1. Menggunakan EMA untuk mengidentifikasi tren dan menyaring pergerakan jangka pendek
  2. Biaya DCA Disebarluaskan, Hindari Pembelian dan Penjualan Tinggi
  3. Multiple EMA Portfolio, Meningkatkan Kesuksesan Penarikan
  4. Stop loss dinamis REAL-TIME loss control
  5. Tujuan yang jelas, tidak membuang banyak uang

Risiko dan perbaikan

  1. Pilihan faktor EMA perlu dioptimalkan, karena efek kombinasi siklus yang berbeda di pasar yang berbeda sangat bervariasi
  2. Terlalu banyak DCA dapat menyebabkan overuse dana
  3. Pengaturan stop loss yang perlu dioptimalkan

Strategi Optimasi Pemikiran

  1. Menggunakan sistem EMA tingkat lanjut untuk mengidentifikasi tren
  2. Optimalisasi multi-variabel untuk DCA dan Stop Loss
  3. Model pembelajaran mesin untuk memprediksi perubahan harga
  4. Mengintegrasikan Modul Manajemen Uang untuk Mengontrol Investasi Total

Meringkaskan

Strategi ini mengintegrasikan beberapa mekanisme seperti identifikasi tren EMA, pengendalian biaya DCA, pelacakan stop loss secara dinamis, dan pengunduran diri dari target keuntungan. Ada banyak ruang untuk pengoptimalan dalam hal penyesuaian parameter dan pengendalian risiko. Secara keseluruhan, strategi ini memiliki kemampuan adaptasi dan skalabilitas yang kuat, yang dapat menghasilkan keuntungan tambahan yang stabil bagi investor.

Kode Sumber Strategi
/*backtest
start: 2023-01-12 00:00:00
end: 2024-01-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("EMA DCA Strategy with Trailing Stop and Profit Target", overlay=true )

// Define the investment amount for when the condition is met
investment_per_condition = 6

// Define the EMAs
ema5 = ema(close, 5)
ema10 = ema(close, 10)
ema20 = ema(close, 20)
ema50 = ema(close, 50)
ema100 = ema(close, 100)
ema200 = ema(close, 200)

// Define ATR sell threshold
atr_sell_threshold = input(title="ATR Sell Threshold", type=input.integer, defval=10, minval=1)

// Helper function to find if the price is within 1% of the EMA
isWithin1Percent(price, ema) =>
    ema_min = ema * 0.99
    ema_max = ema * 1.01
    price >= ema_min and price <= ema_max

// Control the number of buys
var int buy_count = 0
buy_limit = input(title="Buy Limit", type=input.integer, defval=3000)

// Calculate trailing stop and profit target levels
trail_percent = input(title="Trailing Stop Percentage", type=input.integer, defval=1, minval=0, maxval=10)
profit_target_percent = input(title="Profit Target Percentage", type=input.integer, defval=3, minval=1, maxval=10)

// Determine if the conditions are met and execute the strategy
checkConditionAndBuy(emaValue, emaName) =>
    var int local_buy_count = 0 // Create a local mutable variable
    if isWithin1Percent(close, emaValue) and local_buy_count < buy_limit
        strategy.entry("Buy at " + emaName, strategy.long, qty=investment_per_condition / close, alert_message ="Buy condition met for " + emaName)
        local_buy_count := local_buy_count + 1
        // alert("Buy Condition", "Buy condition met for ", freq_once_per_bar_close)
        
    local_buy_count // Return the updated local_buy_count

// Add ATR sell condition
atr_condition = atr(20) > atr_sell_threshold
if atr_condition
    strategy.close_all()
    buy_count := 0 // Reset the global buy_count when selling

// Strategy execution
buy_count := checkConditionAndBuy(ema5, "EMA5")
buy_count := checkConditionAndBuy(ema10, "EMA10")
buy_count := checkConditionAndBuy(ema20, "EMA20")
buy_count := checkConditionAndBuy(ema50, "EMA50")
buy_count := checkConditionAndBuy(ema100, "EMA100")
buy_count := checkConditionAndBuy(ema200, "EMA200")

// Calculate trailing stop level
trail_offset = close * trail_percent / 100
trail_level = close - trail_offset

// Set profit target level
profit_target_level = close * (1 + profit_target_percent / 100)

// Exit strategy: Trailing Stop and Profit Target
strategy.exit("TrailingStop", from_entry="Buy at EMA", trail_offset=trail_offset, trail_price=trail_level)
strategy.exit("ProfitTarget", from_entry="Buy at EMA",  when=close >= profit_target_level)

// Plot EMAs
plot(ema5, title="EMA 5", color=color.red)
plot(ema10, title="EMA 10", color=color.orange)
plot(ema20, title="EMA 20", color=color.yellow)
plot(ema50, title="EMA 50", color=color.green)
plot(ema100, title="EMA 100", color=color.blue)
plot(ema200, title="EMA 200", color=color.purple)