Strategi ini menggunakan penunjuk Absolute Price Oscillator (APO) untuk menjana isyarat perdagangan dan mengikuti trend. APO mengira perbezaan antara dua EMA dan perdagangan silang di atas / di bawah sifar.
APO terdiri daripada EMA yang lebih cepat dan lebih perlahan, mengambil perbezaan di antara mereka.
Apabila APO melintasi di atas zon beli (default 3), pergi panjang. Apabila ia melintasi di bawah zon jual (default -3), pergi pendek.
Pilihan untuk membalikkan isyarat - silang di atas menjual, silang di bawah membeli.
Kurva menunjukkan momentum harga, boleh mencari pembalikan pada perbezaan.
Ini adalah strategi trend berikut, menggunakan APO untuk menentukan arah trend untuk isyarat panjang / pendek yang berterusan. Parameter yang dioptimumkan boleh mengesan trend jangka sederhana.
Pelaksanaan mudah menggunakan kombinasi purata bergerak asas.
APO mengukur momentum dan arah harga.
Parameter lalai menghasilkan isyarat jangka menengah yang berterusan, mengelakkan perdagangan berlebihan.
Dapat mengesan pembalikan trend berdasarkan perbezaan harga / penunjuk.
Rendah kepada isyarat palsu dan whipsaws di pasaran pelbagai.
Isyarat yang lambat mungkin terlepas pembalikan cepat.
Tiada stop loss atau saiz kedudukan, pengurusan risiko yang tidak lengkap.
Pengurangan:
Mengoptimumkan parameter dan menguji kombinasi yang berbeza untuk setiap instrumen.
Tambah penapis untuk mengelakkan perdagangan dalam keadaan bergelombang.
Melaksanakan stop loss, contohnya trailing stop.
Pengoptimuman parameter untuk setiap instrumen untuk mencari pasangan yang ideal.
Penapis tambahan mengenai pergerakan harga atau jumlah untuk mengurangkan isyarat palsu.
Pengukuran kedudukan dinamik berdasarkan turun naik atau peratusan akaun.
Dioptimumkan mengambil keuntungan seperti penangguhan berhenti untuk mengikuti trend.
ML untuk menilai kebarangkalian isyarat perbezaan yang berjaya.
Sistem silang EMA ini menggunakan APO menyediakan asas yang kukuh untuk mengikuti trend. Dengan pengoptimuman dalam parameter, pengurusan risiko dan penapis, ia boleh menjadi strategi kuantitatif yang berkesan. Konsep terasnya mudah dan kukuh untuk pembangunan 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")