Heikin-Ashi Smoothed Strategi Beli dan Jual

Penulis:ChaoZhang, Tarikh: 2023-10-07 15:01:06
Tag:

Ringkasan

Strategi ini berdasarkan satu penunjuk tunggal - Smoothed Heikin-Ashi, untuk melaksanakan trend mudah berikutan operasi beli dan jual. Ia mengenal pasti arah trend melalui penunjuk Smoothed Heikin-Ashi dan menentukan masa kemasukan digabungkan dengan corak lilin sejarah, untuk mengambil keluar keuntungan.

Logika Strategi

Strategi ini mengira purata bergerak harga terbuka, tinggi, rendah dan dekat untuk membina Smoothed Heikin-Ashi.

Keadaan beli: Bar s semasa ditutup > bar s terdahulu ditutup, bar s terdahulu ditutup > 2 bar lalu ditutup, 3 bar terakhir menaik.

Keadaan jual: Bar s semasa ditutup < bar s terdahulu ditutup, bar s terdahulu ditutup < 2 bar lalu ditutup, 3 bar terakhir menurun.

Kedua-dua keadaan membeli dan menjual memerlukan isyarat terakhir menjadi 0 atau isyarat bertentangan, untuk mengelakkan perdagangan arah yang sama berturut-turut.

Analisis Kelebihan

  • Logik mudah dengan satu penunjuk
  • Menggunakan kemahiran trend Heikin-Ashi berikut
  • Elakkan kehilangan trend atau berdagang sebaliknya melalui corak candlestick
  • Mengurangkan perdagangan yang tidak perlu dengan menapis isyarat pendua

Analisis Risiko

  • Heikin-Ashi mempunyai kesan kelewatan, mungkin terlepas titik perubahan trend
  • Pertimbangkan hanya 3 bar terakhir, kekurangan penilaian trend jangka panjang
  • Tiada set stop loss, risiko peningkatan kerugian
  • mengabaikan keadaan pasaran secara keseluruhan, terdedah kepada risiko sistematik

Peningkatan boleh dibuat dengan menggabungkan penunjuk lain untuk trend jangka panjang, mengoptimumkan strategi stop loss, memberi perhatian kepada pasaran keseluruhan dan lain-lain.

Arahan pengoptimuman

  • Tambah penunjuk lain untuk menentukan trend jangka panjang
  • Mengoptimumkan stop loss seperti trailing stop atau stop loss berasaskan peratusan
  • Pertimbangkan indeks pasaran keseluruhan untuk mengelakkan dagangan di pasaran terikat julat
  • Mengoptimumkan parameter seperti tempoh purata bergerak
  • Tambah penunjuk jumlah untuk memastikan sokongan jumlah dagangan

Ringkasan

Strategi ini menggunakan keupayaan mengikuti trend Heikin-Ashi dan menggabungkan corak lilin untuk menentukan masa masuk, sambil mengawal kekerapan perdagangan melalui penapisan isyarat duplikat. Logiknya mudah dan mudah dilaksanakan. Tetapi ia boleh ditingkatkan untuk menjadi lebih kukuh dengan menggunakan gabungan pelbagai penunjuk, mengoptimumkan kerugian berhenti, mempertimbangkan keadaan pasaran keseluruhan dan lain-lain.


/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Masoud Abdoli
//Heikin Ashi Smoothed Buy & Sell Strategy Rev.4
//Date: 01-Oct-2021
//@version=4

strategy(title="Abdoli's Heikin Ashi Smoothed Buy & Sell Strategy Rev.4", shorttitle="Heikin-Ashi Smoothed Rev.4", overlay=true,
 initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

MaPeriod = input (title="Moving Average Period?", type=input.integer, defval=65, minval=5, maxval=100, step=5)

maOpen  = ema(open , MaPeriod)
maHigh  = ema(high , MaPeriod)
maLow   = ema(low  , MaPeriod)
maClose = ema(close, MaPeriod)

haClose = (maOpen+maHigh+maLow+maClose)/4
haOpen = 0.0
haOpen:= na(haOpen[1]) ? (maOpen[1]+maClose[1])/2 : (haOpen[1]+haClose[1])/2
haHigh = max(maHigh, max(haClose, haOpen))
haLow  = min(maLow , max(haClose, haOpen))

plotcandle(haOpen, haHigh, haLow, haClose, title="heikin-Ashi smoothed", color=haOpen>haClose ? color.orange : color.blue)

B0 = haClose    - haOpen
B1 = haClose[1] - haOpen[1]
B2 = haClose[2] - haOpen[2]
BuyCondition = B0 > 0.0 and B1 > 0.0 and B2 > 0.0 and haClose > haClose[1] and haClose[1] > haClose[2]
SellCondition= B0 < 0.0 and B1 < 0.0 and B2 < 0.0 and haClose < haClose[1] and haClose[1] < haClose[2]

last_signal = 0
Buy_final  = BuyCondition  and (nz(last_signal[1]) == 0 or nz(last_signal[1]) ==-1)
Sell_final = SellCondition and (nz(last_signal[1]) == 0 or nz(last_signal[1]) == 1)
last_signal := Buy_final ? 1 : Sell_final ? -1 : last_signal[1]

plotshape(Buy_final , style=shape.labelup  , location=location.belowbar, color=color.blue, title="Buy label" , text="BUY" , textcolor=color.white)
plotshape(Sell_final, style=shape.labeldown, location=location.abovebar, color=color.red , title="Sell label", text="SELL", textcolor=color.white)

strategy.entry("Buy", strategy.long, when=Buy_final)
strategy.close("Buy", when=Sell_final)

Lebih lanjut