Strategi henti rugi jejak berdasarkan titik henti rugi dan ambil untung


Tarikh penciptaan: 2024-01-11 11:04:57 Akhirnya diubah suai: 2024-01-11 11:04:57
Salin: 0 Bilangan klik: 695
1
fokus pada
1617
Pengikut

Strategi henti rugi jejak berdasarkan titik henti rugi dan ambil untung

Gambaran keseluruhan

Idea utama strategi ini adalah untuk menggunakan persilangan EMA dan WMA sebagai isyarat masuk, dan untuk berdagang digabungkan dengan stop loss yang berdasarkan pengiraan mata. Kelebihan terbesarnya adalah bahawa risiko boleh dikawal dengan sangat fleksibel dan tepat, dengan menyesuaikan saiz mata untuk mengawal ketinggian stop loss.

Prinsip Strategi

Apabila EMA dari bawah ke atas menembusi WMA, ia akan menghasilkan isyarat banyak; apabila EMA dari atas ke bawah menembusi WMA, ia akan menghasilkan isyarat kosong. Setelah memasuki kedudukan, ia akan mengira titik masuk dalam masa nyata, dan berdasarkan itu, ia akan menetapkan hentian dan hentian. Sebagai contoh, menetapkan hentian 20 dan hentian 100, maka harga hentian tertentu adalah harga masuk dikurangkan 20*Nilai kontrak, harga hentian adalah harga masuk ditambah 100 mata*Nilai kontrak. Untuk mengawal risiko dan keuntungan.

Strategi ini juga boleh digunakan untuk membuat perbandingan antara pegangan semasa dan pegangan terdahulu, dan untuk menyesuaikan kedudukan pegangan bergerak.

Analisis kelebihan

Kelebihan terbesar strategi ini berbanding dengan titik tetap biasa atau peratusan stop loss adalah bahawa ia dapat mengawal risiko dengan sangat fleksibel dan tepat. Saiz titik yang disesuaikan dapat memberi kesan langsung kepada saiz stop loss. Ini sangat sesuai untuk pelbagai jenis dan dapat disesuaikan dengan frekuensi dan ketaraannya.

Di samping itu, Hentikan Pergerakan juga merupakan ciri yang sangat praktikal. Ia boleh mengesan dan menyesuaikan kedudukan Hentikan Kerosakan mengikut perubahan masa nyata dalam keadaan, dan pada masa yang sama memastikan kawalan risiko, untuk mendapatkan keuntungan yang lebih besar.

Analisis risiko

Risiko utama strategi ini berasal dari kedua-dua penunjuk EMA dan WMA itu sendiri. Mereka sering memberi isyarat yang salah dan mudah dihentikan apabila keadaan pasaran berubah secara drastik. Dalam kes ini, disarankan untuk melonggarkan mata berhenti dengan sewajarnya, atau mempertimbangkan untuk menggantikan kombinasi penunjuk lain.

Satu lagi titik risiko adalah bahawa halangan hentikan adalah sukar untuk diimbangi. Jika mengejar halangan yang lebih tinggi, biasanya perlu mengambil risiko yang lebih besar, yang mudah untuk berhenti ketika keadaan berubah. Oleh itu, tetapan halangan hentikan perlu diuji dan dinilai dengan teliti.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Uji kombinasi EMA dan WMA dengan parameter yang berbeza untuk mencari parameter terbaik;
  2. Cuba gantikan atau menggabungkan penunjuk lain seperti MACD, KDJ, dan lain-lain untuk melihat apakah ia dapat meningkatkan kadar kemenangan.
  3. Kajian risiko dan faedah bagi pelbagai titik hentian dan hentian untuk mencari konfigurasi yang optimum;
  4. Mengkaji ciri-ciri pelbagai jenis dan menyesuaikan parameter untuk pasaran yang berbeza;
    1. Menggabungkan algoritma pembelajaran mesin untuk mencapai optimasi dinamik parameter.

ringkaskan

Idea teras strategi ini sederhana dan jelas, berdasarkan indikator EMA dan WMA, menggunakan mekanisme hentian kerugian berdasarkan pengiraan mata untuk mengawal risiko. Kelebihan strategi adalah bahawa kawalan risiko adalah fleksibel dan boleh disesuaikan dengan pasaran yang berbeza. Kemudian, anda boleh mengoptimumkan secara mendalam dari segi isyarat masuk, pilihan parameter, mekanisme hentian kerugian, dan sebagainya, untuk menjadikan strategi lebih sesuai dengan keadaan pasaran yang berubah-ubah dan kompleks.

