Strategi Pembalikan Momentum Pasaran

Penulis:ChaoZhang, Tarikh: 2024-02-29 15:10:11
Tag:

img

Ringkasan

Strategi ini menggabungkan penunjuk Supertrend dan Fisher Transform untuk mencari peluang pendek apabila pasaran terbalik. Ia boleh menyesuaikan parameter Supertrend dan Fisher Transform untuk mata wang kripto, saham dan pasaran yang berbeza. Apabila isyarat jual muncul, ia menunjukkan saiz kedudukan, stop loss dan mengambil tahap keuntungan. Anda juga boleh mengubah jumlah risiko.

Logika Strategi

Strategi ini mula-mula mengira Transform Fisher dengan 10 tempoh. Apabila garisan Fisher memecahkan 2.5 dari bawah, isyarat jual dihasilkan. Pada masa yang sama, ia mengira Julat Benar Purata (ATR) 10 tempoh sebagai saluran untuk Supertrend. Apabila harga melintasi bawah rel atas, isyarat jual dihasilkan. Jadi strategi menggabungkan Transform Fisher dan saluran Supertrend untuk menangkap peluang pendek apabila pasaran berbalik.

Khususnya, apabila penutupan semasa berada di bawah rel atas sebelumnya dan penutupan sebelumnya berada di atas rel bawah saluran Supertrend, ia menentukan pasaran telah berbalik dan menghasilkan isyarat jual. Pada masa yang sama, apabila garisan Fisher memecahkan 2.5 dari bawah, dan nilai Fisher sebelumnya lebih rendah daripada yang semasa, ia menentukan trend telah berbalik dan menghasilkan isyarat jual.

Jadi strategi ini memerlukan kedua-dua pengenalan pembalikan Supertrend dan Fisher Transform untuk menjana isyarat jual akhir.

Kelebihan

Strategi ini menggabungkan saluran Supertrend dan Fisher Transform, yang dapat menangkap dengan lebih tepat titik pembalikan pasaran. berbanding dengan menggunakan Supertrend atau Fisher sahaja, ia dapat mengurangkan isyarat palsu dan meningkatkan kestabilan strategi.

Di samping itu, strategi ini memberikan fleksibiliti untuk menyesuaikan parameter Supertrend dan Fisher. Pengguna boleh memilih kombinasi parameter terbaik untuk pasaran dan produk yang berbeza untuk menyesuaikan pasaran dengan tujuan. Ini adalah strategi yang boleh disesuaikan.

Strategi ini juga menyediakan pengurusan jumlah risiko. Pengguna boleh menyesuaikan modal risiko untuk setiap pesanan dengan mudah untuk memenuhi keperluan pengurusan risiko mereka sendiri. Pada masa yang sama, ia secara automatik mengira tahap berhenti kerugian dan mengambil keuntungan untuk mencapai nisbah risiko-balasan yang baik.

Risiko

Strategi ini terutamanya bergantung pada saluran Supertrend untuk menentukan struktur pasaran. Apabila trend berlangsung untuk tempoh yang panjang, Supertrend mungkin gagal. Dalam kes ini, tempoh atau pengganda ATR saluran harus ditingkatkan dengan sewajarnya.

Di samping itu, Fisher Transform cenderung menghasilkan isyarat palsu atau isyarat awal dengan mudah. Apabila turun naik pasaran tinggi, tempoh Fisher harus diselaraskan untuk menapis beberapa bunyi bising.

Di samping itu, kadar kemenangan keseluruhan strategi pembalikan mungkin terhad. Ia harus digabungkan dengan penunjuk trend berikut untuk mengelakkan membuka kedudukan di zon yang terikat julat atau mengambil bahagian selepas trend menjadi lebih jelas. Purata bergerak boleh ditambah sebagai penapis untuk meningkatkan kestabilan.

Arahan Peningkatan

