Strategi Amplop Pembalikan yang Disengaja


Tanggal Pembuatan: 2023-12-04 16:12:39 Akhirnya memodifikasi: 2023-12-04 16:12:39
menyalin: 0 Jumlah klik: 429
1
fokus pada
1166
Pengikut

Strategi Amplop Pembalikan yang Disengaja

Ringkasan

Strategi ini menggunakan moving averages sebagai dasar perhitungan dan menambahkan beberapa belts di atas dan di bawahnya. Ketika harga menyentuh belts, buka posisi lebih banyak atau kosong, tergantung pada arah.

Prinsip Strategi

Strategi ini menggunakan Moving Average Index (DEMA) sebagai indikator dasar. Moving Average Index (DEMA) adalah sebuah Moving Average yang memiliki sensitivitas tinggi terhadap perubahan harga. Atas dasar itu, strategi ini menambahkan beberapa pita harga di kedua sisi atas dan bawah, membentuk sebuah zona jaringan yang sama.

Strategi ini akan membuka posisi kosong ketika harga naik mendekati band yang terikat di atas; strategi ini akan membuka posisi lebih banyak ketika harga turun menyentuh band yang terikat di bawah. Strategi ini akan menambah posisi sekali setiap kali menyentuh band harga baru. Strategi ini akan menghapus semua posisi ketika harga kembali di dekat garis rata-rata bergerak.

Strategi ini menangkap fluktuasi harga yang berlebihan melalui zona bundar dan menarik diri dari keuntungan ketika terjadi pergeseran, mencapai tujuan perdagangan yang murah dan mahal. Ini berlaku untuk siklus pasar dengan karakteristik kembalinya rata-rata yang jelas, seperti mata uang digital seperti bitcoin.

Keunggulan Strategis

  • Garis rata-rata bergerak dengan dua indeks lebih sensitif terhadap perubahan harga jangka pendek dan dapat menangkap perubahan tren dengan cepat.
  • Dengan adanya zona bundar di dekat garis rata-rata, maka akan lebih akurat menangkap perubahan harga.
  • “Kami akan melakukan hal yang sama dengan perusahaan lain”, katanya.
  • Dengan cepat bergeser setelah mendapat keuntungan, Anda akan lebih fleksibel dalam menghadapi perubahan pasar.
  • Optimalisasi bebas dengan menyesuaikan parameter.

Risiko Strategis

  • “Saya tidak tahu apa yang akan terjadi dengan saya, tapi saya tidak tahu apa yang akan terjadi dengan saya”, katanya.
  • Pengaturan parameter yang tidak tepat dapat menyebabkan perdagangan yang terlalu sering.
  • Hal ini diperlukan untuk kondisi yang relatif stabil, tidak cocok untuk pasar yang bergejolak besar.
  • “Kalau tidak ada penanganan, kita tidak bisa melakukan penangkapan”, kata dia.

Risiko dapat dikurangi dengan memperluas jangkauan jaringan paket, meningkatkan sensitivitas terhadap perubahan harga yang memicu. Pada saat yang sama, parameter panjang garis rata-rata bergerak dapat disesuaikan dengan situasi siklus yang berbeda.

Arah optimasi strategi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Mengoptimalkan algoritma rata-rata bergerak. Dapat menguji efek dari berbagai jenis indikator rata-rata bergerak.

  2. Menyesuaikan parameter panjang garis rata-rata. Memperpendek siklus dapat meningkatkan penangkapan perubahan harga jangka pendek, tetapi juga dapat meningkatkan perdagangan bising.

  3. Mengoptimalkan parameter jaringan paket. Anda dapat menguji pengaturan persentase yang berbeda untuk menemukan kombinasi parameter yang optimal.

  4. Meningkatkan strategi Stop Loss. Mengatur Stop Loss yang bergerak atau Stop Loss yang mundur, dapat secara efektif mengendalikan kerugian tunggal.

  5. Tambahkan kondisi penyaringan. Dalam kombinasi dengan sinyal indikator lainnya, hindari pembukaan posisi yang tidak valid dalam situasi yang tidak rasional.

Meringkaskan

Strategi nilai rata-rata rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai rantai

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

//@version=5
strategy("Mean Reversion - Envelope Strategy", overlay=true )

// ----------------------- DESCRIPTION -----------------------
// THIS SCRIPT IS A MEAN REVERSION SYSTEM THAT USES A MOVING AVERAGE AS BASE CALCULATION AND A % OF THIS MOVING AVERAGE TO CALCULATE THE ENVELOPE
// BY DEFAULT, THE SYSTEM WILL PLACE LONG ORDERS ON THE MOVING AVERAGE -5% PER ENVELOPE COUNT (5%, 10% AND SO ON...)
// YOU CAN ENABLE THE SHORT ORDERS THAT WILL FOLLOW THE SAME LOGIC ON THE OPPOSITE SIDE
// THE SYSTEM WILL CLOSE EVERY ONGOING TRADE WHEN THE PRICE RETURNS TO THE MEAN

