Strategi keuntungan bergerak multi-langkah pemicu ganda Supertrend

ATR ST TP
Tanggal Pembuatan: 2024-06-21 14:36:35 Akhirnya memodifikasi: 2024-06-21 14:36:35
menyalin: 1 Jumlah klik: 698
1
fokus pada
1617
Pengikut

Strategi keuntungan bergerak multi-langkah pemicu ganda Supertrend

Ringkasan

Strategi ini menggunakan dua parameter yang berbeda dari indikator Supertrend untuk menilai tren pasar, dan melakukan perdagangan multi-spasi sesuai dengan arah tren. Inti dari strategi ini adalah menggunakan mekanisme stop-loss bergerak multi-langkah, dengan menetapkan beberapa stop-loss target untuk mengunci keuntungan secara bertahap, sambil mempertahankan sebagian posisi untuk menangkap situasi yang lebih besar.

Prinsip Strategi

  1. Indikator Supertrend Ganda: Strategi menggunakan dua parameter yang mengatur indikator Supertrend yang berbeda untuk menilai tren. Bila dua indikator menunjukkan tren naik pada saat bersamaan, memicu sinyal ganda; Bila dua indikator menunjukkan tren turun pada saat bersamaan, memicu sinyal kosong.

  2. Stop Stop multi-tahap: Strategi menetapkan 4 target stop yang dapat disesuaikan. Setiap target memiliki persentase stop stop dan rasio posisi damai. Misalnya, target stop stop pertama mungkin ditetapkan sebagai 12% dari posisi yang dipadamkan ketika keuntungan 6% dan target kedua mungkin 8% dari posisi yang dipadamkan ketika keuntungan 12% dan seterusnya.

  3. Fleksibilitas dalam arah perdagangan: Strategi memungkinkan pengguna untuk memilih untuk melakukan perdagangan hanya-lebih, hanya-kurang atau dua arah, untuk menyesuaikan dengan lingkungan pasar yang berbeda dan preferensi perdagangan.

  4. Stop loss dinamis: Meskipun tidak ada pengaturan stop loss yang jelas dalam kode, strategi ini secara otomatis melunasi posisi ketika indikator Supertrend berbalik, yang sebenarnya berperan sebagai stop loss dinamis.

Keunggulan Strategis

  1. Pengelolaan risiko yang dioptimalkan: mekanisme stop-loss bergerak multi-tahap secara signifikan meningkatkan rasio risiko-keuntungan dari strategi. Dengan mengunci keuntungan secara bertahap, strategi dapat mengurangi risiko penarikan balik sambil mempertahankan ruang untuk kenaikan.

  2. Mengurangi sinyal palsu: Penggunaan indikator Supertrend ganda secara signifikan mengurangi dampak sinyal palsu, meningkatkan akurasi dan keandalan perdagangan.

  3. Adaptabilitas: Strategi dapat menyesuaikan arah perdagangan dan parameter stop-loss secara fleksibel sesuai dengan preferensi pengguna dan kondisi pasar, yang berlaku untuk berbagai jenis perdagangan dan periode waktu.

  4. Tingkat otomatisasi tinggi: Strategi sepenuhnya otomatis, tanpa intervensi manusiawi dari masuk, berhenti dan keluar, sangat mengurangi dampak emosional dan kemungkinan kesalahan operasi.

  5. Fleksibilitas Manajemen Uang: Dengan mengatur rasio stop loss yang berbeda, strategi dapat memungkinkan manajemen uang yang fleksibel, yang menjamin penguncian cepat sebagian dari keuntungan, dan memungkinkan posisi sisa untuk terus menguntungkan.

Risiko Strategis

  1. Sensitivitas parameter: kinerja strategi sangat bergantung pada pengaturan parameter indikator Supertrend dan parameter stop. Parameter yang tidak tepat dapat menyebabkan overtrading atau kehilangan peluang penting.

  2. Tergantung pada tren: sebagai strategi untuk mengikuti tren, mungkin sering masuk dan keluar di pasar yang bergejolak, menyebabkan biaya transaksi yang tidak perlu.

  3. Risiko slippage: Dalam situasi yang cepat, pelaksanaan multi-step stop loss dapat dipengaruhi oleh slippage, dan harga pelaksanaan aktual dapat menyimpang dari ekspektasi.

  4. Risiko over-optimisasi: Strategi memiliki beberapa parameter yang dapat disesuaikan, mudah jatuh ke dalam perangkap over-optimisasi, menyebabkan hasil pengembalian yang berbeda dengan kinerja real-time.

