Strategi ini menggunakan isyarat penembusan harga dan mekanisme hentian kerugian berayun untuk pengurusan risiko. Ia menjadi panjang apabila harga memecahkan rintangan dan menjadi pendek apabila harga memecahkan sokongan. Pada masa yang sama, hentian kerugian berayun dan hentian mengambil keuntungan digunakan untuk kawalan risiko yang lebih baik.
Strategi ini adalah berdasarkan perkara utama berikut:
Menggunakan MA untuk menentukan arah trend. MA yang cepat dan perlahan digambarkan, MA yang cepat melintasi di atas MA yang perlahan menandakan trend bull, sementara melintasi di bawah isyarat trend bear.
Apabila harga melonjak dan memecahkan swing tinggi baru-baru ini, ia dianggap memecahkan tahap rintangan, pergi panjang.
Apabila harga turun dan memecahkan swing rendah baru-baru ini, ia dianggap memecahkan tahap sokongan, pergi pendek.
Selepas masuk, garis stop loss ditetapkan dan terus menyesuaikan berdasarkan turun naik harga, membentuk mekanisme stop loss berayun.
Hentikan kerugian dan ambil keuntungan keluar. Hentikan kerugian keluar kawalan risiko, mengambil keuntungan kunci dalam keuntungan.
Secara khusus, ia menggunakan purata harga tinggi dan rendah sebagai sumber, merangka EMA pantas dan perlahan untuk menentukan trend. Apabila EMA pantas melebihi EMA perlahan dan isyarat pecah rintangan muncul, ia pergi panjang. Apabila EMA pantas jatuh di bawah EMA perlahan dan pecah sokongan muncul, ia pergi pendek. Selepas masuk, harga terendah dalam tempoh tertentu ditetapkan sebagai garis stop loss, terus menyesuaikan apabila harga meningkat.
Kelebihan strategi ini termasuk:
Keuntungan yang stabil. Mengikuti trend boleh membuat keuntungan yang stabil dari trend jangka panjang.
Pengendalian risiko yang sangat baik, hentian berayun dan hentian perlindungan dengan cepat mengurangkan kerugian.
Isyarat yang tepat. Resistance breakout panjang dan sokongan breakout pendek memberikan isyarat yang boleh dipercayai.
Peraturan mudah, petunjuk dan isyarat mudah diikuti.
Adaptif pasaran. Bekerja dengan baik di pelbagai produk dan keadaan pasaran.
Beberapa risiko yang perlu diperhatikan untuk strategi ini:
Risiko kegagalan penembusan. Harga mungkin mempunyai throwback atau pullback selepas penembusan awal, mencetuskan stop loss.
Risiko pengoptimuman parameter. Penyesuaian parameter yang buruk membawa kepada terlalu banyak atau terlalu sedikit isyarat. Pengoptimuman memerlukan kewaspadaan.
Risiko kegagalan penunjuk. Dalam keadaan yang melampau, EMA mungkin berhenti bekerja atau ketinggalan harga.
Risiko pembalikan trend: memegang kedudukan menentang trend membawa kerugian yang terkumpul apabila trend berbalik.
Penyesuaian parameter yang betul, kehilangan hentian yang luas, mengikuti peraturan yang ketat dapat mengurangkan risiko di atas.
Strategi ini boleh ditingkatkan lagi dari aspek berikut:
Optimum jangka masa, menyesuaikan tempoh pengiraan MA dan corak harga, mencari kombinasi terbaik.
Pengoptimuman kebolehsesuaian, penyesuaian parameter untuk produk yang berbeza.
Uji kaedah stop loss yang lebih maju seperti trailing stop, Chandelier stop.
Ambil pengoptimuman keuntungan. Ambil keuntungan adaptif atau eksponensial mengambil keluar untuk ganjaran yang lebih baik.
Tambah penapis, tambah jumlah, penapis volatiliti untuk mengelakkan gangguan palsu.
Meningkatkan isyarat masuk, menggabungkan lebih banyak petunjuk atau corak untuk mengesahkan entri.
Ini adalah strategi breakout yang berkesan dengan kawalan risiko yang baik, model keuntungan yang stabil dan aliran logik yang mudah. Penyesuaian halus dan peningkatan modular dapat menjadikannya lebih kukuh dan beradaptasi dengan pasaran yang kompleks. Ia mempunyai potensi aplikasi yang besar di lebih banyak produk.
/*backtest start: 2023-12-03 00:00:00 end: 2023-12-10 00:00:00 period: 30m 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/ // © EduardoMattje //@version=4 strategy("Reversal closing price", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000) src = input(hl2, "Price source") order_direction = input("Both", "Order direction", options=["Both", "Long", "Short"]) // EMA calculation and plot ema_long_period = input(80, "EMA long period") ema_short_period = input(8, "EMA short period") ema_long = ema(src, ema_long_period) ema_short = ema(src, ema_short_period) ema_bull = ema_short > ema_long ema_bear = ema_short < ema_long plot(ema_long, "EMA long", ema_bull ? color.green : color.red, 3) plot(ema_short, "EMA short", ema_bull ? color.green : color.red, 3) // Settings risk_reward_ratio = input(2.0, "Risk to reward ratio", minval=1.0, step=0.1) stop_lookback = input(3, "Stoploss candle lookback", minval=1) ema_cross_stop = input(true, "Close if EMA crosses in oposite direction") allow_retracing = input(true, "Allow price retracing") // RCP calculation rcp_bull = low[0] < low[1] and low[0] < low[2] and close[0] > close[1] rcp_bear = high[0] > high[1] and high[0] > high[2] and close[0] < close[1] // Order placement in_market = strategy.position_size != 0 long_condition = rcp_bull and ema_bull and not in_market and order_direction != "Short" short_condition = rcp_bear and ema_bear and not in_market and order_direction != "Long" bought = strategy.position_size[0] > strategy.position_size[1] and strategy.position_size[1] == 0 sold = strategy.position_size[0] < strategy.position_size[1] and strategy.position_size[1] == 0 closed = not in_market and in_market[1] long_position = strategy.position_size > 0 short_position = strategy.position_size < 0 buy_price = high + syminfo.mintick sell_price = low - syminfo.mintick if long_condition strategy.entry("Long", true, stop=buy_price) if short_condition strategy.entry("Short", false, stop=sell_price) if allow_retracing better_price_long = barssince(closed) > barssince(long_condition) and barssince(long_condition) >= 1 and not in_market and ema_bull and buy_price < valuewhen(long_condition, buy_price, 0) and buy_price[0] < buy_price[1] if better_price_long strategy.cancel("Long") strategy.entry("Long", true, stop=buy_price) better_price_short = barssince(closed) > barssince(short_condition) and barssince(short_condition) >= 1 and not in_market and ema_bear and sell_price > valuewhen(short_condition, sell_price, 0) and sell_price[0] > sell_price[1] if better_price_short strategy.cancel("Short") strategy.entry("Short", false, stop=sell_price) // Stoploss orders stop_price = long_position ? valuewhen(bought, lowest(stop_lookback)[1] - syminfo.mintick, 0) : short_position ? valuewhen(sold, highest(3)[1] + syminfo.mintick, 0) : na stop_comment = "Stoploss triggered" strategy.close("Long", low <= stop_price, stop_comment) strategy.close("Short", high >= stop_price, stop_comment) plot(stop_price, "Stop price", color.red, 2, plot.style_linebr) // EMA cross close orders if ema_cross_stop if long_position and ema_bear strategy.close("Long", comment=stop_comment) if short_position and ema_bull strategy.close("Short", comment=stop_comment) // Take profit orders stop_ticks = abs(strategy.position_avg_price - stop_price) take_profit_price = long_position ? valuewhen(bought, strategy.position_avg_price + stop_ticks * risk_reward_ratio, 0) : short_position ? valuewhen(sold, strategy.position_avg_price - (stop_ticks * risk_reward_ratio), 0) : na target_comment = "Take profit" strategy.close("Long", high >= take_profit_price, target_comment) strategy.close("Short", low <= take_profit_price, target_comment) plot(take_profit_price, "Target price", color.green, 2, plot.style_linebr)