Strategi Penembusan Harga Penutupan Peralihan dengan Stop Loss Osilating

Penulis:ChaoZhang, Tarikh: 2023-12-11 11:44:49
Tag:

img

Ringkasan

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.

Logika Strategi

Strategi ini adalah berdasarkan perkara utama berikut:

  1. 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.

  2. Apabila harga melonjak dan memecahkan swing tinggi baru-baru ini, ia dianggap memecahkan tahap rintangan, pergi panjang.

  3. Apabila harga turun dan memecahkan swing rendah baru-baru ini, ia dianggap memecahkan tahap sokongan, pergi pendek.

  4. Selepas masuk, garis stop loss ditetapkan dan terus menyesuaikan berdasarkan turun naik harga, membentuk mekanisme stop loss berayun.

  5. 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.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Keuntungan yang stabil. Mengikuti trend boleh membuat keuntungan yang stabil dari trend jangka panjang.

  2. Pengendalian risiko yang sangat baik, hentian berayun dan hentian perlindungan dengan cepat mengurangkan kerugian.

  3. Isyarat yang tepat. Resistance breakout panjang dan sokongan breakout pendek memberikan isyarat yang boleh dipercayai.

  4. Peraturan mudah, petunjuk dan isyarat mudah diikuti.

  5. Adaptif pasaran. Bekerja dengan baik di pelbagai produk dan keadaan pasaran.

Analisis Risiko

Beberapa risiko yang perlu diperhatikan untuk strategi ini:

  1. Risiko kegagalan penembusan. Harga mungkin mempunyai throwback atau pullback selepas penembusan awal, mencetuskan stop loss.

  2. Risiko pengoptimuman parameter. Penyesuaian parameter yang buruk membawa kepada terlalu banyak atau terlalu sedikit isyarat. Pengoptimuman memerlukan kewaspadaan.

  3. Risiko kegagalan penunjuk. Dalam keadaan yang melampau, EMA mungkin berhenti bekerja atau ketinggalan harga.

  4. 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.

Arahan pengoptimuman

Strategi ini boleh ditingkatkan lagi dari aspek berikut:

  1. Optimum jangka masa, menyesuaikan tempoh pengiraan MA dan corak harga, mencari kombinasi terbaik.

  2. Pengoptimuman kebolehsesuaian, penyesuaian parameter untuk produk yang berbeza.

  3. Uji kaedah stop loss yang lebih maju seperti trailing stop, Chandelier stop.

  4. Ambil pengoptimuman keuntungan. Ambil keuntungan adaptif atau eksponensial mengambil keluar untuk ganjaran yang lebih baik.

  5. Tambah penapis, tambah jumlah, penapis volatiliti untuk mengelakkan gangguan palsu.

  6. Meningkatkan isyarat masuk, menggabungkan lebih banyak petunjuk atau corak untuk mengesahkan entri.

Kesimpulan

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)


Lebih lanjut