
EintSimple Pullback Strategy adalah strategi masuk callback yang didasarkan pada persilangan dua rata-rata bergerak. Strategi ini pertama-tama menggunakan dua rata-rata bergerak jangka panjang dan jangka pendek untuk menghasilkan sinyal beli ketika rata-rata bergerak jangka pendek dari bawah menembus rata-rata bergerak jangka panjang.
Setelah masuk, BTC akan menunjukkan sinyal keluar jika harga kembali turun di bawah rata-rata bergerak jangka pendek. Selain itu, strategi ini juga menetapkan stop loss di luar lapangan, yang akan keluar dari posisi jika persentase stop loss yang ditetapkan tercapai dari titik tertinggi yang ditarik kembali.
Strategi ini didasarkan pada crossover emas dengan dua rata-rata bergerak untuk menentukan kapan masuk. Secara khusus, Anda harus memenuhi persyaratan berikut untuk membuka lebih banyak posisi:
Setelah memenuhi persyaratan di atas, strategi ini akan bekerja penuh.
Sinyal keluar didasarkan pada dua kondisi, satu adalah harga jatuh kembali ke bawah rata-rata bergerak jangka pendek, dan yang lain adalah persentase stop loss yang ditetapkan dari titik tertinggi untuk mundur. Kondisi keluar spesifik adalah sebagai berikut:
Strategi ini akan menghapus semua akun jika memenuhi salah satu dari dua kriteria tersebut.
Dengan menggunakan crossover dua rata-rata bergerak dan digabungkan dengan penilaian harga penutupan realistis, dapat secara efektif memfilter terobosan palsu.
Dengan menggunakan retracement entry, bisa masuk setelah harga saham membentuk short-term corner.
Ada pengaturan stop loss untuk membatasi penarikan maksimum.
Strategi crossover rata-rata bergerak ganda cenderung menghasilkan beberapa sinyal perdagangan, yang dapat mengejar kenaikan dan penurunan.
Setting parameter moving average yang tidak tepat dapat menyebabkan kurva menjadi terlalu halus atau terlalu sensitif.
Stop loss yang terlalu longgar akan memperbesar kerugian.
Uji kombinasi parameter rata-rata bergerak jangka panjang dengan panjang yang berbeda untuk menemukan parameter optimal.
Perbandingan tes menggunakan harga close out dan harga tipikal untuk menilai efek persilangan rata-rata bergerak.
Uji penambahan filter seperti volume transaksi atau indikator volatilitas.
Optimalkan pengembalian ke stop loss untuk menemukan pengaturan optimal.
EintSimple Pullback Strategy adalah strategi pengembalian rata-rata bergerak ganda yang sederhana dan praktis. Ini memanfaatkan fungsi indikasi rata-rata bergerak secara efektif, sambil mengkombinasikan penilaian harga penutupan entitas untuk memfilter sinyal palsu. Meskipun strategi ini rentan terhadap masalah perdagangan yang sering dan mengejar kenaikan dan penurunan, namun dapat disempurnakan lebih lanjut dengan pengoptimalan parameter dan penambahan filter.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy",
overlay=true,
initial_capital=50000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100)// 100% of balance invested on each trade
// Get user input
i_ma1 = input.int(title="MA 1 Length", defval=75, step=1, group="Strategy Parameters", tooltip="Long-term EMA")
i_ma2 = input.int(title="MA 2 Length", defval=9, step=1, group="Strategy Parameters", tooltip="Short-term EMA")
i_stopPercent = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose = input.bool(title="Exit On Lower Close", defval=true, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")
// Get indicator values
ma1 = ta.ema(close, i_ma1)
ma2 = ta.ema(close, i_ma2)
// Check filter(s)
f_dateFilter = true
// Check buy/sell conditions
var float buyPrice = 0
buyCondition = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition = strategy.position_size > 0 and stopDistance > i_stopPercent
// Enter positions
if buyCondition
strategy.entry(id="Long", direction=strategy.long)
if buyCondition[1]
buyPrice := open
// Exit positions
if sellCondition or stopCondition
strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
buyPrice := na
// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.fuchsia)