Strategi ini boleh ditingkatkan dari aspek berikut:

  1. Mengoptimumkan tempoh ATR dan pengganda ATR Supertrend untuk kombinasi parameter terbaik berdasarkan produk dan keadaan pasaran yang berbeza.

  2. Mengoptimumkan tempoh Fisher untuk meluruskan lengkung dan mengelakkan isyarat palsu.

  3. Tambah Purata Bergerak atau Bollinger Bands sebagai penunjuk tambahan untuk mengelakkan pembukaan kedudukan di pasaran pelbagai.

  4. Gabungkan Fisher Transform pada jangka masa yang berbeza untuk mencapai penghakiman pembalikan yang lebih stabil.

  5. Tambah modul pengurusan kedudukan seperti nisbah leverage, saiz kedudukan, peraturan tambahan, dan lain-lain untuk mengawal risiko.

  6. Menggabungkan kaedah pembelajaran mesin untuk mencapai pengoptimuman parameter automatik dan pemasangan strategi.

Kesimpulan

Strategi ini mengintegrasikan Supertrend dan Fisher Transform dengan fleksibiliti untuk menyesuaikan diri dengan produk yang berbeza dengan penyesuaian parameter, berbanding dengan strategi penunjuk tunggal. Ia mencapai penilaian isyarat dan kawalan risiko yang lebih boleh dipercayai. Dengan peningkatan berterusan, strategi ini menjanjikan untuk meningkatkan kestabilan dan keuntungan. Ia adalah strategi berkualiti tinggi yang bernilai penjejakan dan pengumpulan jangka panjang.


/*backtest
start: 2024-02-21 00:00:00
end: 2024-02-27 03:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend and Fisher_SHORT", overlay=true)

//This block is for  Fisher Transformation Calculation.
len = input.int(10, minval=1, title="Length") // Length is optional. 10 is good but is up to you.
high_ = ta.highest(hl2, len)
low_ = ta.lowest(hl2, len)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((hl2 - low_) / (high_ - low_) - .5) + .67 * nz(value[1]))
fish1 = 0.0
fish1 := .5 * math.log((1 + value) / (1 - value)) + .5 * nz(fish1[1])
fish2 = fish1[1]

// Sell condition for Fisher transformation.
sell_signal = (fish1 > 2.5) and (fish2 > fish1)
durum = 0 //just for the situation.

if (sell_signal)
    durum := -1 // now it changes from 0 to -1.

// Supertrend indicator inputs and calculations (same as in the indicator)
Periods = input(title='ATR Period', defval=10) // period is 10, but you can change it
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=2) //atr multiplier is important. it is 2 for this strategy but you can find another for best performance 
RiskAmount = input.float(title='Risk Amount ($)', defval=10.0, minval=0.0, step=1.0) // ıf you use risk-reward method, risk is 10$ for each position. you can also change it
changeATR = input(title='Change ATR Calculation Method ?', defval=true)

atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Calculate position size based on risk amount
riskPerContract = atr * Multiplier
contracts = RiskAmount / (riskPerContract * syminfo.mintick)

//short signal condition
sellSignal = trend == -1 and trend[1] == 1 and durum == -1

plotshape(sellSignal, title='Sell Signal', location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) //shows the signal.

// variables
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
var float atr1 = na
var float takeProfit2 = na
var float takeProfit3 = na

//it calculates the stop level and reward profit levels using atr.
if (sellSignal)
    entryPrice := close
    atr1 := atr
    stopLoss := entryPrice + atr1 * Multiplier
    contracts := entryPrice / (stopLoss - entryPrice) * RiskAmount / entryPrice
    takeProfit := entryPrice - atr1 * Multiplier
    takeProfit2 := entryPrice - 2 * atr1 * Multiplier
    takeProfit3 := entryPrice - 3 * atr1 * Multiplier

if (sellSignal)
    strategy.entry("Sell", strategy.short, qty=1)

// 
if (close >= stopLoss)
    strategy.close("Sell", comment="Stop Loss Hit")
else if (close <= takeProfit)
    strategy.close("Sell", comment="Take Profit Hit")

// draw the stop, entry and profit levels
plot(stopLoss, title="Stop Loss", color=color.red, linewidth=1, style=plot.style_linebr)
plot(entryPrice, title="Entry Price", color=color.orange, linewidth=1, style=plot.style_linebr)
plot(takeProfit, title="Take Profit", color=color.green, linewidth=1, style=plot.style_linebr)
plot(takeProfit2, title="Take Profit 2", color=color.blue, linewidth=1, style=plot.style_linebr)
plot(takeProfit3, title="Take Profit 3", color=color.purple, linewidth=1, style=plot.style_linebr)


Lebih lanjut