Strategi ini direka berdasarkan prinsip pasaran membeli rendah dan menjual tinggi. Ia mengesan harga tertinggi dan terendah dalam tempoh tertentu, menubuhkan kedudukan panjang apabila harga memecahkan harga terendah, dan menutup kedudukan apabila harga jatuh di bawah harga tertinggi atau syarat mengambil keuntungan dipenuhi. Pada masa yang sama, strategi ini menambah penapis trend pilihan yang hanya membenarkan pembelian apabila harga berada dalam trend menaik.
Harga terendah (kriteria rendah): Panggilan fungsi ta.lowest untuk mengira harga terendah dalam tempoh pencarian semula yang ditetapkan oleh pengguna (default 20 bar) dan merangka garis harga terendah.
Harga tertinggi (kriteria tertinggi): Panggilan fungsi ta.highest untuk mengira harga tertinggi dalam tempoh melihat kembali yang ditetapkan oleh pengguna (default 10 bar) dan merangka garis harga tertinggi.
Apabila harga semasa memecahkan garis harga terendah, isyarat beli dicetuskan untuk menubuhkan kedudukan panjang.
Dua kaedah keluar disediakan untuk pilihan:
Pendapatan mengambil tetap: Tutup kedudukan untuk keuntungan apabila harga mencapai tahap mengambil keuntungan yang ditetapkan (contohnya 8% di atas harga masuk).
Pembahagian harga tertinggi: Tutup kedudukan untuk mengurangkan kerugian apabila harga jatuh di bawah garis harga tertinggi, menilai pembalikan trend.
Tambah garis EMA untuk menentukan arah trend. Izinkan membeli hanya apabila harga berada di atas garis EMA (meningkat). Penapis ini boleh diaktifkan atau dilumpuhkan.
Mengambil strategi klasik membeli rendah dan menjual tinggi, sejajar dengan asas pasaran.
Tambah penilaian trend untuk mengelakkan pembukaan yang kerap semasa turun naik harga.
Menyediakan dua pilihan keluar untuk mengejar keuntungan tinggi atau mengurangkan kerugian.
Parameter yang boleh disesuaikan menyesuaikan diri dengan lebih banyak persekitaran pasaran.
Ruang yang besar untuk pengoptimuman strategi melalui penyesuaian parameter, reka bentuk penapis dll.
Tahap keuntungan tetap tidak dapat diselaraskan berdasarkan pergerakan pasaran sebenar, yang mengakibatkan keuntungan awal atau sasaran keuntungan yang tidak mencukupi.
Menjual pada perpecahan harga tertinggi mungkin sudah menghasilkan kerugian besar, tidak dapat mengawal kerugian dengan berkesan.
Penghakiman trend EMA hanya melihat kembali tempoh tertentu, mungkin ketinggalan perubahan trend sebenar.
Hasil ujian belakang tidak boleh mewakili masa depan.
Tambah kaedah mengambil keuntungan seperti hentian, keluar separa dan lain-lain untuk menyesuaikan tahap mengambil keuntungan secara dinamik.
Mengoptimumkan isyarat keluar, contohnya, keluar separa, menambah penunjuk lain.
Meningkatkan penilaian trend dengan menggabungkan lebih banyak penunjuk atau pembelajaran mesin.
Mengoptimumkan parameter dengan backtest yang lebih luas untuk mencari set yang optimum.
Tambah kaedah stop loss untuk mengawal kerugian dengan lebih baik.
Strategi ini umumnya menggunakan prinsip jual tinggi pembelian rendah klasik dan boleh berfungsi dengan baik di bawah keadaan tertentu. Tetapi masih ada ruang untuk peningkatan melalui penyesuaian parameter, pengoptimuman keluar, mekanisme stop loss dan lain-lain. Artikel ini memberikan analisis mendalam mengenai logika strategi, kebaikan, keburukan dan arah pengoptimuman, bertujuan untuk berkongsi idea strategi serta mengingatkan pelabur tentang risiko dan berdagang dengan berhati-hati dengan strategi kuantitatif.
/*backtest start: 2022-11-16 00:00:00 end: 2023-11-22 00:00:00 period: 1d basePeriod: 1h 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/ // @version=5 // Author = TradeAutomation strategy(title="Low-High-Trend Strategy", shorttitle="Low-High-Trend Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_order, commission_value=1, slippage=3, initial_capital = 25000, margin_long=50, margin_short=50, default_qty_type=strategy.percent_of_equity, default_qty_value=110) // Backtest Date Range Inputs // StartTime = input(defval=timestamp('01 Jan 2000 05:00 +0000'), title='Start Time') EndTime = input(defval=timestamp('01 Jan 2099 00:00 +0000'), title='End Time') InDateRange = true // Strategy Calculations // lowcriteria = ta.lowest(close, input(20, "Lowest Price Lookback", tooltip="The strategy will BUY when the price crosses over the lowest it has been in the last X amount of bars"))[1] highcriteria = ta.highest(close, input(10, "Highest Price Lookback", tooltip="If Take-Profit is not checked, the strategy will SELL when the price crosses under the highest it has been in the last X amount of bars"))[1] plot(highcriteria, color=color.green) plot(lowcriteria, color=color.red) // Take Profit // TakeProfitInput = input(true, "Sell with Take-Profit % intead of highest price cross?") TakeProfit = ta.crossover(close,strategy.position_avg_price*(1+(.01*input.float(8, title="Take Profit %", step=.25)))) // Operational Functions // TrendFilterInput = input(true, "Only buy when price is above EMA trend?") ema = ta.ema(close, input(200, "EMA Length")) TrendisLong = (close>ema) plot(ema) // Entry & Exit Functions// if (InDateRange and TrendFilterInput==true) strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria) and TrendisLong) if (InDateRange and TrendFilterInput==false) strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria)) if (InDateRange and TakeProfitInput==true) strategy.close("Long", when = TakeProfit) if (InDateRange and TakeProfitInput==false) strategy.close("Long", when = ta.crossunder(close, highcriteria)) if (not InDateRange) strategy.close_all()