Strategi penutupan harga penutupan pembalikan dengan stop loss osilasi

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

img

Gambaran umum

Strategi ini memanfaatkan sinyal price breakout dan mekanisme stop loss osilasi untuk manajemen risiko. Ini panjang ketika harga memecahkan resistance dan pendek ketika harga memecahkan support. Pada saat yang sama, stop loss osilasi dan profit taking stop diterapkan untuk pengendalian risiko yang lebih baik.

Logika Strategi

Strategi ini didasarkan pada poin-poin utama berikut:

  1. Menggunakan MA untuk menentukan arah tren. MA cepat dan lambat digambarkan, MA cepat melintasi di atas sinyal MA lambat tren bull, sementara melintasi di bawah sinyal bear trend.

  2. Ketika harga melonjak dan melanggar swing high baru-baru ini, itu dianggap melanggar level resistance, pergi panjang.

  3. Ketika harga turun dan melanggar swing low baru-baru ini, itu dianggap melanggar level support, pergi pendek.

  4. Setelah masuk, garis stop loss ditetapkan dan terus menyesuaikan berdasarkan fluktuasi harga, membentuk mekanisme stop loss yang berosilasi.

  5. Stop loss dan take profit exit. stop loss exit mengendalikan risiko, take profit mengunci keuntungan.

Secara khusus, ia menggunakan rata-rata harga tinggi dan rendah sebagai sumber, memetakan EMA cepat dan lambat untuk menentukan tren. Ketika EMA cepat naik di atas EMA lambat dan sinyal breakout resistensi muncul, ia pergi panjang. Ketika EMA cepat turun di bawah EMA lambat dan support breakout muncul, ia pergi pendek. Setelah masuk, harga terendah dalam periode tertentu ditetapkan sebagai garis stop loss, terus menyesuaikan seiring kenaikan harga. Take profit line dipetakan untuk mengunci keuntungan. Strategi secara efektif mengendalikan risiko sementara keuntungan dari tren.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Mengikuti tren dapat menghasilkan keuntungan yang stabil dari tren jangka panjang.

  2. Kontrol risiko yang sangat baik, stop osilasi dan stop pelindung dengan cepat mengurangi kerugian.

  3. Sinyal yang akurat. resistensi long breakout dan support breakout short memberikan sinyal yang handal.

  4. Peraturan sederhana, indikator dan sinyal yang mudah diikuti.

  5. Adaptif pasar bekerja dengan baik di berbagai produk dan kondisi pasar.

Analisis Risiko

Beberapa risiko yang perlu diperhatikan untuk strategi ini:

  1. Risiko kegagalan breakout. harga mungkin memiliki throwback atau pullback setelah awal breakout, memicu stop loss.

  2. Risiko optimasi parameter. pengaturan parameter yang buruk menyebabkan terlalu banyak atau terlalu sedikit sinyal. optimasi membutuhkan kewaspadaan.

  3. Dalam kondisi ekstrem, EMA dapat berhenti bekerja atau tertinggal dari harga.

  4. Risiko pembalikan tren. memegang posisi melawan tren membawa akumulasi kerugian ketika tren berbalik.

Pengaturan parameter yang tepat, kehilangan stop yang luas, mengikuti aturan yang ketat dapat sebagian besar mengurangi risiko di atas.

Arahan Optimasi

Strategi ini dapat ditingkatkan lagi dari aspek berikut:

  1. Optimasi kerangka waktu, menyesuaikan periode perhitungan MAs dan pola harga, menemukan kombinasi terbaik.

  2. Optimasi kemampuan beradaptasi, menyesuaikan parameter untuk produk yang berbeda.

  3. Uji metode stop loss yang lebih canggih seperti trailing stop, Chandelier stop.

  4. Ambil optimasi keuntungan. Mengadopsi adaptif atau keuntungan eksponensial mengambil keluar untuk imbalan yang lebih baik.

  5. Tambahkan filter, tambahkan volume, volatilitas filter untuk menghindari kebocoran palsu.

  6. Meningkatkan sinyal masuk, menggabungkan lebih banyak indikator atau pola untuk mengkonfirmasi entri.

Kesimpulan

Ini adalah strategi breakout yang efektif dengan pengendalian risiko yang baik, model keuntungan yang stabil dan aliran logika yang lurus. fine-tuning dan peningkatan modular dapat membuatnya lebih kuat dan beradaptasi dengan pasar yang kompleks.


/*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 banyak