Strategi Multi Timeframe

Penulis:ChaoZhang, Tanggal: 2024-02-19 11:13:22
Tag:

img

Gambaran umum

Strategi ini memanfaatkan kesepakatan indikator di beberapa kerangka waktu untuk melacak tren. Ini pergi panjang atau pendek ketika kerangka waktu harian, 10 hari, 15 hari dan 30 hari secara bersamaan memberikan sinyal bullish atau bearish, dengan stop loss dinamis.

Logika Strategi

Strategi ini menilai arah tren menggunakan empat kerangka waktu - harian, 10 hari, 15 hari dan 30 hari. Ketika harga penutupan lebih tinggi dari harga pembukaan di semua empat kerangka waktu, itu menunjukkan sinyal bullish. Ketika harga penutupan lebih rendah dari harga pembukaan di semua empat kerangka waktu, itu menunjukkan sinyal bearish.

Setelah masuk, saluran KC digunakan untuk stop loss dinamis.

Secara khusus, strategi ini membandingkan harga pembukaan dan harga penutupan di berbagai kerangka waktu untuk menentukan arah tren. Jika harga penutupan lebih tinggi dari harga pembukaan, kerangka waktu dianggap bullish dan digambarkan dengan warna hijau. Jika harga penutupan lebih rendah dari harga pembukaan, kerangka waktu dianggap bearish dan digambarkan dengan warna merah.

Ketika semua empat timeframe setuju pada sinyal bullish, strategi akan membuka posisi panjang. Ketika semua empat timeframe setuju pada sinyal bearish, strategi akan membuka posisi pendek. Ini akan keluar ketika mencapai stop loss atau trend berbalik.

Keuntungan

  1. Menggunakan beberapa kerangka waktu untuk mengkonfirmasi tren dapat secara efektif menyaring terobosan palsu dan menentukan arah tren.

  2. Stop loss dinamis dapat memaksimalkan perlindungan modal.

  3. Kriteria masuk yang ketat mengurangi perdagangan yang tidak perlu dan biaya slip.

  4. Menggabungkan beberapa kerangka waktu menyeimbangkan kecepatan keuntungan dan stabilitas.

Risiko

  1. Kriteria masuk mungkin terlalu ketat, kehilangan beberapa kesempatan.

  2. Pengaturan stop loss yang tidak tepat mungkin terlalu agresif atau konservatif.

  3. Pilihan jangka waktu yang tidak tepat mungkin tidak selaras dengan tren jangka panjang atau jangka pendek.

  4. Perubahan tiba-tiba dari peristiwa mungkin tidak memicu stop loss.

Bidang Peningkatan

  1. Mengoptimalkan pilihan jangka waktu untuk menyeimbangkan kecepatan keuntungan dan stabilitas.

  2. Uji pengaturan parameter yang berbeda untuk mengoptimalkan tingkat stop loss.

  3. Tambahkan algoritma pembelajaran mesin untuk membantu menilai titik pembalikan.

  4. Memantau peristiwa-peristiwa penting untuk menghindari kerugian dari pembalikan tiba-tiba.

Ringkasan

Strategi ini mengintegrasikan penilaian di beberapa kerangka waktu, dengan kriteria masuk yang ketat dan berhenti dinamis, bertujuan untuk pengembalian yang stabil.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[RichG] Easy MTF Strategy v1.1", overlay=false)

TF_1_time = input("D", "Timeframe 1")
TF_2_time = input("10D", "Timeframe 2")
TF_3_time = input("15D", "Timeframe 3")
TF_4_time = input("30D", "Timeframe 4")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
lengthBB=input(20, title="BB Length")
transaction_size = input(1, "Contract/Share Amount")

src = close, len = 20


out = sma(src, len)
width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line


kc() =>
    ma = sma(close, lengthKC)
    range = tr
    rangema = sma(range, lengthKC)
    upperKC = ma + rangema * multKC
    lowerKC = ma - rangema * multKC
    [lowerKC, upperKC] 

 
bb() =>
    source = close 
    basis = sma(source, lengthBB)
    dev = multKC * stdev(source, lengthBB)
    upperBB = basis + dev
    lowerBB = basis - dev
    [upperBB, lowerBB]

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor


TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear 
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long, qty=transaction_size)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short, qty=transaction_size)

[kc_lower,kc_upper] = kc()

strategy.close("MTF_Long", when=close < kc_upper)
strategy.close("MTF_Short", when=close > kc_lower)


Lebih banyak