// ---------------------------------------------
// ---------------- SETTINGS -------------------
src = input(close, "Moving Average Source", group = "Moving Average")
ma_window = input.int(5, "Moving Average Window", step = 1, group = "Moving Average")
ma_type = input.string('4. DEMA', "Moving Average Type", options=['1. SMA', '2. EMA', '3. RMA', '4. DEMA'], group = "Moving Average")
enveloppe_step = input.float(0.05, "Delta Per Enveloppe", step = 0.01, group = "Envelope")
envelope_count = input.int(5, "Envelope count", options = [1, 2, 3, 4, 5], group = "Envelope")
use_longs = input.bool(true, 'Use Long Orders ?', group = "Orders") 
use_short = input.bool(false, 'Use Short Orders ?', group = "Orders")


// ---------------------------------------------
// -------------- INDICATORS -------------------
ma_funct() =>
    if(ma_type == '1. SMA') 
        ta.sma(src, ma_window)
    if(ma_type == '2. EMA') 
        ta.ema(src, ma_window)
    if(ma_type == '3. RMA') 
        ta.rma(src, ma_window)
    if(ma_type == '4. DEMA') 
        2 * ta.ema(src, ma_window) - ta.ema(ta.ema(src, ma_window), ma_window)

ma_base = ma_funct()

ma_high_1 = envelope_count > 0 ? ma_base * (1 + enveloppe_step) : na
ma_high_2 = envelope_count > 1 ? ma_base * (1 + enveloppe_step * 2) : na
ma_high_3 = envelope_count > 2 ? ma_base * (1 + enveloppe_step * 3) : na
ma_high_4 = envelope_count > 3 ? ma_base * (1 + enveloppe_step * 4) : na
ma_high_5 = envelope_count > 4 ? ma_base * (1 + enveloppe_step * 5) : na

ma_low_1 = envelope_count > 0 ? ma_base * (1 - enveloppe_step) : na
ma_low_2 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 2) : na
ma_low_3 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 3) : na
ma_low_4 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 4) : na
ma_low_5 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 5) : na


// ---------------------------------------------
// --------------- STRATEGY --------------------
if use_longs
    if envelope_count > 0 and strategy.opentrades < 1
        strategy.entry('long 1', strategy.long, limit=ma_low_1, qty=(strategy.equity / ma_low_1) * (1 / envelope_count))
    if envelope_count > 1 and strategy.opentrades < 2
        strategy.entry('long 2', strategy.long, limit=ma_low_2, qty=(strategy.equity / ma_low_2) * (1 / envelope_count))
    if envelope_count > 2 and strategy.opentrades < 3
        strategy.entry('long 3', strategy.long, limit=ma_low_3, qty=(strategy.equity / ma_low_3) * (1 / envelope_count))
    if envelope_count > 3 and strategy.opentrades < 4
        strategy.entry('long 4', strategy.long, limit=ma_low_4, qty=(strategy.equity / ma_low_4) * (1 / envelope_count))
    if envelope_count > 4 and strategy.opentrades < 5
        strategy.entry('long 5', strategy.long, limit=ma_low_5, qty=(strategy.equity / ma_low_5) * (1 / envelope_count))


if use_short
    if envelope_count > 0 and strategy.opentrades < 1
        strategy.entry('short 1', strategy.short, limit=ma_high_1, qty=(strategy.equity / ma_high_1) * (1 / envelope_count))
    if envelope_count > 1 and strategy.opentrades < 2
        strategy.entry('short 2', strategy.short, limit=ma_high_2, qty=(strategy.equity / ma_high_2) * (1 / envelope_count))
    if envelope_count > 2 and strategy.opentrades < 3
        strategy.entry('short 3', strategy.short, limit=ma_high_3, qty=(strategy.equity / ma_high_3) * (1 / envelope_count))
    if envelope_count > 3 and strategy.opentrades < 4
        strategy.entry('short 4', strategy.short, limit=ma_high_4, qty=(strategy.equity / ma_high_4) * (1 / envelope_count))
    if envelope_count > 4 and strategy.opentrades < 5
        strategy.entry('short 5', strategy.short, limit=ma_high_5, qty=(strategy.equity / ma_high_5) * (1 / envelope_count))

strategy.exit('close', limit=ma_base)


// ---------------------------------------------
// ------------------ PLOT ---------------------
ma_base_plot = plot(ma_base, title = "Base MA", color = color.orange, linewidth = 3, offset = 1)

ma_high_1_plot = plot(ma_high_1, title = "MA high 1", color = color.red, offset = 1)
ma_high_2_plot = plot(ma_high_2, title = "MA high 2", color = color.red, offset = 1)
ma_high_3_plot = plot(ma_high_3, title = "MA high 3", color = color.red, offset = 1)
ma_high_4_plot = plot(ma_high_4, title = "MA high 4", color = color.red, offset = 1)
ma_high_5_plot = plot(ma_high_5, title = "MA high 5", color = color.red, offset = 1)

ma_low_1_plot = plot(ma_low_1, title = "MA low 1", color = color.green, offset = 1)
ma_low_2_plot = plot(ma_low_2, title = "MA low 2", color = color.green, offset = 1)
ma_low_3_plot = plot(ma_low_3, title = "MA low 3", color = color.green, offset = 1)
ma_low_4_plot = plot(ma_low_4, title = "MA low 4", color = color.green, offset = 1)
ma_low_5_plot = plot(ma_low_5, title = "MA low 5", color = color.green, offset = 1)