Berdasarkan strategi pelacakan ledakan momentum


Tanggal Pembuatan: 2024-03-01 11:08:43 Akhirnya memodifikasi: 2024-03-01 11:08:43
menyalin: 0 Jumlah klik: 826
1
fokus pada
1617
Pengikut

Berdasarkan strategi pelacakan ledakan momentum

Ringkasan

Strategi pelacakan ledakan momentum menentukan harga terobosan dengan menghitung persentase perubahan harga, menggabungkan sinyal penyaringan lalu lintas, dan mencapai titik terobosan dengan probabilitas tinggi untuk menangkap tren. Setelah memicu sinyal beli, strategi ini menggunakan cara pelacakan harga stop loss untuk mengunci keuntungan dan menghindari penarikan balik yang terlalu besar.

Prinsip Strategi

Strategi ini didasarkan pada beberapa indikator:

  1. Persentase perubahan harga (isFourPercentBull) - menghitung persentase perubahan harga penutupan relatif terhadap harga penutupan hari sebelumnya untuk menentukan apakah harga berhasil menerobos;

  2. Rasio harga penutupan dengan harga tertinggi - menghitung rasio harga penutupan dengan harga tertinggi untuk menilai kekuatan harga yang terjatuh;

  3. Volume - Memerlukan volume transaksi yang lebih besar dari hari sebelumnya untuk memastikan terobosan yang efektif;

  4. 200-Day Simple Moving Average (SMA) - Meminta harga close dan open berada di atas garis 200-day untuk menentukan arah tren.

Ketika beberapa kondisi di atas terpenuhi secara bersamaan, sinyal beli dikeluarkan. Kemudian, strategi ini mengadopsi stop loss dan kunci keuntungan dengan cara pelacakan harga. Secara khusus, rumus perhitungan untuk melacak garis stop loss adalah:

trailPrice = close * (100 - trailPercent) / 100

TrailPercent adalah persentase tracking stop loss yang dapat dikonfigurasi. Dalam Ensure, setiap kali harga naik, stop loss juga akan naik, sehingga mengunci keuntungan.

Keunggulan Strategis

Ini adalah strategi terobosan yang khas, dengan keuntungan berikut:

  1. Filter multi-kondisi untuk memastikan efektivitas penembusan dan menghindari penembusan palsu;
  2. Menggunakan harga tracking stop loss, yang dapat secara aktif menghentikan kerugian dan mengunci keuntungan, untuk menghindari penarikan balik sebanyak mungkin;
  3. Strategi logisnya sederhana dan jelas, mudah dipahami dan dioptimalkan.

Risiko Strategis

Strategi ini juga memiliki beberapa risiko:

  1. Probabilitas kegagalan penembusan masih ada dan kerugian tidak dapat sepenuhnya dihindari;
  2. Terlalu radikal dapat menyebabkan gangguan yang sering terjadi;
  3. Setting parameter yang tidak tepat dapat menyebabkan frekuensi transaksi yang terlalu tinggi atau sinyal yang hilang.

Solusi untuk menghadapi risiko adalah:

  1. Mengoptimalkan parameter, mengurangi stop loss, dan memastikan ada ruang yang cukup;
  2. Kondisi-kondisi untuk terobosan harus dilonggarkan secara tepat untuk memastikan bahwa tidak ada yang melewatkan tren yang jelas.
  3. Uji varietas untuk menilai stabilitas strategi.

Arah optimasi

Mengingat frekuensi stop loss yang lebih tinggi dari strategi ini, beberapa arah dapat dioptimalkan lebih lanjut:

  1. Cobalah cara lain untuk melacak stop loss, seperti melacak rata-rata, ATR, dan volatilitas.
  2. Menambahkan algoritma pembelajaran mesin untuk menentukan kombinasi parameter terobosan yang lebih efektif berdasarkan pelatihan data historis;
  3. Meningkatkan kriteria penilaian tambahan berdasarkan volume transaksi yang terobosan untuk memastikan terobosan yang efektif;
  4. Evaluasi perbedaan pengaturan parameter dari berbagai varietas untuk menemukan varietas yang paling cocok.

