Strategi ini adalah sistem perdagangan trend-tracking yang beradaptasi berdasarkan indeks moving averages (EMA) dan indikator arah licin (SDI). Ia menggabungkan beberapa petunjuk teknikal dan alat pengurusan risiko yang bertujuan untuk menangkap trend pasaran dan mengawal risiko. Strategi ini menggunakan persilangan EMA cepat dan lambat serta arah SDI untuk menentukan trend pasaran dan menghasilkan isyarat beli dan jual berdasarkan itu.
Pusat strategi ini terletak pada kebolehpasangan dan pendekatan pengurusan risiko yang komprehensif. Dengan menggunakan parameter yang boleh disesuaikan seperti kitaran EMA, kelancaran SDI dan had pengurusan risiko, peniaga boleh mengoptimumkan strategi mengikut keadaan pasaran yang berbeza dan pilihan risiko peribadi. Tetapan fleksibel saiz leverage dan kedudukan meningkatkan lagi kebolehpasangan strategi, menjadikannya sesuai untuk gaya perdagangan dan skala modal yang berbeza.
Kaedah pengiraan:
Sinyal dagangan dihasilkan:
Pengurusan kedudukan:
Pengurusan Risiko:
Penapisan masa:
Keupayaan untuk menangkap trend: gabungan EMA dan SDI, untuk mengenal pasti dan menjejaki trend pasaran secara berkesan.
Adaptif: menyesuaikan diri dengan keadaan pasaran yang berbeza melalui parameter yang boleh disesuaikan.
Pengurusan risiko menyeluruh: integrasi berhenti, hentikan dan mengesan hentikan, kawalan risiko menyeluruh.
Kawalan kedudukan yang fleksibel: Leverage dan peratusan penggunaan dana boleh disesuaikan dengan pilihan risiko yang berbeza.
Kemudahan Pemulangan: Membantu Pemulangan Data Bersejarah untuk Optimumkan Strategi
Netraliti emosi: Mengurangkan kesan emosi subjektif berdasarkan penunjuk objektif.
Kepelbagaian fungsi: boleh digunakan untuk pelbagai tempoh masa dan jenis perdagangan.
Terlalu banyak dagangan: Ia boleh menyebabkan dagangan yang kerap dan meningkatkan kos di pasaran yang bergolak.
Ketinggalan: EMA dan SDI sebagai penunjuk ketinggalan, mungkin bertindak balas lebih lambat apabila trend berbalik.
Risiko pecah palsu: mungkin salah menilai trend dalam turun naik jangka pendek, menyebabkan perdagangan yang salah.
Sensitiviti parameter: prestasi sangat bergantung kepada tetapan parameter, yang memerlukan pengoptimuman berterusan.
Kepercayaan kepada keadaan pasaran: mungkin kurang baik dalam keadaan pasaran tertentu.
Risiko Leverage: Leverage yang tinggi boleh meningkatkan kerugian dan perlu digunakan dengan berhati-hati.
Ketergantungan teknologi: bergantung kepada persekitaran teknologi yang stabil, kerosakan sistem mungkin menyebabkan kerugian.
Penyesuaian parameter dinamik: mewujudkan penyesuaian penyesuaian parameter EMA dan SDI untuk menyesuaikan diri dengan tahap pasaran yang berbeza.
Analisis pelbagai kerangka masa: mengintegrasikan isyarat dari pelbagai tempoh masa untuk meningkatkan ketepatan trend.
Penapisan turun naik: Tambahkan indikator turun naik seperti ATR untuk menyesuaikan peraturan perdagangan semasa turun naik tinggi.
Pengenalan keadaan pasaran: memperkenalkan klasifikasi keadaan pasaran ((kecenderungan / getaran), logik perdagangan yang dioptimumkan secara khusus.
Pengurusan dana yang dioptimumkan: melakukan penyesuaian kedudukan yang dinamik, menyesuaikan risiko secara automatik mengikut keadaan kerugian akaun.
Komposisi Indikator: Pertimbangkan untuk memasukkan indikator tambahan seperti RSI atau MACD untuk meningkatkan kebolehpercayaan isyarat.
Penggabungan pembelajaran mesin: memperkenalkan algoritma pembelajaran mesin, mengoptimumkan pemilihan parameter dan penjanaan isyarat.
Strategi pengesanan trend yang beradaptasi sendiri yang digabungkan dengan EMA dan SDI menunjukkan kemampuan penyesuaian pasaran dan pengurusan risiko yang kuat. Melalui penetapan parameter yang fleksibel dan langkah-langkah kawalan risiko yang komprehensif, ia menyediakan pedagang dengan kerangka perdagangan kuantitatif yang boleh dipercayai.
Walau bagaimanapun, peniaga masih perlu berhati-hati terhadap risiko yang berpotensi seperti keterlambatan strategi yang wujud dan sensitiviti parameter. Strategi ini dijangka meningkatkan lagi prestasinya dan kestabilan dengan pengoptimuman dan penambahbaikan yang berterusan, terutamanya dalam penyesuaian parameter dinamik, analisis pelbagai kerangka masa dan pengenalan keadaan pasaran.
Secara keseluruhannya, strategi ini menyediakan asas yang kukuh untuk perdagangan kuantitatif, sesuai untuk pelabur yang mencari kaedah perdagangan yang sistematik dan disiplin. Dengan pemahaman yang mendalam tentang prinsip strategi dan menggabungkan gaya perdagangan individu, pedagang dapat menggunakan alat ini dengan berkesan untuk meningkatkan kelebihan persaingan mereka di pasaran kewangan.
/*backtest
start: 2024-06-01 00:00:00
end: 2024-06-30 23:59:59
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/
// © erdas0
//@version=5
strategy("Strategy SEMA SDI Webhook", overlay=true, slippage = 1, commission_value = 0.035, default_qty_type=strategy.percent_of_equity, default_qty_value=50, initial_capital = 1000, calc_on_order_fills = true, process_orders_on_close = true)
// Start and end dates
dts=input(false,"",inline="dts")
dte=input(false,"",inline="dte")
start_date = input(timestamp("2023-01-01 00:00:00"), "Start Date",inline="dts")
end_date = input(timestamp("2124-01-01"), "End Date",inline="dte")
times = true
// Initial capital
leverage= input.int(10, "Leverage", minval=1,inline="qty") //Leverage Test
usdprcnt= input.int(50, "%", minval=1,inline="qty")
qty= input(false,"Inital USDT ◨",inline="qty")
initial_capital = qty ? (strategy.initial_capital+strategy.netprofit)/close*leverage*usdprcnt/100 : na
//Level Inputs
tpon=input(false,"TP ◨",group ="Take Profit/Stop Loss", inline="1")
sloc=input(true,"SL ◨",group ="Take Profit/Stop Loss", inline="1")
tron=input(true,"Trailing ◨",group ="Take Profit/Stop Loss", inline="1")
tp = tpon ? input.float(25, "Take Profit %", minval=0.1,step=0.1,group ="Take Profit/Stop Loss", inline="2") : na
sl = sloc ? input.float(4.8, "Stop Loss %", minval=0.1,step=0.1,group ="Take Profit/Stop Loss", inline="2") : na
tr = tron ? input.float(1.9, "Trailing Stop ", minval=0.1,step=0.1,group ="Take Profit/Stop Loss", inline="4") : na
// Take profit and stop loss levels
dir=strategy.position_size/math.abs(strategy.position_size) //Directions
newtrade=strategy.closedtrades>strategy.closedtrades[1]
pftpcnt=dir<0 ? (strategy.position_avg_price-low)/strategy.position_avg_price*100 : dir>0 ? (high-strategy.position_avg_price)/strategy.position_avg_price*100 : na //max profit
pftpr= (1 + pftpcnt*dir/100) * strategy.position_avg_price //Trailing Price
take_profit = (1 + tp*dir/100) * strategy.position_avg_price
stop_loss = (1 - sl*dir/100) * strategy.position_avg_price
var float maxpft=na //max profit percent
maxpft := newtrade ? 0 : strategy.openprofit > 0 ? math.max(pftpcnt,maxpft) : maxpft
var float Tr=na //Trailing
Tr := newtrade ? na : pftpcnt >= tr and maxpft-pftpcnt >= tr ? close : Tr
//Inputs
ocema=input(true, title='EMA ◨',group="Inputs",inline="2")
ocsd=input(true, title='SDI ◨',group="Inputs",inline="2")
ocsm=input(true, title='Smooth ◨',group="Inputs",inline="2")
lenf = input.int(58, "Fast Ema", minval=1,group ="Inputs", inline="3")
lens = input.int(70, "Slow Ema", minval=1,group ="Inputs", inline="3")
slen = input.int(3, "Smooth", minval=1,group ="Inputs", inline="4")
dilen = input.int(1, title="DI Length", minval=1,group ="SDI", inline="5")
sdi = input.int(6, title="DI Smooth", minval=1,group ="SDI", inline="5")
//EMA
emaf=ta.ema(close,lenf)
emas=ta.ema(close,lens)
semaf=ta.ema(emaf,slen)
semas=ta.ema(emas,slen)
//SDI
dirmov(len,smt) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = ta.rma(ta.tr, len)
plus = ta.ema(fixnan(100 * ta.rma(plusDM, len) / truerange),smt)
minus = ta.ema(fixnan(100 * ta.rma(minusDM, len) / truerange),smt)
[plus, minus]
[plus,minus]=dirmov(dilen,sdi)
pm=ta.ema(plus-minus,10)
sdcl= plus>minus ? color.new(color.green,80) :plus<minus ? color.new(color.red,80) : na
cpm= pm>pm[1] ? color.lime : pm<pm[1] ? color.red : color.yellow
barcolor(cpm,title="PM Color")
//Plot
plot(ocsm ? semaf:emaf,"Fast Ema",color=color.green)
plot(ocsm ? semas:semas,"Slow Ema",color=color.red)
// Conditions
Long = (ocsd ? plus>minus:true) and (ocema ? (ocsm ? semaf:emaf)>(ocsm ? semas:emas):true)
Short = (ocsd ? plus<minus:true) and (ocema ? (ocsm ? semaf:emaf)<(ocsm ? semas:emas):true)
// Strategy conditions
if Long and times
strategy.close("Short","Close S")
strategy.entry("Long", strategy.long, comment="L",qty = initial_capital)
if strategy.position_size>0
strategy.exit("Long LTP", "Long", limit=take_profit, stop=stop_loss, comment="LSL",comment_profit = "LTP")
if Tr and strategy.position_size>0
strategy.exit("Long LTP", "Long", limit=take_profit, stop=pftpr, comment="Tr",comment_profit = "LTP")
if Short and times
strategy.close("Long","Close L")
strategy.entry("Short", strategy.short, comment="S",qty = initial_capital)
if strategy.position_size<0
strategy.exit("Short STP", "Short", limit=take_profit, stop=stop_loss, comment="SSL",comment_profit ="STP" )
if Tr and strategy.position_size<0
strategy.exit("Short STP", "Short", limit=take_profit, stop=pftpr, comment="Tr",comment_profit = "STP")
if not times
strategy.close_all()