Strategi Cycle Position Trend Following adalah strategi perdagangan kuantitatif yang menentukan arah tren berdasarkan 200-hari Simple Moving Average (SMA). Strategi ini menyediakan dua mode -
Indikator inti dari strategi ini adalah SMA 200 hari.
Mengikuti Uptrend Mode: Pergi panjang ketika close berada di atas SMA 200 hari; posisi close ketika stop loss atau take profit dipicu.
Mengikuti Mode Downtrend: Pergi panjang ketika close berada di bawah SMA 200 hari; posisi close ketika stop loss atau take profit dipicu.
Kondisi panjang didefinisikan dalamlongCondition
variabel berdasarkan hubungan harga penutupan dengan SMA 200 hari.closeCondition
variabel berdasarkan stop loss, take profit dan SMA.
Secara khusus,strategy.entry
digunakan untuk membuka posisi panjang ketika kondisi panjang terpenuhi.strategy.exit
digunakan untuk menutup posisi ketika kondisi close dipicu.
Keuntungan dari strategi ini meliputi:
Logika sederhana dan jelas yang mudah dimengerti.
Menyediakan dua mode opsional yang sesuai dengan lingkungan pasar yang berbeda.
Stop loss dan take profit yang dapat disesuaikan memungkinkan penyesuaian profil risiko-manfaat.
Menggunakan indikator SMA 200 hari yang terkenal untuk menentukan arah tren.
Menghasilkan sinyal perdagangan otomatis tanpa intervensi manual.
Risiko dari strategi ini meliputi:
Terlalu bergantung pada satu indikator, rentan terhadap sinyal palsu.
Stop loss dan take profit level yang terlalu ketat atau terlalu luas dapat menyebabkan stop out prematur atau kehilangan titik keluar yang ideal.
Menggunakan harga dekat untuk sinyal memiliki bias harga penutupan. Pertimbangkan untuk menggunakan tubuh lilin atau menambahkan konfirmasi sinyal.
Tidak memperhitungkan biaya perdagangan.
Beberapa cara untuk meningkatkan strategi:
Tambahkan indikator lain untuk mengkonfirmasi sinyal dan menghindari sinyal palsu, misalnya MACD.
Optimalkan parameter stop loss dan take profit untuk menemukan kombinasi optimal melalui backtesting.
Tambahkan filter tren untuk hanya berdagang dalam tren yang didefinisikan dengan baik, misalnya ADX.
Meningkatkan metode masuk dengan mempertimbangkan tubuh lilin atau menambahkan konfirmasi.
Pertimbangkan volume perdagangan untuk memvalidasi keandalan sinyal.
Uji periode SMA yang berbeda untuk menemukan parameter yang optimal.
Pada akhirnya, strategi ini memiliki logika yang jelas dan mudah dimengerti dengan nilai praktis. Tetapi ketergantungan pada satu indikator memiliki keterbatasan. Lebih banyak kondisi harus ditambahkan untuk konfirmasi. Parameter juga perlu diuji dan dioptimalkan untuk kinerja live 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)