Meringkaskan

Strategi pelacakan ledakan momentum secara keseluruhan adalah strategi pelacakan tren yang sangat praktis. Ini memecahkan masalah yang tidak dapat dihentikan dan dihentikan secara efektif dalam strategi terobosan, dan dapat mengendalikan risiko dengan baik sambil menangkap tren. Efek strategi ini juga memiliki ruang untuk ditingkatkan lebih lanjut melalui pengenalan alat seperti pengoptimalan parameter dan pembelajaran mesin.

Kode Sumber Strategi
/*backtest
start: 2023-03-01 00:00:00
end: 2023-12-10 05:20:00
period: 1d
basePeriod: 1h
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/
// © doks23

//@version=5
strategy(title = "SD:Momentum Burst", overlay=true, initial_capital=1000,commission_value = 0,slippage = 0,process_orders_on_close=true)

//Check Vol
checkVol = input.bool(defval=false,title="IncludeAvgVolume?")
volSMAlength = input(50, title="VolumeLength")
volumeSma = ta.sma(volume, volSMAlength)
highvolume = volume >= volumeSma
volumeCond=checkVol?highvolume:true

// Profit and Loss
trailPercent    = input.float(title="Trail%", defval=3, step=0.1)

//longCondition
PercentThreshold=input.float(3.8,'BreakoutPercent', step=0.1)
MaxThreshold=input.float(10,'Max Breakout', step=0.1)
HighCloseRatio=input.float(70,'Close to High Ratio', step=1)
float candleCloseBull = ((close[0] - open[0]) / (high[0] - open[0]) * 100)
float isFourPercentBull = (((close[0] - close[1]) / close[1]) * 100)
LongCond=volume > volume[1] and isFourPercentBull > PercentThreshold and candleCloseBull > HighCloseRatio and isFourPercentBull<MaxThreshold
barcolor(color=(LongCond?color.yellow: na),title='BObar')
longCondition= LongCond and volumeCond and close>ta.sma(close,200) and open>ta.sma(close,200)

//Input Strategy
DateCheck=  input.bool(title = 'Custom Date Range?', defval=true,group = 'Strategy')
FromDate=   input(defval = timestamp("1 Jan 2019 00:00"),group = 'Strategy')
ToDate      =input(defval = timestamp("31 Dec 2023 00:00"),group = 'Strategy')
PostionSize =input.string('Contract','Select Position Size',options = ['Percent of Equity','Contract'],group = 'Strategy')
ContractQty =input.int(1,'No of Contract',group = 'Strategy')

//Backtesting Date Range
TimeWindow=true
// Number of Contract
var int trade_qty=na
if(PostionSize=='Contract')
    trade_qty:=ContractQty
else
    trade_qty:= (strategy.equity>strategy.initial_capital)?math.floor(strategy.equity/strategy.initial_capital):ContractQty


//Position Buy
BuyTriggerPrice = ta.valuewhen(longCondition,high,0)
//Trailing price
var float trailPrice    = na
float percentMulti = (100 - trailPercent) / 100
longCondition2=longCondition and TimeWindow
if longCondition2
    strategy.entry("Long", strategy.long,qty=trade_qty,stop = BuyTriggerPrice)
    trailPrice := close*percentMulti
if strategy.position_size>0
    trailPrice := math.max(close*percentMulti,trailPrice[1])
    if low <= trailPrice
        strategy.exit('Exit','Long',stop = trailPrice)
        if strategy.position_size==0     
            trailPrice:=na
// Plot Strategy
var float trail_long_SL=na
if strategy.position_size>0
    trail_long_SL:=trailPrice
else
    trail_long_SL:=na
//Strategy Plot
PlotMA=input.bool(title="Plot MA?", defval=false)
plot(PlotMA?ta.sma(close,10):na,color = color.red,title = '10MA')
plot(PlotMA?ta.sma(close,21):na,color = color.white,title = '21MA')
plot(PlotMA?ta.sma(close,200):na,color = color.orange,title = '200MA')
// plot(trail_long_SL,color = color.gray,style = plot.style_steplinebr,linewidth = 1)