Kod sumber strategi
/*backtest
start: 2024-01-03 00:00:00
end: 2024-01-10 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// inspiration script from: @ahmad_naquib
// inspiration script link: https://www.tradingview.com/script/tGTV8MkY-Two-Take-Profits-and-Two-Stop-Loss/
// inspiration strategy script name: Two Take Profits and Two Stop Loss


////////////
// Do not use this strategy, it's just an exmaple !! The goal from this script is to show you TP and SL based on PIPS
////////////


//@version=5
strategy('SL & TP based on Pips', "PIP SL & TP", overlay=true, initial_capital=1000)

// MA
ema_period = input(title='EMA period', defval=10)
wma_period = input(title='WMA period', defval=20)
ema = ta.ema(close, ema_period)
wma = ta.wma(close, wma_period)

// Entry Conditions
long = ta.crossover(ema, wma) and nz(strategy.position_size) == 0
short = ta.crossunder(ema, wma) and nz(strategy.position_size) == 0

// Pips Calculation
pip1 = input(20, title = "TP PIP", group = "PIP CALCULATION") * 10 * syminfo.mintick
pip2 = input(20, title = "SL PIP", group = "PIP CALCULATION") * 10 * syminfo.mintick

// Trading parameters 
var bool LS = na
var bool SS = na

var float EP = na // Entry Position
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na

var float TP1 = na
//var float TP2 = na
var float SL1 = na
///var float SL2 = na

// SL & TP Values
// there's also SL2 and TP2 in case you want to add them to your script, 
//also you can add a break event in the strategy.entry section.

if short or long and strategy.position_size == 0
    EP := close
    SL1 := EP - pip2 * (short ? -1 : 1)
    //SL2 := EP - pip2 * (short ? -1 : 1)
    
    TP1 := EP + pip1 * (short ? -1 : 1)
    //TP2 := EP + pip1 * 2 * (short ? -1 : 1)


// current trade direction    
LS := long or strategy.position_size > 0
SS := short or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := math.max(TP1, open) - pip1[1]
TVS := math.min(TP1, open) + pip1[1]
TSL := open[1] > TSL[1] ? math.max(TVL, TSL[1]) : TVL
TSS := open[1] < TSS[1] ? math.min(TVS, TSS[1]) : TVS

//if LS and high > TP1
    //if open <= TP1
        //SL2 := math.min(EP, TSL)

//if SS and low < TP1
    //if open >= TP1
        //SL2 := math.max(EP, TSS)


// Closing conditions
// and those are a closing conditions in case you want to add them.

//close_long = LS and open < SL2
//close_short = SS and open > SL2

// Buy
if (long and not SS)
    strategy.entry('buy', strategy.long)
strategy.exit('exit1', from_entry='buy', stop=SL1, limit=TP1, qty_percent=100)
//strategy.exit('exit2', from_entry='buy', stop=SL2, limit=TP2)

// Sell
if (short and not LS)
    strategy.entry('sell', strategy.short)
strategy.exit('exit3', from_entry='sell', stop=SL1, limit=TP1, qty_percent=100)
//strategy.exit('exit4', from_entry='sell', stop=SL2, limit=TP2)

// Plots
// those are plots for the lines of The tp and sl. they are really useful, and in the next update I will use a filling option.

a = plot(strategy.position_size > 0 ? SL1 : na, color=color.new(#af0829, 30), linewidth = 2, style=plot.style_linebr)
b = plot(strategy.position_size < 0 ? SL1 : na, color=color.new(#af0829, 30), linewidth = 2, style=plot.style_linebr)

c = plot(strategy.position_size > 0 ? TP1 : na, color=color.new(#2e7e00, 30), linewidth = 2, style=plot.style_linebr)
d = plot(strategy.position_size < 0 ? TP1 : na, color=color.new(#2e7e00, 30), linewidth = 2, style=plot.style_linebr)

g = plot(strategy.position_size >= 0 ? na : EP, color=color.new(#ffffff, 50), style=plot.style_linebr)
h = plot(strategy.position_size <= 0 ? na : EP, color=color.new(#ffffff, 50), style=plot.style_linebr)


// those are plot for the TP2 and SL2, they are optional if you want to add them.

//e = plot(strategy.position_size > 0 ? TP2 : na, color=color.new(#00ced1, 0), style=plot.style_linebr)
//f = plot(strategy.position_size < 0 ? TP2 : na, color=color.new(#00ced1, 0), style=plot.style_linebr)


//those are the plot for the ema and wma strategy for short and long signal. they are not really a good strategy, I just used them as an example
//but you have the option to plot them or not.
// do not use this strategy, it's just an exmaple !! The goal from this script is to show you TP and SL based on PIPS

//plot(ema, title='ema', color=color.new(#fff176, 0))
//plot(wma, title='wma', color=color.new(#00ced1, 0))