Tren osilator harga absolut mengikuti strategi

Penulis:ChaoZhang, Tanggal: 2023-09-21 15:27:59
Tag:

Gambaran umum

Strategi ini menggunakan indikator Absolute Price Oscillator (APO) untuk menghasilkan sinyal perdagangan dan mengikuti tren.

Logika Strategi

  • APO terdiri dari EMA yang lebih cepat dan lebih lambat, mengambil perbedaan antara keduanya.

  • Ketika APO melintasi zona beli (default 3), pergi panjang. Ketika melintasi zona jual (default -3), pergi pendek.

  • Pilihan untuk membalikkan sinyal - lintas di atas menjual, silang di bawah membeli.

  • Kurva menunjukkan momentum harga, dapat menemukan pembalikan pada divergensi.

Ini adalah strategi mengikuti tren, menggunakan APO untuk menentukan arah tren untuk sinyal panjang / pendek yang berkelanjutan.

Keuntungan

  • Implementasi sederhana menggunakan kombinasi rata-rata bergerak dasar.

  • APO mengukur momentum harga dan arahnya.

  • Parameter default menghasilkan sinyal jangka menengah yang berkelanjutan, menghindari over-trading.

  • Dapat mendeteksi pembalikan tren berdasarkan divergensi harga / indikator.

Risiko

  • Cenderung terhadap sinyal palsu dan whipsaws di berbagai pasar.

  • Sinyal yang tertinggal mungkin tidak akan segera berbalik.

  • Tidak ada stop loss atau ukuran posisi, manajemen risiko tidak lengkap.

Pengurangan:

  • Mengoptimalkan parameter dan menguji kombinasi yang berbeda per instrumen.

  • Tambahkan filter untuk menghindari perdagangan dalam kondisi bergolak.

  • Mengimplementasikan stop loss, misalnya trailing stop.

Peluang Peningkatan

  • Optimasi parameter untuk setiap instrumen untuk menemukan pasangan ideal.

  • Filter tambahan pada aksi harga atau volume untuk mengurangi sinyal palsu.

  • Ukuran posisi dinamis berdasarkan volatilitas atau persentase akun.

  • Dioptimalkan mengambil keuntungan seperti trailing stop untuk mengikuti tren.

  • ML untuk menilai probabilitas sinyal divergensi yang berhasil.

Kesimpulan

Sistem EMA crossover ini menggunakan APO memberikan dasar yang kuat untuk mengikuti tren. Dengan optimasi dalam parameter, manajemen risiko dan filter, ini dapat menjadi strategi kuantitatif yang efektif. Konsep inti sederhana dan kuat untuk pengembangan lebih lanjut.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/09/2018
// The Absolute Price Oscillator displays the difference between two exponential 
// moving averages of a security's price and is expressed as an absolute value.
// How this indicator works
//    APO crossing above zero is considered bullish, while crossing below zero is bearish.
//    A positive indicator value indicates an upward movement, while negative readings 
//      signal a downward trend.
//    Divergences form when a new high or low in price is not confirmed by the Absolute Price 
//      Oscillator (APO). A bullish divergence forms when price make a lower low, but the APO 
//      forms a higher low. This indicates less downward momentum that could foreshadow a bullish 
//      reversal. A bearish divergence forms when price makes a higher high, but the APO forms a 
//      lower high. This shows less upward momentum that could foreshadow a bearish reversal.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Absolute Price Oscillator (APO) Backtest 2.0", shorttitle="APO")
LengthShortEMA = input(10, minval=1)
LengthLongEMA = input(20, minval=1)
BuyZone = input(3, step = 0.01)
SellZone = input(-3, step = 0.01)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
hline(0, color=gray, linestyle=line)
xPrice = close
xShortEMA = ema(xPrice, LengthShortEMA)
xLongEMA = ema(xPrice, LengthLongEMA)
xAPO = xShortEMA - xLongEMA
pos = iff(xAPO > BuyZone, 1,
       iff(xAPO < SellZone, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )  
plot(xAPO, color=blue, title="APO")

Lebih banyak