Fisher Yurik Mengikuti Strategi Stop

Penulis:ChaoZhang, Tanggal: 2024-02-02 14:57:33
Tag:

img

Gambaran umum

Strategi trailing stop Fisher Yurik adalah strategi perdagangan kuantitatif yang mengintegrasikan indikator Fisher Yurik dan mekanisme trailing stop.

Logika Strategi

  1. Kisaran tanggal input untuk menentukan waktu backtest/live trading
  2. Parameter input untuk indikator Fisher Yurik, default untuk 2 periode
  3. Input profit taking and stop loss ratios, default hingga 5% profit dan 2% loss
  4. Menghitung garis utama dan sinyal dari indikator Fisher Yurik
  5. Menghasilkan sinyal beli ketika garis utama melintasi di atas garis sinyal
  6. Setel trailing stop, keluar posisi panjang ketika harga turun 2% setelah masuk
  7. Ambil keuntungan ketika harga naik di atas 5%

Analisis Keuntungan

  1. Indikator Fisher Yurik mudah mengidentifikasi tren, sinyal beli yang akurat
  2. Trailing stop lock dalam sebagian besar keuntungan sementara menghindari berhenti di luar ambang
  3. Parameter yang dapat disesuaikan sesuai dengan lingkungan pasar yang berbeda
  4. Implementasi sederhana dan mudah dipahami

Analisis Risiko

  1. Penyesuaian parameter yang tidak benar dapat menyebabkan perdagangan yang terlalu agresif, membutuhkan pengujian yang hati-hati
  2. Stop loss yang terlalu luas dapat menyebabkan kerugian lebih dari yang diharapkan.
  3. Mengambil keuntungan terlalu ketat dapat mengurangi keuntungan pendek, membatasi profitabilitas
  4. Parameter yang tepat harus ditentukan untuk produk yang berbeda

Risiko dapat ditangani dengan menyesuaikan rasio stop/profit, parameter pengujian, menggunakan filter sinyal, aturan ukuran posisi.

Peluang Peningkatan

  1. Mengoptimalkan Fisher Yurik parameter untuk dampak pada strategi
  2. Tambahkan filter sinyal seperti MACD, KD untuk meningkatkan kualitas sinyal
  3. Tambahkan kondisi masuk seperti breakout dari Bollinger Bands
  4. Menggabungkan aturan ukuran posisi untuk mengontrol risiko per perdagangan
  5. Meningkatkan metode penghentian trailing, misalnya smoothed, Chandelier Exits

Kesimpulan

Strategi stop trailing Fisher Yurik menggabungkan identifikasi tren dan manajemen risiko. Dengan penyesuaian parameter, kombinasi indikator, dan peningkatan stop loss, ini dapat sesuai dengan sebagian besar instrumen untuk keuntungan yang baik dalam toleransi risiko yang dapat diterima.


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

//@version=5
strategy("Fisher_Yurik Strategy with Trailing Stop", shorttitle="FY Strategy", overlay=true)

// Date Ranges 
from_month = input(defval = 1, title = "From Month")
from_day   = input(defval = 1, title = "From Day")
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month")
to_day     = input(defval = 1, title = "To Day")
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
period = input(2, title='Period')
cost = input.float(1.05, title='profit level ', step=0.01)
dusus = input.float(1.02, title='after the signal', step=0.01)

var float Value = na
var float Fish = na
var float ExtBuffer1 = na
var float ExtBuffer2 = na

price = (high + low) / 2
MaxH = ta.highest(high, period)
MinL = ta.lowest(low, period)

Value := 0.33 * 2 * ((price - MinL) / (MaxH - MinL) - 0.5) + 0.67 * nz(Value[1])
Value := math.max(math.min(Value, 0.999), -0.999)
Fish := 0.5 * math.log((1 + Value) / (1 - Value)) + 0.5 * nz(Fish[1])

up = Fish >= 0

ExtBuffer1 := up ? Fish : na
ExtBuffer2 := up ? na : Fish

var float entryPrice = na
var float stopPrice = na
 
if (ExtBuffer1 > ExtBuffer1[1])
    entryPrice := close*dusus
    stopPrice := close * cost 
 
if (ExtBuffer2 < ExtBuffer2[1])
    entryPrice := close
    stopPrice := close * cost

// Sadece seçilen test döneminde işlem yapma koşulu eklenmiştir
strategy.entry("Buy", strategy.long, when=ExtBuffer1 > ExtBuffer1[1] and window)
strategy.exit("Take Profit/Trailing Stop", from_entry="Buy", when=(close >= entryPrice * cost) or (close < stopPrice), trail_offset=0.08, trail_price=entryPrice * cost)


Lebih banyak