Strategi ini adalah strategi perdagangan untuk menilai titik jual beli mata wang kripto berdasarkan purata bergerak agregat harga selisih (MACD) dan indeks kekuatan relatif (RSI). Ia memberi isyarat untuk keputusan perdagangan dengan mengira perbezaan purata bergerak jangka pendek dan jangka panjang, digabungkan dengan RSI untuk menilai trend pasaran dan overbought dan oversold.
Hitung EMA 12 hari dan EMA 26 hari sebagai purata bergerak jangka pendek dan jangka panjang
Mengira perbezaan antara EMA jangka pendek dan jangka panjang sebagai carta MACD
Hitung EMA 9 hari MACD sebagai garis isyarat
Mengambil RSI 14 hari untuk menilai kegemilangan.
Apabila MACD melintasi garis isyarat dan RSI lebih besar daripada 81, isyarat beli ditunjukkan
Apabila MACD menembusi garisan isyarat dan RSI kurang daripada 27, menunjukkan isyarat jual
Masuk dan keluar menggunakan modul dasar terbina dalam
Penunjuk MACD dapat mengenal pasti trend dan perubahan trend, penunjuk RSI dapat menunjukkan fenomena overbought dan oversold, yang digabungkan dapat meningkatkan ketepatan isyarat perdagangan
Perubahan atas dan bawah pada MACD 0 mewakili arah dan kekuatan perubahan trend jangka pendek dan jangka panjang, yang memberi dasar untuk menentukan arah pasaran
Kawasan RSI yang tinggi mewakili kemungkinan terlalu panas dan terlalu banyak membeli, RSI yang rendah mewakili kemungkinan terlalu banyak menjual, memberi asas untuk mencari tempat untuk membeli dan menjual
Isyarat perdagangan mudah dan jelas, mudah untuk menjalankan perdagangan mengikut peraturan
Parameter yang boleh dikonfigurasi untuk dioptimumkan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
Data yang digunakan oleh MACD dan RSI terdedah kepada terobosan palsu dan kesan data yang tidak normal, yang mungkin memberi isyarat yang salah
Tetapan parameter tetap mungkin tidak dapat disesuaikan dengan perubahan pasaran dan memerlukan pengoptimuman
Sinyal beli-belah mungkin terlewat dan tidak dapat dibeli dan dijual di titik perubahan
Posisi hanya kosong, pilihan kedua, tidak dapat memanfaatkan kejatuhan
Uji kombinasi parameter yang berbeza untuk mencari parameter yang optimum
Menambah syarat penapisan tambahan untuk mengelakkan penembusan palsu
Meningkatkan strategi penangguhan kerugian dan mengurangkan kerugian dalam perdagangan unilateral
Meningkatkan pengurusan kedudukan, menaikkan kedudukan semasa trend, menurunkan kedudukan semasa guncangan
Mencari titik jual beli yang lebih tepat dengan penunjuk lain
Ujian terhadap pelbagai jenis dan tempoh masa
Strategi ini menggunakan kelebihan saling melengkapi kedua-dua indikator MACD dan RSI untuk mengenal pasti arah trend dan titik jual beli. Kestabilan strategi dan faktor keuntungan boleh diperbaiki dengan mengoptimumkan parameter dan menambah syarat penapisan. Penyesuaian yang sesuai untuk menghentikan kerugian dan pengurusan kedudukan juga dapat membantu meningkatkan tahap keuntungan dan mengurangkan risiko.
/*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)