Strategi ini menggunakan indikator teknis lintas-siklus untuk mengidentifikasi arah tren, yang dikombinasikan dengan penyaringan tren dan penyaringan fluktuasi, untuk mencapai perdagangan pelacakan tren berisiko rendah.
Gunakan titik tinggi rendah untuk menilai sinyal jual beli. Lihatlah ketika harga melewati 7 siklus tinggi, dan lihat lebih banyak saat melewati 7 siklus rendah.
Indikator Trendflex menentukan arah tren utama. Indikator ini menggabungkan teknologi ganda smoothing, yang dapat secara efektif mengidentifikasi bagian tengah tren, nilai di atas 1 menunjukkan tren naik, dan nilai di bawah -1 menunjukkan tren menurun. Di sini kita meminta Trendflex > 1 jam untuk panjang, < -1 jam untuk pendek, sehingga menyaring keadaan set.
Bollinger Bands berfluktuasi untuk mengidentifikasi zona getaran.
Menggunakan Stop Loss Mobile dan Stop Stop Mobile untuk mengelola posisi.
Indikator lintas-siklus yang menggabungkan teknologi dual smoothing dapat secara efektif mengidentifikasi arah tren dan menghindari gangguan dari pasar yang bergoyang.
Selain itu, Anda juga harus mempertimbangkan arah tren dan aturan fluktuasi untuk membuat sinyal perdagangan lebih andal.
Stop loss stop setting yang masuk akal, dapat mengunci keuntungan dan mencegah kerugian berkembang.
Strategi ini sederhana, mudah dipahami, dan mudah diterapkan.
Sinyal penembusan dapat terjadi penembusan palsu, sehingga menghasilkan perdagangan yang salah. Anda dapat mempertimbangkan untuk menambahkan lebih banyak kondisi gelombang.
Parameter siklus tetap tidak dapat beradaptasi dengan perubahan pasar, parameter optimasi dinamis dapat dipertimbangkan.
Tidak adanya penghentian harga, tidak dapat mencegah kerugian besar yang disebabkan oleh situasi ekstrem.
Stop loss dan stop loss tetap, tidak dapat disesuaikan dengan pergerakan pasar.
Selain itu, ada beberapa indikator yang dapat digunakan untuk menilai tren, membentuk portofolio strategi, dan meningkatkan akurasi penilaian.
Menambahkan modul identifikasi gempa, menghentikan perdagangan saat gempa terjadi, mengurangi risiko.
Memperkenalkan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara dinamis.
Modul Stop Loss ini dapat digunakan untuk menghentikan kerugian jika terjadi penurunan harga.
Stop Loss Ratio yang dihitung berdasarkan fluktuasi pasar untuk melakukan penyesuaian cerdas dari Stop Loss.
Strategi ini secara keseluruhan relatif stabil dan dapat diandalkan, tetapi ada juga ruang untuk perbaikan. Gagasan utamanya adalah menentukan arah tren selama periode, lalu memfilternya dengan indikator kekuatan tren dan indikator fluktuasi, sehingga menghasilkan sinyal berkualitas tinggi. Strategi ini sederhana dan praktis, sangat cocok untuk melacak tren garis panjang. Dengan memperkenalkan lebih banyak penilaian kondisional dan pengoptimalan parameter dinamis, efektivitas strategi dapat ditingkatkan.
/*backtest
start: 2023-08-27 00:00:00
end: 2023-09-26 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Eltrut", shorttitle="Eltrut Strat", overlay=true, pyramiding=0, default_qty_type= strategy.percent_of_equity,calc_on_order_fills=false, slippage=25,commission_type=strategy.commission.percent,commission_value=0.075)
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// R E F L E X / T R E N D F L E X
f_supersmoother(_src,_len)=>
pi = 2 * asin(1)
_a = exp(-sqrt(2) * pi / _len)
_c2 = 2 * _a * cos(sqrt(2) * pi / _len)
_c3 = -_a * _a
_c1 = 1 - _c2 - _c3
_out = 0.0
_out := _c1 * _src + _c2 * nz(_out[1],nz(_src[1],_src)) + _c3 * nz(_out[2],nz(_src[2],nz(_src[1],_src)))
f_IQIFM(_src1,_max)=>
_src = _src1 < 0.001 ? _src1 * 10000 : _src1
_imult = 0.635, _qmult = 0.338 , _inphase = 0.0, _quad = 0.0
_re = 0.0, _im = 0.0, _deltaphase = 0.0, _instper = 0.0, _per = 0.0, _v4 = 0.0
_v1 = _src - nz(_src[7])
_inphase := 1.25 * (nz(_v1[4]) - _imult * _v1[2]) + _imult * nz(_inphase[3])
_quad := _v1[2] - _qmult * _v1 + _qmult * nz(_quad[2])
_re := 0.2 * (_inphase * _inphase[1] + _quad * _quad[1]) + 0.8 * nz(_re[1])
_im := 0.2 * (_inphase * _quad[1] - _inphase[1] * _quad) + 0.8 * nz(_im[1])
if _re != 0.0
_deltaphase := atan(_im / _re)
for i = 0 to _max
_v4 := _v4 + _deltaphase[i]
if _v4 > 4 * asin(1) and _instper == 0.0
_instper := i
if _instper == 0.0
_instper := nz(_instper[1])
_per := 0.25 * _instper + 0.75 * nz(_per[1])
_per
f_flex(_src1, _fixed_len, _reflex) =>
_src = _src1
_len = _fixed_len
_ss1 = f_supersmoother(_src, _len)
_ss = _ss1
_slope = (_ss[_len] - _ss) / _len
_sum = 0.0
for _i = 1 to _len
_c1 = _reflex ? _ss + _i * _slope - _ss[_i] : _ss - _ss[_i]
_sum := _sum + _c1
_sum := _sum / _len
_ms = 0.0
_ms := 0.04 * pow(_sum,2) + 0.96 * nz(_ms[1])
_flex1 = _ms != 0 ? _sum / sqrt(nz(_ms)) : 0.0
_flex = _flex1
_flex
rflx = f_flex(close, 20, true)
trndflx = f_flex(close, 20, false)
// S I G N A L
hi7 = highest(7)
lo7 = lowest(7)
long_cond = crossunder(close, lo7[1])
short_cond = crossover(close, hi7[1])
// F I L T E R S
long_filter1 = trndflx < 1
short_filter1 = trndflx > -1
basis = sma(close, 35)
dev = 3 * stdev(close, 35)
long_filter2 = close > basis - dev
short_filter2 = close < basis + dev
// S T R A T E G Y
long = long_cond and long_filter1 and long_filter2
short = short_cond and short_filter1 and short_filter2
if( true)
strategy.entry("Long", strategy.long, when = long)
strategy.entry("Long", strategy.long, when = short)
// User Options to Change Inputs (%)
stopPer = input(3, title='Stop Loss %', type=input.float) / 100
takePer = input(9, title='Take Profit %', type=input.float) / 100
// Determine where you've entered and in what direction
longStop = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake = strategy.position_avg_price * (1 + takePer)
if strategy.position_size > 0
strategy.exit(id="Exit Long", stop=longStop, limit=longTake)
if strategy.position_size < 0
strategy.exit(id="Exit Short", stop=shortStop, limit=shortTake)
// P L O T
plotshape(long, color = #1e90ff, text = "", style=shape.triangleup, location=location.belowbar, size=size.tiny)
plotshape(short, color = #ff69b4, text = "", style=shape.triangledown, location=location.abovebar, size=size.tiny)
alertcondition(long, "Long", "Enter Long")
alertcondition(short, "Short", "Enter S")