Strategi ini menggunakan petunjuk teknikal lintas kitaran untuk mengenal pasti arah trend, menggabungkan penapisan trend dan penapisan turun naik, untuk mencapai perdagangan trend yang rendah risiko.
Gunakan titik tinggi rendah untuk menilai isyarat jual beli. Apabila harga menembusi titik tinggi 7 kitaran, lihatlah lebih tinggi, apabila ia menembusi titik rendah 7 kitaran.
Indikator Trendflex menilai arah trend utama. Indikator ini menggabungkan teknologi pelurus ganda, yang dapat mengenal pasti bahagian tengah trend dengan berkesan, nilai di atas 1 menunjukkan trend menaik, dan nilai di bawah -1 menunjukkan trend menurun. Di sini kita meminta Trendflex > 1 jam untuk panjang, < -1 jam untuk pendek, dan dengan itu menyaring keadaan bulat.
Bollinger Bands bergelombang membawa kepada pengiktirafan kawasan gegaran. Apabila harga dekat berada di dalam kawasan, elakkan melakukan lebih banyak pengurangan.
Menggunakan Stop Loss dan Stop Stop untuk menguruskan kedudukan.
Penunjuk lintas kitaran yang digabungkan dengan teknologi penyelarasan ganda dapat mengesan arah trend dengan berkesan dan mengelakkan gangguan oleh pasaran yang bergolak.
Ia juga mempertimbangkan arah trend dan peraturan turun naik untuk menjadikan isyarat perdagangan lebih dipercayai.
Penetapan stop loss adalah munasabah untuk mengunci keuntungan dan mengelakkan kerugian daripada berkembang.
Strategi ini lebih mudah difahami dan dilaksanakan.
Isyarat penembusan mungkin berlaku penembusan palsu, yang menghasilkan perdagangan yang salah. Anda boleh mempertimbangkan untuk menambah lebih banyak syarat gelombang.
Parameter kitaran tetap tidak dapat menyesuaikan diri dengan perubahan pasaran, parameter pengoptimuman dinamik boleh dipertimbangkan.
Tidak ada penangguhan harga untuk mengelakkan kerugian besar yang disebabkan oleh keadaan yang melampau.
Titik henti-henti dan kerugian tetap, tidak boleh disesuaikan dengan pergerakan pasaran.
Anda boleh mempertimbangkan untuk menambah lebih banyak indikator untuk menilai trend, membentuk gabungan strategi, dan meningkatkan ketepatan penilaian.
Tambahan modul pengiktirafan gegaran, penghentian dagangan apabila gegaran teruk, mengurangkan risiko.
Memperkenalkan algoritma pembelajaran mesin untuk mengoptimumkan parameter secara dinamik.
Menambah modul Stop Loss, anda boleh menghentikan kerugian apabila kerugian mencapai nilai terendah tertentu.
Mengambil kira peratusan stop loss berdasarkan turun naik pasaran untuk mencapai penyesuaian pintar untuk stop loss.
Strategi ini secara keseluruhan agak kukuh dan boleh dipercayai, tetapi terdapat ruang untuk penambahbaikan. Idea utamanya adalah untuk menilai arah trend sepanjang kitaran, dan kemudian memfilternya dengan penunjuk kekuatan trend dan penunjuk turun naik, untuk menghasilkan isyarat berkualiti tinggi. Strategi ini mudah digunakan, sangat sesuai untuk mengesan trend garis panjang. Dengan memperkenalkan lebih banyak penilaian syarat dan pengoptimuman parameter dinamik, anda dapat meningkatkan lagi keberkesanan strategi.
/*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")