Kembalikan purata dengan strategi kemasukan tambahan

Penulis:ChaoZhang, Tarikh: 2024-01-29 15:47:24
Tag:

img

Ringkasan

Strategi Pembalikan Rata dengan Masukan Inkremental yang direka oleh HedgerLabs adalah skrip strategi perdagangan lanjutan yang memberi tumpuan kepada teknik pembalikan rata-rata di pasaran kewangan.

Logika Strategi

Pusat kepada strategi ini adalah Purata Bergerak Sederhana (SMA) di mana semua entri dan keluar berputar.

Strategi ini unik dengan sistem kemasukan tambahan. Ia memulakan kedudukan pertama apabila harga menyimpang dari MA dengan peratusan tertentu. Masukan berikutnya kemudian dibuat dalam langkah-langkah tambahan, seperti yang ditakrifkan oleh peniaga, kerana harga bergerak lebih jauh dari MA. Ini bertujuan untuk memanfaatkan peningkatan turun naik.

Strategi ini menguruskan kedudukan dengan bijak dengan memasuki panjang apabila harga di bawah MA dan pendek apabila di atas untuk menyesuaikan diri dengan keadaan pasaran yang berubah.

Keluar ditentukan apabila harga menyentuh MA, dengan matlamat menutup kedudukan pada titik pembalikan yang berpotensi untuk hasil yang optimum.

Dengan calc_on_every_tick diaktifkan, strategi terus menilai pasaran untuk memastikan tindak balas segera.

Analisis Kelebihan

Strategi Kembali Rata-rata dengan Pendapatan Peningkatan mempunyai kelebihan utama berikut:

  1. Sangat sistematik untuk mengurangkan gangguan emosi
  2. Pendaftaran tambahan menangkap keuntungan yang lebih besar semasa turun naik yang tinggi
  3. Parameter yang boleh disesuaikan seperti tempoh MA sesuai dengan instrumen yang berbeza
  4. Pengurusan kedudukan pintar menyesuaikan secara automatik panjang / pendek
  5. Pembaharuan penargetan keluar yang optimum untuk menutup kedudukan

Analisis Risiko

Risiko yang perlu dipertimbangkan termasuk:

  1. Whipsaws daripada kebergantungan kepada penunjuk teknikal
  2. Trendless yang menyebabkan pengeluaran yang diperpanjang
  3. Tetapan MA yang buruk membawa kepada hentian yang kerap
  4. Saiz kedudukan yang lebih besar daripada kemasukan tambahan

Keluar boleh dioptimumkan, penapis trend ditambah, saiz kedudukan dikurangkan untuk mengurangkan risiko di atas.

Peluang Peningkatan

Strategi ini boleh ditingkatkan dengan:

  1. Menambah penapis trend untuk mengelakkan perdagangan yang tidak baik
  2. Mengoptimumkan peningkatan kemasukan dengan turun naik
  3. Menggabungkan hentian pengangkutan untuk mengunci keuntungan
  4. Bereksperimen dengan purata bergerak yang berbeza
  5. Menggunakan penapis untuk mengurangkan isyarat palsu

Kesimpulan

Strategi pembalikan purata dengan kemasukan tambahan memberi tumpuan kepada teknik pembalikan purata menggunakan pendekatan ukuran kedudukan tambahan yang sistematik. Dengan tetapan yang boleh disesuaikan, ia dapat disesuaikan di seluruh instrumen perdagangan yang berbeza. Ia berfungsi dengan baik di pelbagai pasaran dan sesuai dengan peniaga sistematik jangka pendek.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Mean Reversion with Incremental Entry by HedgerLabs", overlay=true, calc_on_every_tick=true)

// Input for adjustable settings
maLength = input.int(30, title="MA Length", minval=1)
initialPercent = input.float(5, title="Initial Percent for First Order", minval=0.01, step=0.01)
percentStep = input.float(1, title="Percent Step for Additional Orders", minval=0.01, step=0.01)

// Calculating Moving Average
ma = ta.sma(close, maLength)

// Plotting the Moving Average
plot(ma, "Moving Average", color=color.blue)

var float lastBuyPrice = na
var float lastSellPrice = na

// Function to calculate absolute price percentage difference
pricePercentDiff(price1, price2) =>
    diff = math.abs(price1 - price2) / price2 * 100
    diff

// Initial Entry Condition Check Function
initialEntryCondition(price, ma, initialPercent) =>
    pricePercentDiff(price, ma) >= initialPercent

// Enhanced Entry Logic for Buy and Sell
if (low < ma)
    if (na(lastBuyPrice))
        if (initialEntryCondition(low, ma, initialPercent))
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low
    else
        if (low < lastBuyPrice and pricePercentDiff(low, lastBuyPrice) >= percentStep)
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low

if (high > ma)
    if (na(lastSellPrice))
        if (initialEntryCondition(high, ma, initialPercent))
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high
    else
        if (high > lastSellPrice and pricePercentDiff(high, lastSellPrice) >= percentStep)
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high

// Exit Conditions - Close position if price touches the MA
if (close >= ma and strategy.position_size > 0)
    strategy.close("Buy")
    lastBuyPrice := na

if (close <= ma and strategy.position_size < 0)
    strategy.close("Sell")
    lastSellPrice := na

// Reset last order price when position is closed
if (strategy.position_size == 0)
    lastBuyPrice := na
    lastSellPrice := na


Lebih lanjut