Idea utama strategi ini adalah untuk mengesan jika harga memecahkan harga terendah dalam tempoh tertentu dan pergi lama, menunggu harga kembali ke purata.
Strategi ini mendapat harga terendah dalam tempoh yang ditentukan lowestLow menggunakan Pine Script's ta.lowest kaedah dan membandingkannya dengan harga terendah dari tempoh sebelumnya prevLow.
Jika harga terendah tempoh terakhir lowestLow adalah lebih rendah daripada harga terendah tempoh sebelumnya preLow, isyarat panjang dicetuskan. Selepas pergi lama, ia membandingkan dengan harga tertinggi dalam tempoh yang ditentukan tertinggiHigh. Jika harga tertinggi tempoh terakhir lebih tinggi daripada harga tertinggi sebelumnya, ia menutup kedudukan.
Strategi ini membolehkan memilih keadaan pencetus, iaitu harga terendah perlu memecahkan 1, 2, 3 atau 4 harga terendah sebelumnya secara berturut-turut, untuk mengawal kekerapan perdagangan.
Ia juga memetakan garis harga terendah terendah dan garis harga tertinggi tertinggi di carta untuk memaparkan perubahan trend secara visual.
Strategi ini menangkap trend pembalikan selepas memecahkan tahap terendah baru dengan kadar kemenangan yang agak tinggi.
Membolehkan memilih bilangan harga terendah yang dipecahkan untuk mengawal kekerapan perdagangan.
Menggambar garisan membantu menentukan titik perubahan trend secara visual.
Logik strategi yang mudah dan jelas, mudah difahami dan dilaksanakan.
Boleh dikonfigurasi dan dioptimumkan pada stok dan tempoh masa yang berbeza.
Melanggar dasar palsu tidak dapat menentukan titik pembalikan trend, boleh membawa kepada kerugian.
Perlu menguji kombinasi parameter yang berbeza untuk mengoptimumkan konfigurasi, jika tidak, kekerapan perdagangan mungkin terlalu tinggi atau terlalu rendah.
Parameter perlu diselaraskan untuk stok yang berbeza, tidak boleh digunakan secara mekanikal.
Tempoh backtest yang tidak mencukupi boleh menyebabkan pemasangan berlebihan.
Harga boleh membuat terendah baru selepas pecah, perlu menetapkan stop loss untuk mengawal risiko.
Tambah mekanisme stop loss seperti pergerakan stop loss, trailing stop loss, untuk mengehadkan kerugian setiap perdagangan.
Mengoptimumkan bilangan breakout untuk mengimbangi kekerapan perdagangan dan kualiti isyarat.
Parameter ujian pada stok dan tempoh masa yang berbeza.
Tambah penapis untuk mengelakkan perdagangan yang kerap di pasaran yang berbeza.
Pertimbangkan untuk menambah penunjuk trend untuk mengelakkan perdagangan kontra trend.
Uji isyarat keluar yang berbeza.
Strategi ini menangkap peluang pembalikan dengan memantau penembusan harga terendah, strategi penembusan pembalikan purata biasa. Kelebihannya adalah kesederhanaan, kekerapan yang boleh dikawal, dan penerapan kepada pelbagai saham. Tetapi ia juga mempunyai beberapa risiko pecah palsu. Menambah penapis dan pengoptimuman adalah perlu, serta mengawal risiko. Dengan ujian dan pengoptimuman yang komprehensif, ia boleh menjadi sistem perdagangan yang stabil dan boleh dipercayai.
/*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")