Strategi ini menggabungkan indikator Parabolic SAR, MACD dan RSI untuk menerapkan perdagangan panjang dan pendek otomatis di beberapa kerangka waktu.
Indikator PSAR digunakan untuk menentukan arah harga dan titik pembalikan tren.
Indikator MACD menilai momentum harga. Garis MACD yang melintasi di atas garis SIGNAL ke atas adalah sinyal bullish sementara melintasi ke bawah adalah bearish.
Indikator RSI menilai kondisi overbought dan oversold. RSI di atas ambang adalah bullish sementara di bawahnya adalah bearish.
Gabungkan sinyal dari tiga indikator di atas untuk membentuk keputusan akhir panjang/pendek.
Adaptif menggunakan indikator Chop Index untuk menyaring pasar konsolidasi untuk menghindari whipsaws.
Gunakan ukuran posisi piramida terbalik untuk mengelola sasaran risiko dan keuntungan secara dinamis.
Kombinasi dari beberapa indikator menilai tren, momentum dan osilator meningkatkan akurasi.
Beradaptasi dengan kondisi pasar dengan menyaring pasar konsolidasi untuk mencegah terjebak dalam perangkap.
Manajemen risiko dan keuntungan yang dinamis melalui ukuran posisi piramida terbalik dengan berhenti dan batas yang adaptif.
Sangat dapat disesuaikan dengan parameter yang dapat disesuaikan untuk produk dan lingkungan pasar yang berbeda.
Mendukung beberapa kerangka waktu, fleksibel untuk perdagangan posisi intraday jangka pendek atau jangka menengah/panjang.
Keputusan panjang/pendek tergantung pada pengaturan parameter yang dapat menyebabkan kesalahan jika tidak tepat.
Kemungkinan sinyal palsu yang mengarah pada keputusan yang bertentangan dengan tren.
Pengaturan stop loss dan take profit yang tidak tepat dapat meningkatkan kerugian atau mengurangi keuntungan.
Membutuhkan pemantauan yang sering dan penyesuaian parameter yang mengakibatkan biaya intervensi manusia yang tinggi.
Tambahkan modul validasi model untuk mengevaluasi pengaturan parameter dan efektivitas sinyal.
Meningkatkan modul pembelajaran mesin untuk parameter otomatis dan model optimasi.
Mengonsumsi lebih banyak sumber data untuk memperkaya ruang fitur dan meningkatkan keputusan.
Mengembangkan sistem pemantauan dan pemeliharaan otomatis untuk mengurangi intervensi manusia.
Tambahkan evaluasi backtesting dan simulasi untuk memvalidasi kinerja strategi.
Strategi ini mewujudkan perdagangan kuantitatif otomatis dengan menggabungkan beberapa indikator teknis sistem berbasis aturan. Dengan ruang pengoptimalan yang besar dan fleksibilitas, ini cocok untuk penyesuaian parameter, perluasan fitur dan peningkatan pembelajaran mesin untuk lebih melayani perdagangan langsung.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 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/ // © vikris //@version=4 strategy("[VJ]Phoenix Force of PSAR +MACD +RSI", overlay=true, calc_on_every_tick = false,pyramiding=0) // ********** Strategy inputs - Start ********** // Used for intraday handling // Session value should be from market start to the time you want to square-off // your intraday strategy // Important: The end time should be at least 2 minutes before the intraday // square-off time set by your broker var i_marketSession = input(title="Market session", type=input.session, defval="0915-1455", confirm=true) // Make inputs that set the take profit % (optional) longProfitPerc = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=3) * 0.01 shortProfitPerc = input(title="Short Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=3) * 0.01 // Set stop loss level with input options (optional) longLossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=3) * 0.01 shortLossPerc = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=3) * 0.01 // ********** Strategy inputs - End ********** // ********** Supporting functions - Start ********** // A function to check whether the bar or period is in intraday session barInSession(sess) => time(timeframe.period, sess) != 0 // Figure out take profit price longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Determine stop loss price longStopPrice = strategy.position_avg_price * (1 - longLossPerc) shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc) // ********** Supporting functions - End ********** // ********** Strategy - Start ********** // See if intraday session is active bool intradaySession = barInSession(i_marketSession) // Trade only if intraday session is active //=================Strategy logic goes in here=========================== psar = sar(0.02,0.02,0.2) c1a = close > psar c1v = close < psar malen = input(50, title="MA Length") mm200 = sma(close, malen) c2a = close > mm200 c2v = close < mm200 fast = input(12, title="MACD Fast EMA Length") slow = input(26, title="MACD Slow EMA Length") [macd,signal,hist] = macd(close, fast,slow, 9) c3a = macd >= 0 c3v = macd <= 0 rsilen = input(7, title="RSI Length") th = input(50, title="RSI Threshold") rsi14 = rsi(close, rsilen) c4a = rsi14 >= th c4v = rsi14 <= th chopi = input(7, title="Chop Index lenght") ci = 100 * log10(sum(atr(1), chopi) / (highest(chopi) - lowest(chopi))) / log10(chopi) buy = c1a and c2a and c3a and c4a ? 1 : 0 sell = c1v and c2v and c3v and c4v ? -1 : 0 //Final Long/Short Condition longCondition = buy==1 and ci <50 shortCondition = sell==-1 and ci <50 //Long Strategy - buy condition and exits with Take profit and SL if (longCondition and intradaySession) stop_level = longStopPrice profit_level = longExitPrice strategy.entry("My Long Entry Id", strategy.long) strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level) //Short Strategy - sell condition and exits with Take profit and SL if (shortCondition and intradaySession) stop_level = shortStopPrice profit_level = shortExitPrice strategy.entry("My Short Entry Id", strategy.short) strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level) // Square-off position (when session is over and position is open) squareOff = (not intradaySession) and (strategy.position_size != 0) strategy.close_all(when = squareOff, comment = "Square-off") // ********** Strategy - End **********