Memindahkan strategi Stop Loss berdasarkan mata mengambil keuntungan dan Stop Loss

Penulis:ChaoZhang, Tarikh: 2024-01-11 11:04:57
Tag:

img

Ringkasan

Idea teras strategi ini adalah menggunakan persilangan EMA dan WMA sebagai isyarat kemasukan, dan menggabungkan mengambil keuntungan dan menghentikan kerugian berdasarkan pengiraan mata untuk perdagangan. Keuntungannya yang terbesar adalah bahawa ia dapat mengawal risiko dengan sangat fleksibel dan tepat dengan menyesuaikan bilangan titik untuk mengawal amplitud mengambil keuntungan dan menghentikan kerugian.

Prinsip Strategi

Apabila EMA melintasi WMA ke atas, isyarat panjang dihasilkan. Apabila EMA melintasi WMA ke bawah, isyarat pendek dihasilkan. Selepas memasukkan kedudukan, harga kemasukan akan dikira dalam masa nyata, dan stop loss dan mengambil keuntungan akan ditetapkan berdasarkan itu. Sebagai contoh, tetapkan stop loss kepada 20 mata dan ambil keuntungan kepada 100 mata, maka harga stop loss tertentu akan menjadi harga kemasukan tolak 20 mata * nilai kontrak, dan mengambil keuntungan harga akan menjadi harga kemasukan ditambah 100 mata * nilai kontrak. Ini adalah bagaimana risiko dan keuntungan dikawal.

Pada masa yang sama, strategi ini juga akan menggabungkan harga pasaran semasa dengan stop loss sejarah untuk menyesuaikan kedudukan stop loss bergerak dan merealisasikan stop loss yang tertinggal.

Analisis Kelebihan

Jika dibandingkan dengan titik tetap atau peratusan stop loss, kelebihan terbesar strategi ini adalah bahawa ia dapat mengawal risiko dengan sangat fleksibel dan tepat. Dengan menyesuaikan bilangan titik, amplitud stop loss boleh dipengaruhi secara langsung. Ini berlaku dengan baik untuk pelbagai jenis, dan parameter boleh disesuaikan berdasarkan kekerapan dan amplitud turun naik pasaran.

Di samping itu, penangguhan stop loss juga merupakan fungsi yang sangat praktikal. Ia boleh mengesan dan menyesuaikan kedudukan stop loss berdasarkan perubahan pasaran masa nyata, sambil memastikan kawalan risiko, dan memaksimumkan keuntungan yang mungkin.

Analisis Risiko

Risiko utama strategi ini berasal dari penunjuk EMA dan WMA sendiri. Apabila terdapat pergerakan pasaran yang ganas, mereka sering memberikan isyarat yang salah, dengan mudah membawa kepada stop loss. Dalam kes ini, disyorkan untuk melonggarkan jumlah titik stop loss dengan sewajarnya, atau mempertimbangkan untuk menggantikan kombinasi penunjuk lain.

Satu lagi titik risiko adalah bahawa sukar untuk menyeimbangkan stop loss dan mengambil keuntungan. mengejar keuntungan yang lebih tinggi sering memerlukan mengambil risiko yang lebih besar, yang boleh dengan mudah membawa kepada stop loss apabila pasaran bertukar. Oleh itu, konfigurasi stop loss dan mengambil keuntungan memerlukan ujian dan penilaian yang teliti.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Uji kombinasi parameter EMA dan WMA yang berbeza untuk mencari yang optimum;
  2. Cuba penunjuk lain seperti MACD, KDJ dan lain-lain untuk menggantikan atau menggabungkan, dan lihat sama ada kadar kemenangan boleh ditingkatkan;
  3. Menilai ganjaran risiko daripada konfigurasi titik yang berbeza untuk stop loss dan mengambil keuntungan, dan mencari tetapan yang optimum;
  4. Kajian ciri-ciri pelbagai jenis, dan menyesuaikan parameter untuk menyesuaikan diri dengan pasaran yang berbeza;
  5. Menggabungkan algoritma pembelajaran mesin untuk merealisasikan pengoptimuman dinamik parameter.

Kesimpulan

Idea teras strategi ini adalah mudah dan jelas, menggunakan EMA dan WMA sebagai asas, dan menggunakan titik berasaskan mechanisme stop loss dan mengambil keuntungan untuk kawalan risiko. Kelebihan strategi terletak pada kawalan risiko yang tepat dan fleksibel, yang boleh diselaraskan dengan sesuai untuk pasaran yang berbeza. Pengoptimuman susulan boleh dilakukan dalam isyarat masuk, pemilihan parameter, mekanisme stop loss dan lain-lain, untuk membuat strategi menyesuaikan diri dengan lebih baik dengan persekitaran pasaran yang kompleks dan sentiasa berubah.


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

Lebih lanjut