Strategi Pelarangan Tinggi Kemarin

Penulis:ChaoZhang, Tarikh: 2023-11-06 10:49:57
Tag:

img

Ringkasan

Strategi Penembusan Tinggi Semalam adalah sistem mengikuti trend yang berjalan lama apabila harga memecahkan di atas tinggi semalam, walaupun penembusan berlaku beberapa kali dalam sehari.

Prinsip

Strategi ini menggunakan beberapa penunjuk teknikal untuk isyarat masuk dan keluar:

  • ROC Filter - Strategi hanya diaktifkan apabila penutupan hari ini mempunyai perubahan harga peratus di atas ambang berbanding penutupan hari sebelumnya. Ini menapis pasaran yang tidak berubah-ubah.

  • Titik pencetus - Rekod harga tinggi, rendah dan terbuka hari ini.

  • Syarat kemasukan dan keluar - Selepas kemasukan, peratusan stop loss dan mengambil keuntungan ditetapkan. Hentian pengangkutan boleh diaktifkan untuk mengunci keuntungan. Keluar bersyarat apabila harga jatuh di bawah EMA rujukan.

  • Konfigurasi - Peratusan jurang untuk menjangkakan atau menangguhkan kemasukan.

Secara khusus, ia menjejaki harga tinggi hari ini untuk isyarat kemasukan. Masuk panjang apabila harga pecah di atas harga tinggi hari ini. Kemudian stop loss dan mengambil keuntungan keluar ditetapkan, dengan trailing stop diaktifkan. Alternatif keluar apabila harga melintasi di bawah EMA yang diberikan. Pengoptimuman dengan menetapkan peratusan jurang, menyesuaikan stop loss dan mengambil keuntungan nisbah untuk mengawal risiko, membolehkan trailing berhenti untuk mengunci keuntungan.

Analisis Kelebihan

Kelebihan strategi ini:

  • Mengikuti trend, menangkap keuntungan dari pergerakan trend.

  • Strategi keluar memberikan isyarat masuk yang jelas.

  • Mempertimbangkan harga yang tinggi hari ini, mengelakkan entri berturut-turut.

  • Hentikan kerugian dan ambil keuntungan membantu mengawal risiko.

  • Penghentian pengangkutan kunci dalam keuntungan.

  • Masa kemasukan boleh disesuaikan dengan pengoptimuman parameter untuk mengawal risiko.

  • Sederhana dan intuitif, mudah difahami dan dilaksanakan.

  • Berlaku untuk perdagangan panjang dan pendek.

Analisis Risiko

Risiko yang perlu dipertimbangkan:

  • Strategi breakout yang terdedah kepada whipsaws. Harga boleh segera berbalik selepas masuk.

  • Hanya berkesan untuk pasaran trend, berprestasi rendah dalam keadaan pelbagai.

  • Peratusan stop loss yang munasabah diperlukan, terlalu luas boleh meningkatkan kerugian.

  • Peratusan jurang yang munasabah diperlukan, terlalu agresif boleh meningkatkan kerugian.

  • Penembusan palsu boleh menyebabkan kehilangan yang tidak perlu, penyusunan diperlukan.

  • Volume perlu disokong selepas pecah.

  • Kesesuaian yang diperlukan antara parameter merentasi jangka masa.

Arahan pengoptimuman

Kemungkinan pengoptimuman:

  • Tambah penunjuk lain seperti jumlah, turun naik untuk mengelakkan whipsaws semasa pasaran berkisar.

  • Tambah penunjuk pemasangan lengkung untuk menentukan kekuatan trend, mengelakkan trend palsu.

  • Pengoptimuman dinamik jurang kemasukan berdasarkan turun naik pasaran.

  • Pengoptimuman dinamik stop loss dan mengambil keuntungan mengikut keadaan pasaran.

  • Set parameter yang berbeza untuk simbol dan jangka masa yang berbeza.

  • Pembelajaran mesin untuk TEST kesan parameter pada prestasi strategi.

  • Tambah fungsi Pilihan untuk mengoptimumkan konfigurasi.

  • Kebolehgunaan penyelidikan dalam keadaan pasaran yang berbeza.

  • Memperluaskan strategi jangka masa dan pelbagai aset.

Kesimpulan

Strategi ini menawarkan prestasi yang baik semasa pasaran trend berdasarkan penembusan konsep tinggi semalam. Tetapi risiko whipsaw dan kesukaran pengoptimuman parameter wujud. Pengoptimuman lanjut mungkin dengan menambah penghakiman, penyesuaian parameter dinamik, memperluaskan kepada strategi gabungan dll. Secara keseluruhan ia sesuai dengan trend jangka pendek, tetapi kawalan risiko dan penyesuaian parameter diperlukan.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
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/
// Author: © tumiza 999 
// © TheSocialCryptoClub

//@version=5

strategy("Yesterday's High v.17.07", overlay=true, pyramiding = 1,
         initial_capital=10000, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=10,
         slippage=1, backtest_fill_limits_assumption=1, use_bar_magnifier=true,
         commission_type=strategy.commission.percent, commission_value=0.075
         )

