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.
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.
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.
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.
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.
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")