Arah optimasi strategi

  1. Memperkenalkan filter volatilitas: Pertimbangkan untuk menggabungkan ATR atau indikator volatilitas lainnya, mengurangi frekuensi perdagangan selama volatilitas rendah, meningkatkan kemampuan strategi untuk beradaptasi dalam berbagai kondisi pasar.

  2. Pengaturan parameter dinamis: Anda dapat mengeksplorasi pengaturan parameter Supertrend dan target stop secara dinamis menggunakan algoritma adaptif untuk menyesuaikan diri dengan perubahan pasar.

  3. Menambahkan mekanisme stop loss: Meskipun Supertrend memberikan beberapa fungsi stop loss secara terbalik, Anda dapat mempertimbangkan untuk menambahkan mekanisme stop loss yang lebih fleksibel, seperti melacak stop loss, untuk mengontrol risiko lebih lanjut.

  4. Kombinasi dengan indikator teknis lainnya: Dapat dipertimbangkan untuk memperkenalkan indikator teknis lainnya seperti RSI, MACD, dan lain-lain untuk meningkatkan akurasi masuk dan keluar melalui resonansi multi-indikator.

  5. Optimalkan pengelolaan dana: Anda dapat mengeksplorasi strategi pengelolaan dana yang lebih kompleks, seperti menyesuaikan ukuran posisi secara dinamis sesuai dengan keuntungan akun, untuk menyeimbangkan risiko dan keuntungan.

  6. Optimasi umpan balik: melakukan umpan balik yang lebih komprehensif, termasuk analisis kinerja dalam berbagai periode waktu dan kondisi pasar yang berbeda, untuk menemukan skenario penggunaan dan pengaturan parameter terbaik dari strategi.

Meringkaskan

Strategi Stop Stop Multi-Step ini didasarkan pada indikator Supertrend ganda, yang menyeimbangkan risiko dan keuntungan melalui mekanisme Stop Stop Multi-Step yang fleksibel. Keuntungan utama dari strategi ini adalah kemampuan manajemen risiko yang sangat baik dan sensitivitas terhadap tren. Namun, pengguna perlu memperhatikan pengaturan parameter dan pengaruh lingkungan pasar saat menerapkannya. Dengan pengoptimalan dan perbaikan lebih lanjut, strategi ini berpotensi menjadi sistem perdagangan otomatis yang kuat dan andal.

