Strategi Pengesanan Trend Berbilang Jangka Masa

Penulis:ChaoZhang, Tarikh: 2023-11-14 14:29:39
Tag:

img

Ringkasan

Strategi ini menggabungkan purata bergerak, MACD dan RSI merentasi pelbagai jangka masa untuk mengenal pasti arah trend dan memperdagangkan trend indeks S&P500.

Logika Strategi

  1. Purata bergerak mudah 10 hari menilai trend harga. Harga melintasi di atas MA 10 hari menunjukkan kenaikan, dan melintasi di bawah menunjukkan penurunan.

  2. MACD menilai kekuatan momentum. Ia mengira perbezaan antara purata bergerak eksponensial 12 dan 21 hari, dan persilangan antara garis MACD dan garis isyarat menghasilkan isyarat perdagangan.

  3. RSI 14 hari dan MA 50 hari dikira. RSI melintasi di atas MA adalah isyarat kenaikan, dan melintasi di bawah isyarat penurunan.

  4. Jangka masa 1 minit, 3 minit dan 5 minit mengesahkan konsistensi trend.

  5. Apabila harga melintasi di atas MA 10 hari, RSI melintasi di atas MA, dan garis MACD melintasi di atas garis isyarat, isyarat beli dihasilkan.

Kelebihan

  1. Menggabungkan penunjuk meningkatkan ketepatan isyarat. MA 10 hari menilai trend utama, MACD menentukan kekuatan momentum, dan RSI mengesahkan tahap overbought / oversold. Kombo penunjuk mengesahkan satu sama lain dan mengurangkan perdagangan yang salah.

  2. Pengesahan jangka masa berbilang mengelakkan bunyi bising pasaran. Pengesahan berganda di dalam jangka masa 1 minit, 3 minit dan 5 minit memastikan penampilan isyarat serentak dan menapis isyarat palsu.

  3. Bentuk carta membantu penilaian visual untuk kebolehpercayaan. Analisis corak grafik mengelakkan tahap overbought / oversold yang melampau dan mengurangkan risiko kerugian.

  4. Frekuensi dagangan sederhana sesuai dengan dagangan indeks. MA 10 hari sebagai penunjuk utama menghalang dagangan berlebihan, mengelakkan kos transaksi tambahan daripada overtrading.

Risiko

  1. Kegagalan untuk mengesan pembalikan mendadak dalam peristiwa yang tidak rasional. Pergolakan pasaran seperti itu mengganggu model dan harus mengurangkan saiz kedudukan untuk kawalan risiko.

  2. Tetapan parameter tetap tanpa mengambil kira keadaan pasaran yang berubah. Parameter harus diselaraskan secara dinamik untuk rejimen pasaran yang berbeza dalam perdagangan langsung.

  3. Titik masuk yang terlalu ideal dengan kesukaran pelaksanaan dalam amalan. isyarat masuk harus disesuaikan dengan slippage untuk meningkatkan kecairan yang boleh dilaksanakan.

  4. Pelbagai jangka masa meningkatkan kelewatan isyarat. Kawalan risiko yang betul diperlukan untuk meminimumkan kerugian akibat kelewatan semasa peristiwa tiba-tiba.

Peningkatan

  1. Menggabungkan mekanisme stop loss seperti trailing stop loss dan peratusan stop loss untuk mengawal kerugian perdagangan tunggal.

  2. Mengoptimumkan tetapan parameter dinamik untuk menyesuaikan diri dengan pasaran yang berubah dan meningkatkan ketahanan strategi.

  3. Pertimbangkan perubahan rejim pasaran daripada peristiwa penting untuk mengelakkan kejutan model.

  4. Mengira kos dagangan seperti slippage dan menyesuaikan titik masuk / keluar untuk pelaksanaan yang lebih baik.

  5. Uji input harga yang berbeza seperti lilin sebagai pengesahan isyarat untuk mempelbagaikan pengesahan pelbagai jangka masa.

  6. Menggunakan algoritma pembelajaran mesin pada data besar untuk mengotomatiskan pengoptimuman strategi.

Kesimpulan

Strategi ini memperdagangkan trend S&P500 dengan berkesan melalui pengenalan trend dengan pelbagai penunjuk dan pengesahan isyarat merentasi jangka masa. Kekuatannya terletak pada ketepatan isyarat yang tinggi dan ketahanan bunyi bising, tetapi kawalan risiko dan penyesuaian parameter dinamik diperlukan.


/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
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/
// USE HEIEN ASHI, 1 min, SPX 500 USD OANDA
// © connor2279
//@version=5
strategy(title="SPX Strategy", shorttitle="SPXS", overlay=true)

//SMA
len1 = 10
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.lime : color.red, linewidth=2)

data_over = ta.crossover(close, out1)
dataO = close >= out1
data_under = ta.crossunder(close, out1)
dataU = close < out1

bgcolor(color=ta.crossover(close, out1) ? color.new(color.lime, 90) : na)
bgcolor(color=ta.crossunder(close, out1) ? color.new(color.red, 90) : na)     

//Norm MacD
sma = 12
lma = 21
tsp = 10
np = 50
    
sh = ta.ema(close,sma)  

lon= ta.ema(close,lma) 

ratio = math.min(sh,lon)/math.max(sh,lon)

Mac = ratio - 1
if(sh>lon)
    Mac := 2-ratio - 1
else
    Mac := ratio - 1

MacNorm = ((Mac-ta.lowest(Mac, np)) /(ta.highest(Mac, np)-ta.lowest(Mac, np)+.000001)*2)- 1

MacNorm2 = MacNorm

if(np<2)
    MacNorm2 := Mac
else
    MacNorm2 := MacNorm
    
Trigger = ta.wma(MacNorm2, tsp)

trigger_above = Trigger >= MacNorm
trigger_under = Trigger < MacNorm
plotshape(ta.crossover(Trigger, MacNorm2), style=shape.triangledown, color=color.red)
plotshape(ta.crossunder(Trigger, MacNorm2), style=shape.triangledown, color=color.lime)

//RSI / SMA RSI
swr=input(true,title="RSI")
src = close
len = 14
srs = 50
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
mr = ta.sma(rsi,srs)
rsi_above = rsi >= mr
rsi_under = rsi < mr

//All
buySignal = rsi_above and trigger_under and dataO
shortSignal = rsi_under and trigger_above and dataU
bgcolor(color=buySignal ? color.new(color.lime,97) : na)     
bgcolor(color=shortSignal ? color.new(color.red, 97) : na)     
     
sellSignal = ta.cross(close, out1) or ta.cross(Trigger, MacNorm2) or ta.cross(rsi, mr)
if (buySignal)
    strategy.entry("LONG", strategy.long, 1)

if (shortSignal)
    strategy.entry("SHORT", strategy.short, 1)

// Submit exit orders
strategy.close("LONG", when=sellSignal)
strategy.close("SHORT", when=sellSignal)

Lebih lanjut