EintSimple Pullback Strategi

Penulis:ChaoZhang, Tarikh: 2024-01-15 14:04:54
Tag:

img

Moving Average Crossover EintSimple Pullback Strategi

Ringkasan

Strategi Pullback EintSimple adalah strategi pembalikan purata berdasarkan persilangan purata bergerak berganda. Ia mula-mula menggunakan garis purata bergerak jangka panjang dan jangka pendek. Apabila garis purata bergerak jangka pendek memecahkan garis purata bergerak jangka panjang dari bawah, isyarat beli dihasilkan. Untuk menapis pecah palsu, strategi ini juga memerlukan harga penutupan lebih tinggi daripada garis purata bergerak jangka panjang.

Jika harga jatuh di bawah garis purata bergerak jangka pendek sekali lagi, ia akan mencetuskan isyarat keluar. Di samping itu, strategi ini juga menetapkan keluar stop loss. Jika retracement dari titik tertinggi mencapai peratusan stop loss yang ditetapkan, ia juga akan keluar kedudukan.

Logika Strategi

Strategi ini terutamanya bergantung kepada salib emas purata bergerak berganda untuk menentukan masa kemasukan. Khususnya, syarat-syarat berikut mesti dipenuhi pada masa yang sama sebelum membuka kedudukan untuk pergi panjang:

  1. Harga penutupan lebih besar daripada purata bergerak jangka panjang ma1
  2. Harga penutupan lebih rendah daripada purata bergerak jangka pendek ma2
  3. Tidak ada jawatan sekarang

Selepas memenuhi syarat di atas, strategi ini akan mengambil kedudukan panjang penuh.

Penghakiman isyarat keluar adalah berdasarkan dua syarat. Satu adalah bahawa harga jatuh semula di bawah purata bergerak jangka pendek lagi. Yang lain adalah bahawa retracement dari titik tertinggi mencapai peratusan stop loss yang ditetapkan. Syarat keluar khusus adalah seperti berikut:

  1. Harga penutupan lebih besar daripada purata bergerak jangka pendek ma2
  2. Penarikan balik dari titik tertinggi mencapai peratusan stop loss yang ditetapkan

Apabila mana-mana syarat keluar dipenuhi, strategi ini akan menutup semua kedudukan panjang.

Kelebihan

  1. Menggunakan crossover purata bergerak berganda digabungkan dengan harga penutupan yang kukuh untuk menilai dapat menapis pecah palsu dengan berkesan.

  2. Mengambil masuk pulback boleh masuk selepas harga membentuk titik perubahan jangka pendek.

  3. Dengan tetapan stop loss, ia boleh mengehadkan pengeluaran maksimum.

Risiko

  1. Strategi crossover purata bergerak berganda cenderung menghasilkan isyarat perdagangan yang kerap dan boleh mengejar puncak dan membunuh bahagian bawah.

  2. Tetapan parameter purata bergerak yang tidak betul boleh menyebabkan lengkung yang terlalu licin atau terlalu sensitif.

  3. Tetapan stop loss yang terlalu longgar akan membawa kepada kerugian yang diperbesar.

Pengoptimuman

  1. Uji kombinasi panjang yang berbeza dari purata bergerak jangka panjang dan jangka pendek untuk mencari parameter yang optimum.

  2. Bandingkan kesan menggunakan harga dekat dan harga biasa untuk menentukan persilangan purata bergerak.

  3. Uji tambah penapis seperti jumlah atau volatiliti penunjuk.

  4. Backtest mengoptimumkan peratusan stop loss untuk mencari tetapan yang terbaik.

Kesimpulan

EintSimple Pullback Strategy adalah strategi pullback purata bergerak berganda yang mudah dan praktikal. Ia dengan berkesan memanfaatkan fungsi hala tuju purata bergerak sambil menggabungkan harga penutupan yang kukuh untuk menapis isyarat palsu. Walaupun strategi ini cenderung untuk perdagangan yang kerap dan mengejar puncak dan membunuh bahagian bawah, ia boleh ditingkatkan lagi melalui pengoptimuman parameter dan menambah penapis. Secara keseluruhan, ini adalah strategi yang hebat untuk pemula perdagangan kuantitatif berlatih dan mengoptimumkan.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100)// 100% of balance invested on each trade

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=75, step=1, group="Strategy Parameters", tooltip="Long-term EMA")
i_ma2           = input.int(title="MA 2 Length", defval=9, step=1, group="Strategy Parameters", tooltip="Short-term EMA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=true, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.ema(close, i_ma1)
ma2 = ta.ema(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.fuchsia)

Lebih lanjut