Strategi Pelbagai Jangka Masa

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

img

Ringkasan

Strategi ini menggunakan persetujuan penunjuk merentasi pelbagai jangka masa untuk mengesan trend. Ia pergi panjang atau pendek apabila jangka masa harian, 10 hari, 15 hari dan 30 hari secara serentak memberikan isyarat menaik atau menurun, dengan stop loss dinamik.

Logika Strategi

Strategi ini menilai arah trend menggunakan empat bingkai masa - harian, 10 hari, 15 hari dan 30 hari. Apabila harga penutupan lebih tinggi daripada harga pembukaan di semua empat bingkai masa, ia menunjukkan isyarat kenaikan. Apabila harga penutupan lebih rendah daripada harga pembukaan di semua empat bingkai masa, ia menunjukkan isyarat penurunan.

Apabila isyarat bullish, ia pergi panjang. Apabila isyarat bearish, ia pergi pendek. Selepas memasuki, saluran KC digunakan untuk stop loss dinamik.

Secara khusus, strategi ini membandingkan harga pembukaan dan harga penutupan dalam jangka masa yang berbeza untuk menentukan arah trend. Jika harga penutupan lebih tinggi daripada harga pembukaan, jangka masa dianggap bullish dan digambarkan dengan warna hijau. Jika harga penutupan lebih rendah daripada harga pembukaan, jangka masa dianggap menurun dan digambarkan dengan warna merah.

Apabila semua empat bingkai masa bersetuju dengan isyarat kenaikan, strategi akan membuka kedudukan panjang. Apabila semua empat bingkai masa bersetuju dengan isyarat penurunan, strategi akan membuka kedudukan pendek. Ia akan keluar apabila mencapai stop loss atau trend berbalik.

Kelebihan

  1. Menggunakan pelbagai jangka masa untuk mengesahkan trend dapat menapis penembusan palsu dengan berkesan dan menentukan arah trend.

  2. Stop loss dinamik boleh memaksimumkan perlindungan modal.

  3. Kriteria kemasukan yang ketat mengurangkan perdagangan yang tidak perlu dan kos slippage.

  4. Menggabungkan pelbagai jangka masa menyeimbangkan kelajuan keuntungan dan kestabilan.

Risiko

  1. Kriteria kemasukan mungkin terlalu ketat, kehilangan beberapa peluang.

  2. Tetapan stop loss yang tidak betul mungkin terlalu agresif atau konservatif.

  3. Pilihan jangka masa yang tidak sesuai mungkin tidak sejajar dengan trend jangka panjang atau jangka pendek.

  4. Pengubahsuaian tiba-tiba daripada peristiwa mungkin tidak mencetuskan stop loss.

Kawasan Peningkatan

  1. Mengoptimumkan pilihan jangka masa untuk menyeimbangkan kelajuan keuntungan dan kestabilan.

  2. Uji tetapan parameter yang berbeza untuk mengoptimumkan tahap stop loss.

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

  4. Memantau peristiwa penting untuk mengelakkan kerugian daripada perubahan tiba-tiba.

Ringkasan

Strategi ini mengintegrasikan pertimbangan dalam pelbagai jangka masa, dengan kriteria kemasukan yang ketat dan berhenti dinamik, bertujuan untuk pulangan yang stabil. Ia mempunyai risiko peluang yang hilang dan kawalan risiko yang tidak tepat. Langkah seterusnya adalah untuk terus mengoptimumkan parameter untuk kestabilan yang lebih tinggi.


/*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 lanjut