Kode Sumber Strategi
/*backtest
start: 2024-05-21 00:00:00
end: 2024-06-20 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Strategic Multi-Step Supertrend Trader - Strategy [presentTrading]", overlay=true )

// this strategy utilizes a double Supertrend indicator to determine entry and exit conditions for both long and short trades, with user-configurable take profit levels and trade direction settings. 
// The strategy dynamically updates highest and lowest prices during trades and exits positions based on multi-step profit targets or opposing Supertrend signals.


// User inputs for take profit settings
// Grouping Take Profit settings
useTakeProfit = input.bool(true, title="Use Take Profit", group="Take Profit Settings")
takeProfitPercent1 = input.float(6.0, title="Take Profit % Step 1", group="Take Profit Settings")
takeProfitPercent2 = input.float(12.0, title="Take Profit % Step 2", group="Take Profit Settings")
takeProfitPercent3 = input.float(18.0, title="Take Profit % Step 3", group="Take Profit Settings")
takeProfitPercent4 = input.float(50.0, title="Take Profit % Step 4", group="Take Profit Settings")

takeProfitAmount1 = input.float(12, title="Take Profit Amount % Step 1", group="Take Profit Settings")
takeProfitAmount2 = input.float(8, title="Take Profit Amount % Step 2", group="Take Profit Settings")
takeProfitAmount3 = input.float(4, title="Take Profit Amount % Step 3", group="Take Profit Settings")
takeProfitAmount4 = input.float(0, title="Take Profit Amount % Step 4", group="Take Profit Settings")

numberOfSteps = input.int(3, title="Number of Take Profit Steps", minval=1, maxval=4, group="Take Profit Settings")

// Grouping Trade Direction
tradeDirection = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"], group="Trade Direction")

// Grouping Supertrend settings
atrPeriod1 = input(10, title="ATR Length for Supertrend 1", group="Supertrend Settings")
factor1 = input.float(3.0, title="Factor for Supertrend 1", step=0.01, group="Supertrend Settings")

atrPeriod2 = input(5, title="ATR Length for Supertrend 2", group="Supertrend Settings")
factor2 = input.float(4.0, title="Factor for Supertrend 2", step=0.01, group="Supertrend Settings")


// Function to calculate Supertrend
supertrend(factor, atrPeriod) =>
    [a, direction] = ta.supertrend(factor, atrPeriod)
    direction

// Calculate Double Supertrend
supertrend1 = supertrend(factor1, atrPeriod1)
supertrend2 = supertrend(factor2, atrPeriod2)

// Entry conditions
longCondition = (supertrend1 < 0 and supertrend2 < 0) and (tradeDirection == "Long" or tradeDirection == "Both")
shortCondition = (supertrend1 > 0 and supertrend2 > 0) and (tradeDirection == "Short" or tradeDirection == "Both")

// Exit conditions
longExitCondition = (supertrend1 > 0 and supertrend2 > 0) and (tradeDirection == "Long" or tradeDirection == "Both")
shortExitCondition = (supertrend1 < 0 and supertrend2 < 0) and (tradeDirection == "Short" or tradeDirection == "Both")

// Variables to store the highest and lowest prices during the trade
var float highestPrice = na
var float lowestPrice = na

// Get the entry price from open trades
entryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)

// Reset highestPrice or lowestPrice when entering new trades
if (longCondition and strategy.position_size <= 0)
    highestPrice := na // Reset the highest price
    strategy.entry("My Long Entry Id", strategy.long) // Enter long position
    strategy.close("My Short Entry Id", "Short Exit") // Close short position if any

if (shortCondition and strategy.position_size >= 0)
    lowestPrice := na // Reset the lowest price
    strategy.entry("My Short Entry Id", strategy.short) // Enter short position
    strategy.close("My Long Entry Id", "Long Exit") // Close long position if any

// Exit trades based on conditions
if (longExitCondition and strategy.position_size > 0)
    strategy.close("My Long Entry Id", "Long Exit") // Exit long position

if (shortExitCondition and strategy.position_size < 0)
    strategy.close("My Short Entry Id", "Short Exit") // Exit short position

if (strategy.position_size > 0)
    // Update the highest price for long positions
    highestPrice := na(highestPrice) ? high : math.max(highestPrice, high)

    // Step 1
    if (useTakeProfit and numberOfSteps >= 1)
        strategy.exit("Take Profit 1", from_entry="My Long Entry Id", qty_percent=takeProfitAmount1, limit=entryPrice * (1 + takeProfitPercent1 / 100))
    // Step 2
    if (useTakeProfit and numberOfSteps >= 2)
        strategy.exit("Take Profit 2", from_entry="My Long Entry Id", qty_percent=takeProfitAmount2, limit=entryPrice * (1 + takeProfitPercent2 / 100))
    // Step 3
    if (useTakeProfit and numberOfSteps >= 3)
        strategy.exit("Take Profit 3", from_entry="My Long Entry Id", qty_percent=takeProfitAmount3, limit=entryPrice * (1 + takeProfitPercent3 / 100))
    // Step 4
    if (useTakeProfit and numberOfSteps == 4)
        strategy.exit("Take Profit 4", from_entry="My Long Entry Id", qty_percent=takeProfitAmount4, limit=entryPrice * (1 + takeProfitPercent4 / 100))

if (strategy.position_size < 0)
    // Update the lowest price for short positions
    lowestPrice := na(lowestPrice) ? low : math.min(lowestPrice, low)

    // Step 1
    if (useTakeProfit and numberOfSteps >= 1)
        strategy.exit("Take Profit 1", from_entry="My Short Entry Id", qty_percent=takeProfitAmount1, limit=entryPrice * (1 - takeProfitPercent1 / 100))
    // Step 2
    if (useTakeProfit and numberOfSteps >= 2)
        strategy.exit("Take Profit 2", from_entry="My Short Entry Id", qty_percent=takeProfitAmount2, limit=entryPrice * (1 - takeProfitPercent2 / 100))
    // Step 3
    if (useTakeProfit and numberOfSteps >= 3)
        strategy.exit("Take Profit 3", from_entry="My Short Entry Id", qty_percent=takeProfitAmount3, limit=entryPrice * (1 - takeProfitPercent3 / 100))
    // Step 4
    if (useTakeProfit and numberOfSteps == 4)
        strategy.exit("Take Profit 4", from_entry="My Short Entry Id", qty_percent=takeProfitAmount4, limit=entryPrice * (1 - takeProfitPercent4 / 100))