Dua Tahun Baru Tinggi Retracement Moving Average Strategi

Penulis:ChaoZhang, Tarikh: 2024-01-26 14:49:28
Tag:

img

Ringkasan

Strategi ini berdasarkan pengiraan unik harga tertinggi baru dua tahun dan purata bergerak saham. Ia menghasilkan isyarat beli apabila harga saham mundur ke purata bergerak eksponensial 13 hari selepas mencapai paras tertinggi dua tahun.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan pengiraan unik berikut:

  1. Apabila harga saham mencapai tahap tertinggi baru dalam tempoh dua tahun yang lalu, ia membentuk puncak jangka pendek. Ini adalah tahap harga kritikal.

  2. Apabila harga menarik diri dari paras tertinggi baru ini dan menarik kembali ke purata bergerak eksponensial 13 hari, ia memberikan peluang membeli yang baik.

  3. Di samping itu, apabila isyarat beli dipicu, harga saham mesti berada dalam julat 10% daripada paras tertinggi dua tahun, tidak terlalu jauh.

  4. Bagi kedudukan terbuka, jika harga memecahkan 5% di bawah garisan MA 21 hari atau menurun 20% dari paras tertinggi dua tahun, kedudukan akan dihentikan untuk mengunci keuntungan.

Kelebihan Strategi

Ini adalah strategi jangka panjang dengan kelebihan ini:

  1. Harga tinggi dua tahun yang unik dapat dengan berkesan mengenal pasti peluang pembalikan trend yang berpotensi.

  2. Garis EMA 13 hari berfungsi sebagai penapis kemasukan untuk mengelakkan whipsaws dan menentukan momentum yang lebih kuat.

  3. Pengiraan unik menghasilkan isyarat berdasarkan tindakan harga, mengelakkan gangguan subjektif.

  4. Stop loss yang munasabah membolehkan mengunci kebanyakan keuntungan.

Risiko dan Penyelesaian

Terdapat juga beberapa risiko terutamanya seperti berikut:

  1. Pasaran boleh mengalami penurunan yang mendalam, tidak dapat berhenti tepat pada masanya.

  2. Jurang besar dalam semalam boleh menghalang stop loss yang sempurna. Oleh itu peratusan stop loss perlu diperluas untuk menyesuaikan diri.

  3. Garis 13 hari mungkin tidak menyaring penyatuan dengan baik, menghasilkan isyarat palsu yang berlebihan.

  4. Harga tinggi baru mungkin tidak berfungsi dengan baik untuk menentukan perubahan trend. Penunjuk lain boleh digabungkan untuk meningkatkan keberkesanan.

Cadangan Pengoptimuman Strategi

Terdapat ruang untuk pengoptimuman lanjut:

  1. Menggabungkan alat lain untuk menilai keadaan pasaran secara keseluruhan, mengelakkan kedudukan yang tidak perlu.

  2. Tambah penunjuk momentum untuk mengelakkan jarak yang lebih baik.

  3. Mengoptimumkan parameter purata bergerak untuk menangkap corak harga yang lebih baik.

  4. Menggunakan pembelajaran mesin untuk mengoptimumkan parameter tinggi dua tahun secara dinamik untuk lebih fleksibiliti.

Kesimpulan

Kesimpulannya, ini adalah strategi breakout jangka panjang yang unik, dengan kunci adalah tahap harga tinggi dua tahun dan garis EMA 13 hari yang berfungsi sebagai penapis kemasukan.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
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/
// © Part Timer

//This script accepts from and to date parameter for backtesting. 
//This script generates white arrow for each buying signal

//@version=4
strategy("AMRS_LongOnly_PartTimer", overlay = true)

//i_endTime = input(defval = timestamp("02 Jun 2021 15:30 +0000"), title = "End Time", type=input.time)

StartYear=input(defval = 2000, title ="Start Year", type=input.integer)
StartMonth=input(defval = 01, title ="Start Month", type=input.integer)
StartDate=input(defval = 01, title ="Start Date", type=input.integer)

endYear=input(defval = 2021, title ="End Year", type=input.integer)
endMonth=input(defval = 06, title ="End Month", type=input.integer)
endDate=input(defval = 03, title ="End Date", type=input.integer)

ema11=ema(close,11)
ema13=ema(close,13)
ema21=ema(close,21)

afterStartDate = true
//g=bar_index==1
//ath()=>
    //a=0.0
    //a:=g ? high : high>a[1] ? high:a[1]
    
//a = security(syminfo.tickerid, 'M', ath(),lookahead=barmerge.lookahead_on)

newHigh = (high > highest(high,504)[1])
//plot down arrows whenever it's a new high
plotshape(newHigh, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.tiny)
b=highest(high,504)[1]
VarChk=((b-ema13)/b)*100
TrigLow = (low <= ema13) and (low >= ema21) and (VarChk <= 10)
plotshape(TrigLow, style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny)
ExitPrice=(ema21 - (ema21*0.05))
DrawPrice=(b - (b*0.20))
stopprice=0.0
if (close <= ExitPrice)
    stopprice := ExitPrice
if (close <= DrawPrice)
    stopprice := DrawPrice

if (TrigLow and afterStartDate)
    strategy.entry("Long", strategy.long)

strategy.exit("exit","Long", stop=stopprice)
//beforeEndDate = (time < i_endTime)
beforeEndDate = (time >= timestamp(syminfo.timezone,endYear, endMonth, endDate, 0, 0))
if (beforeEndDate)
    strategy.close_all()

Lebih lanjut