Strategi ini menggunakan indikator Moving Average Convergence Divergence (MACD) dan Relative Strength Index (RSI) untuk mengidentifikasi sinyal perdagangan untuk cryptocurrency.
Menghitung 12 hari EMA dan 26 hari EMA sebagai jangka pendek dan jangka panjang moving average.
Menghitung perbedaan antara EMA pendek dan panjang sebagai histogram MACD.
Menghitung EMA 9 hari dari MACD sebagai garis sinyal.
Hitung RSI 14 hari untuk menilai tingkat overbought/oversold.
Tampilan sinyal beli ketika MACD melintasi di atas garis sinyal dan RSI lebih besar dari 81.
Tampilkan sinyal jual ketika MACD melintasi di bawah garis sinyal dan RSI kurang dari 27.
Gunakan modul strategi built-in untuk masuk dan keluar.
MACD dapat mengidentifikasi tren dan perubahan, RSI menunjukkan tingkat overbought/oversold.
MACD di atas / di bawah garis nol menunjukkan arah / kekuatan tren jangka pendek vs jangka panjang.
RSI pada tingkat tinggi/rendah menunjukkan kemungkinan overheating/oversold. Membantu menemukan sinyal perdagangan.
Sinyal perdagangan yang jelas dan sederhana, mudah untuk melakukan perdagangan secara sistematis.
Parameter yang dapat disesuaikan untuk optimalisasi dan beradaptasi dengan kondisi pasar yang berbeda.
Data MACD dan RSI rentan terhadap kebocoran palsu dan anomali, dapat menghasilkan sinyal yang salah.
Parameter tetap mungkin tidak dapat beradaptasi dengan pasar yang berkembang, membutuhkan optimasi.
Sinyal mungkin terlambat, tidak dapat berdagang pada titik balik.
Hanya panjang/pendek, tidak bisa mendapatkan keuntungan dari pasar yang berbeda.
Uji kombinasi parameter yang berbeda untuk menemukan pengaturan yang optimal.
Tambahkan filter untuk menghindari perdagangan breakout palsu.
Tambahkan stop loss untuk membatasi kerugian di pasar satu sisi.
Mengelola ukuran posisi, peningkatan tren dan penurunan rentang.
Gabungkan dengan indikator lain untuk sinyal yang lebih akurat.
Uji pada instrumen dan kerangka waktu yang berbeda.
Strategi ini memanfaatkan kekuatan pelengkap dari MACD dan RSI untuk mengidentifikasi tren dan sinyal perdagangan. Parameter penyesuaian halus dan menambahkan filter dapat meningkatkan ketahanan dan profitabilitas. Mengatur stop dan ukuran posisi juga membantu memaksimalkan keuntungan dan meminimalkan risiko. Pro dan kontra dari MACD dan RSI membuat strategi ini lebih cocok untuk menangkap tren jangka menengah hingga panjang daripada perdagangan jangka pendek. Secara keseluruhan, ini adalah strategi sederhana dan praktis yang layak diuji dan dioptimalkan lebih lanjut untuk mencapai hasil backtest dan live yang lebih baik.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-12 04:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Revision: 5 // Author: @Hugo_Moriceau //study("Thesis_EMLYON_Withdate-strategies-Daily_Crypto_Moriceau_indicator",overlay=true) // Pyramide 10 order size 100, every tick strategy("Daily_Crypto_Moriceau_indicator",overlay=true) // === GENERAL INPUTS === fast = 12, slow = 26 fastMA = ema(close, fast) slowMA = ema(close, slow) macd = fastMA - slowMA signal = sma(macd, 9) rsi = rsi(close,14) tradeInvert = input(defval = false, title = "Invert Trade Direction?") // === LOGIC === // is fast ma above slow ma? aboveBelow = fastMA >= slowMA ? true : false // are we inverting our trade direction? tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false // === Plot Setting === //plot(fastMA,color=red) //plot(slowMA,color=blue) //barcolor(color=iff(fastMA > slowMA, yellow, na)) //barcolor(color=iff(fastMA < slowMA, black, na)) barcolor(color=iff(macd > 0.12*close , fuchsia, na)) barcolor(color=iff(macd < -0.1*close , lime, na)) dataS= macd > 0.125 and rsi>81 and fastMA > slowMA dataB= macd < -0.1 and rsi<27 and fastMA< slowMA plotchar(dataB, char='B',color=black,size = size.tiny,location = location.belowbar,transp= 0) plotchar(dataS, char='S',color=black,size = size.tiny,location = location.abovebar,transp= 0) // === BACKTEST RANGE === FromMonth = input(defval = 01, title = "From Month", minval = 1) FromDay = input(defval = 01, title = "From Day", minval = 1) FromYear = input(defval = 2017, title = "From Year", minval = 2014) ToMonth = input(defval = 2, title = "To Month", minval = 1) ToDay = input(defval = 10, title = "To Day", minval = 1) ToYear = input(defval = 2019, title = "To Year", minval = 2018) // === STRATEGY RELATED INPUTS ===+ // the risk management inputs inpTakeProfit = input(defval = 20000, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 1500, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 100, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // === RISK MANAGEMENT VALUE PREP === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na // === STRATEGY - LONG POSITION EXECUTION === enterLong() => not tradeDirection[1] and tradeDirection exitLong() => tradeDirection[1] and not tradeDirection strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in strategy.close(id = "Long", when = exitLong()) // ...and when to get out // === STRATEGY - SHORT POSITION EXECUTION === enterShort() => tradeDirection[1] and not tradeDirection exitShort() => not tradeDirection[1] and tradeDirection strategy.entry(id = "Short", long = false, when = enterShort()) strategy.close(id = "Short", when = exitShort()) // === STRATEGY RISK MANAGEMENT EXECUTION === // finally, make use of all the earlier values we got prepped strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)