
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.
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.
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.
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.
Strategi ini boleh dioptimumkan dalam beberapa arah:
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.
/*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))