
Strategi ini adalah berdasarkan pelaburan menggunakan pengarah masa 1, 2, 3, dan 4 Hull Moving Average ((HMA)). Ia akan memasukkan sejumlah wang. Titik kemasukan diiktiraf melalui trend pengarah 2, 3 dan 4, dan titik keluar dicipta pada titik kemasukan baru atau mengikut peratusan stop loss.
Strategi ini mula mengira HMA. Hull Moving Average adalah purata bergerak bertimbangan yang dikira menggunakan formula berikut:
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
Di mana src adalah harga, dan sm adalah parameter input yang mengawal panjang purata.
Strategi ini kemudiannya mengira kelajuan (derivatif peringkat 1), pecutan (derivatif peringkat 2), gegaran (derivatif peringkat 3) dan getaran (derivatif peringkat 4). Ini dikira dengan mengira perbezaan antara HMA dan nilai kelewatannya dan kemudian dibahagikan dengan panjang len. Sebagai contoh, formula untuk mengira kelajuan adalah:
speed = (hullma-hullma[len])/len
Cara pengiraan untuk derivatif yang lain adalah sama.
Strategi ini membuat keputusan kemasukan dan keluar dengan melihat positif dan negatif dari percepatan, getaran dan getaran. Jika ketiga-tiga indikatornya positif, ia akan membuka kad tambahan. Jika ketiga-tiga indikatornya negatif, ia akan membuka kad kosong.
Di samping itu, strategi ini juga akan trailing stop loss untuk mengunci keuntungan. Kedudukan multihead akan ditetapkan berdasarkan peratusan input yang boleh disesuaikan untuk menghentikan kerugian, sama dengan kedudukan kosong.
Salah satu kelebihan utama strategi ini ialah ia menggunakan pelbagai faktor sebagai isyarat masuk dan keluar, yang boleh menyaring beberapa isyarat palsu. Ia biasanya terlalu lemah untuk menentukan masuk hanya dengan bergantung pada kelajuan (faktor 1) tetapi dengan gabungan faktor 2, 3 dan 4, ia boleh membina sistem yang lebih kuat.
Kelebihan lain ialah strategi ini sangat fleksibel. Ia mempunyai banyak parameter yang boleh disesuaikan, termasuk panjang HMA, panjang pelbagai derivatif, peratusan stop loss, dan sebagainya, yang dapat dioptimumkan untuk pasaran yang berbeza.
Penggunaan stop loss yang boleh disesuaikan juga merupakan kelebihan. Ini dapat membantu strategi mendapatkan lebih banyak keuntungan dalam keadaan trend, dan keluar tepat pada masanya dalam keadaan goyah, yang mengehadkan penarikan balik maksimum.
Risiko utama strategi ini adalah penurunan kadar hit yang disebabkan oleh kejadian mengejut. Jika tidak ada peraturan penapisan yang berkaitan, beberapa penunjuk mungkin muncul pada masa yang sama dengan isyarat yang salah selepas kejadian berita utama, yang menyebabkan kerugian yang lebih besar. Anda boleh menetapkan beberapa penapis berita, atau menangguhkan strategi untuk sementara waktu selepas kejadian mengejut untuk mengurangkan risiko ini.
Risiko lain ialah parameter mudah terlalu sesuai. Parameter seperti panjang HMA, panjang setiap derivatif boleh mempengaruhi hasilnya. Ini memerlukan kaedah pengesanan yang ketat untuk menilai kestabilan parameter ini di pasaran yang berbeza.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Menambah mekanisme penapisan berdasarkan kejadian yang tidak dijangka, menangguhkan perdagangan untuk seketika selepas peristiwa berita utama, untuk mengelakkan kehilangan titik masuk yang terlalu besar
Melakukan pengesanan semula pelbagai pasaran untuk parameter, memastikan kestabilan mereka. Data dari pelbagai varieti, tempoh masa yang berbeza dapat dipetik, menilai kestabilan tetapan parameter
Cuba ubah logik masuk ke lapangan. Algoritma pembelajaran mesin boleh diperkenalkan untuk mengenal pasti trend secara automatik, dan bukannya keputusan positif dan negatif yang mudah
Meningkatkan cara menghentikan kerugian: Stop loss boleh digunakan dengan stop loss kadar turun naik atau stop loss pembelajaran mesin sebagai ganti stop loss pengesanan peratusan yang mudah
Tambah Stop Stop Exit. Logik sedia ada bergantung terutamanya pada stop loss, boleh ditambah tambahan ke atas untuk menjejaki stop stop atau sasaran profit exit
Strategi ini adalah strategi pengesanan trend berskala pelbagai masa. Ia menggunakan pelbagai derivatif Hull Moving Average sebagai isyarat kedudukan dan kedudukan, menggunakan tracking stop loss untuk mengunci keuntungan. Kelebihan utamanya adalah penggunaan penapis pelbagai derivatif untuk menyaring isyarat palsu, fleksibiliti parameter strategi, dan lain-lain.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000)
len = input(1, minval=1, title="Derivatives Length")
sm = input(4, minval=1, title="HMA Length")
longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01
shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01
longStopPrice=0.0
shortStopPrice=0.0
src = input(ohlc4, title="Source")
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
speed = (hullma-hullma[len])/len
accel = (speed-speed[len])/len
jerk = (accel-accel[len])/len
jounce = (jerk-jerk[len])/len
plot(speed, color=green)
plot(accel, color=purple)
plot(jerk, color=red)
plot(jounce, color=blue)
// hline(0, linestyle=solid, color=black)
if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0
strategy.entry("openlong", strategy.long)
if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0
strategy.entry("openshort",strategy.short)
speed_profit = (strategy.openprofit-strategy.openprofit[1])/len
accel_profit = (speed_profit-speed_profit[1])/len
jerk_profit = (accel_profit-accel_profit[1])/len
longStopPrice:=if(strategy.position_size>0)
stopValue=ohlc4*(1-longTrailPerc)
max(stopValue,longStopPrice[1])
else
0
shortStopPrice:=if(strategy.position_size<0)
stopValue=ohlc4*(1+shortTrailPerc)
min(stopValue,shortStopPrice[1])
else
999999
if(strategy.position_size>0)
strategy.exit(id="closelong",stop=longStopPrice)
if(strategy.position_size<0)
strategy.exit(id="closeshort",stop=shortStopPrice)