Rata-rata Reversi Breakout Rendah Strategi

Penulis:ChaoZhang, Tanggal: 2023-11-02 15:34:22
Tag:

img

Gambaran umum

Ide utama dari strategi ini adalah untuk mendeteksi apakah harga menembus harga terendah dalam periode tertentu dan pergi panjang, menunggu harga untuk kembali ke rata-rata.

Logika Strategi

Strategi ini mendapatkan harga terendah dalam periode tertentu lowestLow menggunakan metode Pine Script ta.lowest dan membandingkannya dengan harga terendah periode sebelumnya preLow.

Jika harga terendah periode terakhir lowestLow lebih rendah dari harga terendah periode sebelumnya preLow, sinyal panjang dipicu. Setelah pergi panjang, itu dibandingkan dengan harga tertinggi dalam periode yang ditentukan tertinggiHigh. Jika harga tertinggi periode terakhir lebih besar dari harga tertinggi sebelumnya, itu menutup posisi.

Strategi ini memungkinkan untuk memilih kondisi pemicu, yaitu harga terendah harus menembus 1, 2, 3 atau 4 harga terendah sebelumnya secara berturut-turut, untuk mengontrol frekuensi perdagangan.

Ini juga memetakan garis harga terendah terendah dan garis harga tertinggi tertinggi di grafik untuk menampilkan perubahan tren secara visual.

Analisis Keuntungan

  • Strategi ini menangkap tren pembalikan setelah memecahkan titik terendah baru dengan tingkat kemenangan yang relatif tinggi.

  • Memungkinkan memilih jumlah harga terendah yang rusak untuk mengontrol frekuensi perdagangan.

  • Menggambar garis-garis ini membantu menentukan titik perubahan tren secara visual.

  • Logika strategi yang sederhana dan jelas, mudah dipahami dan diimplementasikan.

  • Dapat dikonfigurasi dan dioptimalkan pada stok dan periode waktu yang berbeda.

Analisis Risiko

  • Melanggar dasar palsu tidak dapat menentukan titik pembalikan tren, dapat menyebabkan kerugian.

  • Perlu menguji kombinasi parameter yang berbeda untuk mengoptimalkan konfigurasi, jika tidak frekuensi perdagangan mungkin terlalu tinggi atau terlalu rendah.

  • Parameter harus disesuaikan untuk stok yang berbeda, tidak boleh diterapkan secara mekanis.

  • Periode backtest yang tidak cukup dapat menyebabkan overfitting.

  • Harga mungkin membuat terendah baru setelah pecah, perlu untuk mengatur stop loss untuk mengendalikan risiko.

Arahan Optimasi

  • Tambahkan mekanisme stop loss seperti stop loss bergerak, trailing stop loss, untuk membatasi per trade loss.

  • Mengoptimalkan jumlah breakout untuk menyeimbangkan frekuensi perdagangan dan kualitas sinyal.

  • Parameter pengujian pada stok dan periode waktu yang berbeda.

  • Tambahkan filter untuk menghindari perdagangan yang sering di berbagai pasar.

  • Pertimbangkan untuk menambahkan indikator tren untuk menghindari perdagangan kontra-tren.

  • Uji sinyal keluar yang berbeda.

Kesimpulan

Strategi ini menangkap peluang pembalikan dengan memantau penyebaran harga terendah, strategi penyebaran pembalikan rata-rata yang khas. Keuntungannya adalah kesederhanaan, frekuensi yang dapat dikontrol, dan dapat diterapkan pada berbagai saham. Tetapi juga memiliki beberapa risiko penyebaran palsu. Menambahkan filter dan pengoptimalan diperlukan, serta mengendalikan risiko. Dengan pengujian dan pengoptimalan yang komprehensif, ini dapat menjadi sistem perdagangan yang stabil dan andal.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © merovinh

//@version=5
strategy(title="Merovinh - Mean Reversion Lowest low",
     overlay = true,
     default_qty_type = strategy.percent_of_equity,
     initial_capital = 10000,
     default_qty_value = 10,
     commission_type = strategy.commission.percent,
     slippage = 1,
     commission_value = 0.04)

GR_TIME = 'Time Period'

bars = input(9, title = "Minimum number of bars", tooltip = "The minimum number of bars before updating lowest low / highest high")

numberOfLows  = input.string(defval='One', title='Number of broken lows', options=['One', 'Two', 'Three', 'Four'])

//Period

var prevLow = .0
var prevHigh = .0
var prevLow2 = .0
var prevLow3 = .0
var prevLow4 = .0

truetime = true


highestHigh = ta.highest(high, bars)
lowestLow = ta.lowest(low, bars)

if numberOfLows == 'One'
    if truetime and prevLow > 0 and lowestLow < prevLow
        strategy.entry('long', strategy.long)
if numberOfLows == 'Two'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2
        strategy.entry('long', strategy.long)
if numberOfLows == 'Three'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3
        strategy.entry('long', strategy.long)
if numberOfLows == 'Four'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3 and prevLow3 < prevLow4
        strategy.entry('long', strategy.long)

if truetime and prevHigh > 0 and highestHigh > prevHigh
    strategy.close('long')


if prevLow != lowestLow
    prevLow4 := prevLow3
    prevLow3 := prevLow2
    prevLow2 := prevLow
    prevLow := lowestLow
prevHigh := highestHigh

plot(lowestLow, color=color.green, linewidth=1, title="Lowest Low Line")
plot(highestHigh, color=color.green, linewidth=1, title="Highest High Line")




Lebih banyak