- Dataran Strategy
- Strategi mengesan panggilan balik purata mudah alih
Strategi mengesan panggilan balik purata mudah alih
Penulis:
ChaoZhang, Tarikh: 2024-03-28 18:00:05
Tag:
Ringkasan
Strategi ini bertujuan untuk menggunakan dua garis purata bergerak yang berbeza untuk menangkap peluang pemulihan selepas penarikan balik pasaran. Strategi ini dilakukan apabila harga berada di atas garis purata jangka panjang dan terdapat penarikan balik ke arah garis purata jangka pendek. Strategi ini dilakukan apabila harga berada di atas garis purata jangka pendek atau menyentuh paras stop loss.
Prinsip-prinsip strategi
- Mengira purata bergerak (MA1 dan MA2) untuk dua kitaran yang berbeza, di mana MA1 adalah purata jangka panjang dan MA2 adalah purata jangka pendek.
- Apabila harga penutupan berada di atas MA1 dan di bawah MA2, maka tidak ada pegangan semasa, dan masa semasa adalah dalam jangka masa perdagangan yang ditetapkan.
- Mencatat harga bukaan pembelian dan mengira harga stop loss (iaitu peratusan penurunan harga bukaan i_stopPercent).
- Apabila harga penutupan kembali ke MA2 dan i_lowerClose adalah false, atau apabila harga penutupan jatuh dan harga stop loss, strategi berdamai.
- Jika i_lowerClose adalah benar, ia akan berduaan apabila harga penutupan lebih tinggi daripada MA2 dan harga penutupan garis K sebelumnya adalah lebih rendah daripada MA2.
Kelebihan Strategik
- Pengesanan trend: Menentukan trend keseluruhan semasa dan mencari peluang masuk dalam trend dengan menilai hubungan harga dengan kedudukan garis purata jangka panjang.
- Pembelian balik: Mencari peluang pembelian untuk membalikkan harga ke garis purata jangka pendek dalam trend menaik meningkatkan perbandingan harga titik beli.
- Perlindungan Stop Loss: Tetapkan harga stop loss, secara automatik menyeimbangkan apabila turun naik harga ke arah belakang mencapai tahap tertentu, untuk mengawal risiko penurunan secara berkesan.
- Parameter yang fleksibel: Pengguna boleh menetapkan parameter seperti kitaran purata, peratusan stop loss, sama ada harga penutupan K sebelum ini adalah lebih rendah daripada purata jangka pendek.
Risiko Strategik
- Pengoptimuman parameter: Tetapan parameter yang berbeza mempunyai kesan yang besar terhadap prestasi strategi, yang memerlukan pengoptimuman parameter dan pengukuran semula dalam persekitaran pasaran yang berbeza untuk mencari kombinasi parameter yang terbaik.
- Pasaran goyah: Dalam pasaran goyah, harga sering turun naik di antara garis purata jangka pendek dan panjang, yang boleh menyebabkan strategi kerap membuka kedudukan yang lebih tinggi dan kehilangan lebih banyak kos dagangan.
- Peralihan trend: Strategi boleh mengalami kerugian berturut-turut apabila trend pasaran berubah. Dalam kes ini, anda perlu menggunakan indikator atau isyarat lain untuk menilai perubahan trend dan menyesuaikan strategi pada masa yang sesuai.
- Kejadian Black Swan: Kejadian luar biasa yang besar dan tidak dapat diramalkan yang berlaku di pasaran boleh menyebabkan turun naik harga yang teruk dan strategi selepas memicu kerugian yang lebih besar.
Arah optimum strategi
- Pengesanan trend: Masukkan lebih banyak indikator pengesanan trend, seperti ADX, sebelum membuka dagangan untuk mengesahkan kekuatan dan arah trend semasa, meningkatkan ketepatan isyarat pembukaan dagangan.
- Stop loss dinamik: Sesuaikan stop loss secara dinamik mengikut indikator seperti kadar turun naik harga, ATR, dan lain-lain, dengan memaafkan stop loss yang sesuai apabila turun naik harga yang lebih besar, dan mengunci stop loss apabila turun naik harga yang lebih kecil.
- Pengurusan kedudukan: Mengikut faktor-faktor seperti kekuatan trend pasaran, kadar turun naik harga, saiz kedudukan yang dibuka setiap kali disesuaikan secara dinamik, meningkatkan kedudukan apabila trend kuat dan kadar turun naik sederhana, mengurangkan kedudukan apabila trend lemah atau kadar turun naik terlalu tinggi.
- Hedging berbilang ruang: Pertimbangkan untuk memantau isyarat kedua-dua ruang berbilang ruang pada masa yang sama, dan hedge kedudukan terbuka di pasaran atau kitaran yang berbeza untuk mengurangkan risiko keseluruhan strategi.
Ringkasan
Strategi memantau pulangan purata bergerak melalui hubungan kedudukan relatif dua garis rata-rata kitaran yang berbeza, menangkap peluang untuk membuat pulangan harga dalam trend menaik. Strategi ini sesuai untuk pasaran trend, dengan menetapkan parameter dan stop loss yang sesuai, keuntungan yang stabil dapat diperoleh dalam pasaran trend. Tetapi strategi ini menghadapi risiko tertentu ketika pasaran dan trend berubah.
/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © contapessoal_ivan
// @version=5
strategy("Pullback Strategy",
overlay=true,
initial_capital=1000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100, // 100% of balance invested on each trade
commission_type=strategy.commission.cash_per_contract,
commission_value=0.005) // Interactive Brokers rate
// Get user input
i_ma1 = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2 = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
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=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime = input(title="Start Filter", defval=timestamp("26 Jan 2023 00:00 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime = input(title="End Filter", defval=timestamp("26 Mar 2024 23:59 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")
// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(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.orange)
Lebih lanjut