Strategi mengikuti tren saluran rata-rata bergerak multi-periode


Tanggal Pembuatan: 2024-02-20 13:45:42 Akhirnya memodifikasi: 2024-02-20 13:45:42
menyalin: 2 Jumlah klik: 607
1
fokus pada
1617
Pengikut

Strategi mengikuti tren saluran rata-rata bergerak multi-periode

Ringkasan

Strategi ini adalah strategi swing yang berlaku untuk pasar yang sedang tren seperti cryptocurrency dan saham, menggunakan kerangka waktu yang lebih besar, seperti 8 jam. Strategi ini menggunakan berbagai jenis moving average, termasuk SMA, EMA, VWMA, ALMA, SMMA, LSMA, dan VWMA, yang diterapkan pada titik tinggi dan rendah, membentuk dua saluran rata-rata.

Lakukan over jika harga close lebih tinggi dari rata-rata yang diterapkan pada titik tinggi; lakukan short jika harga close lebih rendah dari rata-rata yang diterapkan pada titik rendah.

Prinsip Strategi

Strategi ini menggunakan 7 indikator rata-rata bergerak yang berbeda, termasuk SMA, EMA, VWMA, ALMA, SMMA, LSMA, dan VWMA. Rata-rata bergerak ini diterapkan pada harga tertinggi dan terendah pada garis K, menghasilkan dua rata-rata.

Rata-rata yang berlaku untuk harga tertinggi disebut sebagai avg_high, sedangkan rata-rata yang berlaku untuk harga terendah disebut sebagai avg_low. Kedua rata-rata tersebut membentuk satu saluran.

Bila harga closeout lebih besar dari avg_high, lakukan over; bila harga closeout lebih rendah dari avg_low, lakukan short.

Stop loss adalah avg_low dan stop loss adalah harga awal.(1+tp_long); Stop loss line adalah avg_high, stop loss line adalah harga buka posisi(1-tp_short)。

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah penggunaan berbagai indikator rata-rata bergerak untuk meningkatkan probabilitas keuntungan. Indikator rata-rata bergerak dengan siklus yang berbeda dan metode penghitungan bereaksi terhadap harga dengan kecepatan yang berbeda, yang dikombinasikan dengan penggunaan dapat membentuk sinyal perdagangan yang lebih andal.

Keuntungan lainnya adalah menggunakan metode channel trading. Up-down channel membatasi area stop loss, mengurangi risiko, dan lebih cocok untuk strategi swing.

Analisis risiko

Strategi ini memiliki dua risiko utama:

  1. Berbagai kombinasi indikator moving average digunakan, pengaturan parameter yang lebih rumit, membutuhkan banyak pengujian dan optimalisasi untuk menemukan kombinasi parameter yang optimal.

  2. Strategi ini dapat menyebabkan kerugian dan beberapa sinyal perdagangan yang tidak efektif di pasar yang berada di posisi terbalik dan tanpa tren yang jelas.

Untuk mengurangi risiko ini, perlu memilih varietas perdagangan yang jelas tren, dan melakukan banyak pengembalian dan pengoptimalan pada kombinasi parameter untuk menemukan pengaturan parameter yang paling sesuai dengan kondisi pasar saat ini.

Arah optimasi

Strategi ini juga perlu dioptimalkan dalam beberapa hal:

  1. Uji lebih banyak jenis rata-rata bergerak untuk mencari kombinasi yang lebih baik. Anda dapat mempertimbangkan SMA, EMA, KAMA, TEMA, dll.

  2. Optimalkan parameter untuk panjang rata-rata bergerak dan lebar saluran untuk menemukan pengaturan parameter yang optimal.

  3. Uji berbagai pengaturan stop loss. Anda dapat mempertimbangkan cara seperti trailing stop atau stop loss dinamis.

  4. Menggabungkan indikator penilaian tren, hindari sering berdagang di pasar tanpa tren yang jelas. Misalnya ADX, ATR, dll.

  5. Mengoptimalkan entry dan exit logic, mengatur filter tambahan, dan mengurangi transaksi yang tidak valid.

Meringkaskan

Strategi ini meningkatkan probabilitas keuntungan dengan berbagai indikator moving average, mengurangi risiko dengan menggunakan saluran atas ke bawah, merupakan strategi pelacakan tren berayun. Strategi ini berlaku untuk varietas perdagangan yang jelas berorientasi tren, dan setelah pengoptimalan parameter, hasilnya lebih baik. Namun, ketika pasar berbalik, mudah menanggung kerugian yang lebih besar, perlu pengoptimalan lebih lanjut untuk mengurangi risiko.

Kode Sumber Strategi
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
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/
// © exlux99

//@version=4

strategy(title="High/Low channel swing", shorttitle="Multi MA swing", overlay=true)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//////
length_ma= input(defval=12, title="Length Moving averages", minval=1)

////////////////////////////////SETUP///////////////////////////////////////////

sma_high   = sma(high, length_ma)
ema_high   = ema(high, length_ma)
wma_high   = wma(high, length_ma)
alma_high  = alma(high,length_ma, 0.85, 6)
smma_high = rma(high,length_ma)
lsma_high = linreg(high, length_ma, 0)
vwma_high = vwma(high,length_ma)



avg_high = (sma_high+ema_high+wma_high+alma_high+smma_high+lsma_high+vwma_high)/7

///////////////////////////////////////////

sma_low   = sma(low, length_ma)
ema_low   = ema(low, length_ma)
wma_low   = wma(low, length_ma)
alma_low  = alma(low,length_ma, 0.85, 6)
smma_low = rma(low,length_ma)
lsma_low = linreg(low, length_ma, 0)
vwma_low = vwma(low,length_ma)



avg_low = (sma_low+ema_low+wma_low+alma_low+smma_low+lsma_low+vwma_low)/7

////////////////////////////PLOTTING////////////////////////////////////////////


plot(avg_high , title="avg", color=color.green, linewidth = 4)
plot(avg_low , title="avg", color=color.red, linewidth = 4)

long= close > avg_high
short = close < avg_low

tplong=input(0.06, title="TP Long", step=0.01)
sllong=input(0.05, title="SL Long", step=0.01)

tpshort=input(0.045, title="TP Short", step=0.01)
slshort=input(0.05, title="SL Short", step=0.01)

if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    strategy.close("long", when=crossunder(low,avg_low))
    
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")
    strategy.close("short",when=crossover(high,avg_high))