// -----------------------------------------------------------------------------
// ROC Filter
// -----------------------------------------------------------------------------

// f_security function by LucF for PineCoders available here: https://www.tradingview.com/script/cyPWY96u-How-to-avoid-repainting-when-using-security-PineCoders-FAQ/
f_security(_sym, _res, _src, _rep) => request.security(_sym, _res, _src[not _rep and barstate.isrealtime ? 1 : 0])[_rep or barstate.isrealtime ? 0 : 1]
high_daily = f_security(syminfo.tickerid, "D", high, false)

roc_enable = input.bool(false, "", group="ROC Filter from CloseD", inline="roc")
roc_threshold = input.float(1, "Treshold", step=0.5, group="ROC Filter from CloseD", inline="roc")

closed = f_security(syminfo.tickerid,"1D",close, false)
roc_filter= roc_enable ? (close-closed)/closed*100  > roc_threshold  : true


// -----------------------------------------------------------------------------
// Trigger Point 
// -----------------------------------------------------------------------------

open_session = ta.change(time('D'))
price_session = ta.valuewhen(open_session, open, 0)
tf_session = timeframe.multiplier <= 60

bgcolor(open_session and tf_session ?color.new(color.blue,80):na, title = "Session")

first_bar = 0
if open_session
    first_bar := bar_index

var max_today = 0.0
var min_today = 0.0
var high_daily1 = 0.0
var low_daily1 = 0.0
var today_open = 0.0

if first_bar
    high_daily1 := max_today
    low_daily1 := min_today
    today_open := open
    max_today := high
    min_today := low


if high >= max_today
    max_today := high

if low < min_today
    min_today := low


same_day  = today_open == today_open[1]

plot( timeframe.multiplier <= 240 and same_day ? high_daily1 : na, color= color.yellow , style=plot.style_linebr, linewidth=1, title='High line')
plot( timeframe.multiplier <= 240 and same_day ? low_daily1 : na, color= #E8000D , style=plot.style_linebr, linewidth=1, title='Low line')

// -----------------------------------------------------------------------------
// Strategy settings 
// -----------------------------------------------------------------------------

Gap = input.float(1,"Gap%", step=0.5, tooltip="Gap di entrata su entry_price -n anticipa entrata, con +n posticipa entrata", group = "Entry")
Gap2 = (high_daily1 * Gap)/100

sl  = input.float(3, "Stop-loss", step= 0.5,  group = "Entry")
tp  = input.float(9, "Take-profit", step= 0.5, group = "Entry")
stop_loss_price = strategy.position_avg_price * (1-sl/100)
take_price = strategy.position_avg_price * (1+tp/100)

sl_trl = input.float(2, "Trailing-stop", step = 0.5, tooltip = "Attiva trailing stop dopo che ha raggiunto...",group = "Trailing Stop Settings")//group = "Trailing Stop Settings")
Atrl= input.float(1, "Offset Trailing", step=0.5,tooltip = "Distanza dal prezzo", group = "Trailing Stop Settings")
stop_trl_price_cond = sl_trl * high/syminfo.mintick/100
stop_trl_price_offset_cond = Atrl * high/syminfo.mintick/100

stop_tick = sl * high/syminfo.mintick/100
profit_tick = tp * high/syminfo.mintick/100

mess_buy = "buy"
mess_sell = "sell"

// -----------------------------------------------------------------------------
// Entry - Exit - Close
// -----------------------------------------------------------------------------

if close < high_daily1 and roc_filter
    strategy.entry("Entry", strategy.long, stop = high_daily1 + (Gap2), alert_message = mess_buy)

ts_n  = input.bool(true, "Trailing-stop", tooltip = "Attiva o disattiva trailing-stop", group = "Trailing Stop Settings")
close_ema = input.bool(false, "Close EMA", tooltip = "Attiva o disattiva chiusura su EMA", group = "Trailing Stop Settings")
len1 = input.int(10, "EMA length", step=1, group = "Trailing Stop Settings")
ma1 = ta.ema(close, len1)

plot(ma1, title='EMA', color=color.new(color.yellow, 0))

if ts_n == true
    strategy.exit("Trailing-Stop","Entry",loss= stop_tick, stop= stop_loss_price, limit= take_price, trail_points = stop_trl_price_cond, trail_offset = stop_trl_price_offset_cond, comment_loss="Stop-Loss!!",comment_profit ="CASH!!", comment_trailing = "TRL-Stop!!", alert_message = mess_sell)
else
    strategy.exit("TP-SL", "Entry",loss= stop_tick, stop=stop_loss_price, limit= take_price, comment_loss= "Stop-loss!!!", comment_profit = "CASH!!", alert_message = mess_sell)

if close_ema == true and ta.crossunder(close,ma1)
    strategy.close("Entry",comment = "Close" , alert_message = mess_sell)



Lebih lanjut