Siklus Posisi Trend Following Strategy adalah strategi perdagangan kuantitatif yang menentukan arah trend berdasarkan Purata Bergerak Sederhana (SMA) 200 hari. Ia menyediakan dua mod -
Indikator teras strategi ini adalah SMA 200 hari. Strategi ini mempunyai dua mod:
Mengikuti Uptrend Mode: Pergi panjang apabila penutupan berada di atas SMA 200 hari; kedudukan penutupan apabila stop loss atau mengambil keuntungan dicetuskan.
Mengikuti Mod Downtrend: Pergi panjang apabila penutupan di bawah SMA 200 hari; kedudukan penutupan apabila stop loss atau mengambil keuntungan dicetuskan.
Keadaan panjang ditakrifkan dalamlongCondition
pemboleh ubah berdasarkan hubungan harga penutupan dengan SMA 200 hari.closeCondition
pembolehubah berdasarkan stop loss, mengambil keuntungan dan SMA.
Secara khusus,strategy.entry
digunakan untuk membuka kedudukan panjang apabila syarat panjang dipenuhi.strategy.exit
digunakan untuk menutup kedudukan apabila keadaan menutup diaktifkan.
Kelebihan strategi ini termasuk:
Logik yang mudah difahami.
Menyediakan dua mod pilihan untuk memenuhi persekitaran pasaran yang berbeza.
Stop loss dan mengambil keuntungan yang boleh disesuaikan membolehkan penyesuaian profil risiko-balasan.
Menggunakan penunjuk SMA 200 hari yang terkenal untuk menentukan arah trend.
Menghasilkan isyarat perdagangan automatik tanpa campur tangan manual.
Risiko strategi ini termasuk:
Terlalu bergantung pada satu indikator, cenderung kepada isyarat palsu.
Hentikan kerugian dan ambil tahap keuntungan yang terlalu ketat atau terlalu luas boleh membawa kepada hentian awal atau kehilangan titik keluar yang ideal. Parameter memerlukan ujian dan pengoptimuman yang betul.
Menggunakan harga dekat untuk isyarat mempunyai kecenderungan harga penutupan. Pertimbangkan untuk menggunakan badan lilin atau menambah pengesahan isyarat.
Tidak memperhitungkan kos dagangan. Perlu menyimpan kos apabila pergi hidup.
Beberapa cara untuk meningkatkan strategi:
Tambah penunjuk lain untuk mengesahkan isyarat dan mengelakkan isyarat palsu, contohnya MACD.
Mengoptimumkan parameter stop loss dan mengambil keuntungan untuk mencari kombinasi optimum melalui backtesting.
Tambah penapis trend untuk hanya berdagang dalam trend yang ditakrifkan dengan baik, contohnya ADX.
Meningkatkan kaedah kemasukan dengan mempertimbangkan badan lilin atau menambah pengesahan.
Pertimbangkan jumlah dagangan untuk mengesahkan kebolehpercayaan isyarat.
Uji tempoh SMA yang berbeza untuk mencari parameter optimum.
Kesimpulannya, strategi ini mempunyai logik yang jelas dan mudah difahami dengan nilai praktikal. Tetapi bergantung pada satu penunjuk mempunyai batasan. Lebih banyak syarat harus ditambah untuk pengesahan. Parameter juga perlu diuji dan dioptimumkan untuk prestasi langsung yang lebih baik.
/*backtest start: 2022-11-10 00:00:00 end: 2023-11-16 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/ // © I11L //@version=5 strategy("Cycle Position Trading", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false) // Input for selecting the mode mode = input.string("Buy Uptrend", options = ["Buy Uptrend", "Buy Downtrend"]) // Input for customizing stop loss and take profit levels stopLoss = input.float(0.9, title="Stop Loss (SL) level", step=0.01) takeProfit = input.float(1.1, title="Take Profit (TP) level", step=0.01) // Calculate the 200-day Simple Moving Average (SMA) sma = ta.sma(close, 200) // Plot the SMA on the chart plot(sma) // Define the conditions for entering a long position based on the selected mode longCondition = mode == "Buy Uptrend" ? close > sma and close[5] > sma : close < sma // Define the conditions for closing a position based on the selected mode closeCondition = mode == "Buy Uptrend" ? (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close < sma * 0.95) : (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close > sma * 1.05) // Execute a long position if the longCondition is met if (longCondition) strategy.entry("My Long Entry Id", strategy.long) // Close the position if the closeCondition is met if (closeCondition) strategy.exit("Exit", limit = close)