
Strategi ini memungkinkan penilaian terhadap tren harga dengan menghitung rata-rata bergerak cepat, rata-rata bergerak lambat, dan MACD, membangun sinyal perdagangan garpu emas dan garpu mati, dan menggabungkan stop loss dan stop loss untuk mengunci keuntungan, memungkinkan pelacakan terus menerus terhadap tren.
Strategi ini dibangun berdasarkan tiga indikator utama:
Pertama, perhitungan rata-rata bergerak cepat dan dua rata-rata bergerak lambat. Ketika rata-rata bergerak cepat melewati dua rata-rata bergerak lambat, sinyal beli dihasilkan. Ketika rata-rata bergerak cepat melewati dua rata-rata bergerak lambat, sinyal jual dihasilkan.
Kedua, menghitung indikator MACD, termasuk garis MACD, garis sinyal, dan grafik lurus. Untuk indikator multihead jika MACD > 0, dan indikator kosong jika MACD < 0. Ini membantu menilai keandalan sinyal Goldilocks.
Terakhir, kombinasi dengan Stop Loss Tracking Stop Loss Mechanism. Menggunakan Stop Loss dan Stop Loss Point untuk mengunci keuntungan dan mengendalikan risiko. Menggunakan Tracking Stop Loss untuk melacak keuntungan.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Solusi untuk menghadapi risiko:
Strategi ini juga dapat dioptimalkan dalam beberapa hal:
Strategi ini secara keseluruhan adalah strategi sederhana dan efektif untuk menentukan tren dengan menggunakan indikator MACD dan MACD untuk melacak stop loss. Keunggulannya adalah pelacakan tren dan penguncian keuntungan, kemampuan kustomisasi yang kuat, berlaku untuk berbagai varietas, merupakan strategi optimasi parameter generik. Ada beberapa risiko dan ruang untuk dioptimalkan, tetapi secara keseluruhan merupakan strategi perdagangan praktis yang andal.
/*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)