Strategi ini menilai tren harga melalui perhitungan rata-rata bergerak cepat, rata-rata bergerak lambat, dan indikator MACD, dan membangun sinyal perdagangan salib emas dan salib mati.
Strategi ini terutama dibangun berdasarkan tiga indikator.
Pertama, ia menghitung rata-rata bergerak cepat dan dua rata-rata bergerak lambat. Ketika MA cepat naik di atas dua MA lambat, sinyal beli dihasilkan. Ketika MA cepat turun di bawah dua MA lambat, sinyal jual dihasilkan. Ini menilai hubungan antara tren jangka pendek dan jangka panjang untuk mewujudkan perdagangan salib emas dan salib mati.
Kedua, ini menghitung indikator MACD, termasuk garis MACD, garis sinyal dan histogram. Ketika histogram MACD > 0, itu adalah indikator bullish; ketika histogram MACD < 0, itu adalah indikator bearish. Ini membantu menilai keandalan sinyal golden cross dan dead cross.
Akhirnya, ia menggabungkan mekanisme mengambil keuntungan, stop loss dan trailing stop loss. mengambil keuntungan dan stop loss titik digunakan untuk mengunci dalam keuntungan dan mengendalikan risiko; trailing stop loss digunakan untuk terus melacak keuntungan.
Keuntungan dari strategi ini meliputi:
Ada juga beberapa risiko:
Solusinya adalah:
Strategi ini juga dapat dioptimalkan dari aspek berikut:
Singkatnya, ini adalah strategi yang sederhana namun efektif yang menggunakan golden cross, dead cross dan MACD untuk menilai tren dan mewujudkan trailing stop loss. Keuntungannya adalah pelacakan tren dan penguncian keuntungan dengan kustomisasi tinggi. Ini adalah strategi optimasi parameter universal yang cocok untuk instrumen perdagangan yang berbeda. Masih ada beberapa risiko dan ruang optimasi, tetapi secara keseluruhan ini adalah strategi perdagangan yang dapat diandalkan dan praktis.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-21 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy('The Puria Method', shorttitle = 'Puria',overlay = true) //=== GENERAL INPUTS === // short ma maFastSource = input(defval = close, title = "Fast MA Source") maFastLength = input(defval = 5, title = "Fast MA Period", minval = 1) // long ma 1 maSlow1Source = input(defval = low, title = "Slow MA1 Source") maSlow1Length = input(defval = 85, title = "Slow MA Period", minval = 1) // long ma 2 maSlow2Source = input(defval = low, title = "Slow MA2 Source") maSlow2Length = input(defval = 75, title = "Slow MA Period", minval = 1) //macd macdFastLength = input(defval = 12, title = "Fast MACD Period", minval = 1) macdSlowLength = input(defval = 26, title = "Slow MACD Period", minval = 1) macdSmaLength = input(defval = 9, title = "SMA MACD Period", minval = 1) // the risk management inputs inpTakeProfit = input(defval = 30, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 10, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 5, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // 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 // === SERIES SETUP === maFast = ema(maFastSource, maFastLength) maSlow1 = wma(maSlow1Source, maSlow1Length) maSlow2 = wma(maSlow2Source, maSlow2Length) [_, signal, histLine] = macd(close, macdFastLength, macdSlowLength, macdSmaLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50) slow1 = plot(maSlow1, title = "Slow MA1", color = red, linewidth = 2, style = line, transp = 50) slow2 = plot(maSlow2, title = "Slow MA2", color = red, linewidth = 2, style = line, transp = 50) // === LOGIC === signalUp = crossover(maFast, maSlow1) and crossover(maFast, maSlow2) and histLine > 0 signalDown = crossunder(maFast, maSlow1) and crossunder(maFast, maSlow2) and histLine < 0 // ===STRATEGY=== strategy.entry(id = "Long", long = true, when = signalUp) strategy.entry(id = "Short", long = false, when = signalDown) 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)