Strategi ini menggunakan penunjuk momentum harga untuk menentukan arah perdagangan. Secara khusus, ia mengira purata bergerak dan harga purata masing-masing. Apabila harga melintasi di atas purata bergerak dan harga purata, isyarat beli dihasilkan. Untuk menapis isyarat palsu, ia tidak memerlukan isyarat sebelumnya yang serupa. Kemudian ia menyimpan status isyarat dan menghasilkan isyarat kedudukan pembukaan akhir dalam kombinasi dengan purata bergerak. Strategi ini juga mengandungi tetapan stop loss dan mengambil keuntungan.
Strategi ini terutamanya bergantung pada penunjuk momentum harga untuk menilai arah trend. Pertama ia mengira purata bergerak dan harga purata harga:
swmaClose = swma(close)
vwapClose = vwap(close)
Di mana?swma
ialah purata bergerak yang dilancangkan danvwap
kedua-duanya boleh mencerminkan tahap harga purata.
Kemudian bandingkan harga dengan purata untuk melihat jika harga melintasi di atas purata bergerak dan harga purata, untuk menilai jika ia adalah isyarat menaik:
swmaLong = close > swmaClose
vwapLong = close > vwapClose
Untuk menapis isyarat palsu, ia tidak memerlukan isyarat sebelumnya dari kedua-dua petunjuk ini:
triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1]
Seterusnya, simpan isyarat menaik:
saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1]
Akhirnya, apabila isyarat penyeberangan yang disimpan dan harga menyeberang di atas purata bergerak sekali lagi, menghasilkan isyarat kedudukan pembukaan:
startLong = saveLong and swmaLong
Ini boleh menapis beberapa isyarat palsu dan menjadikan isyarat lebih boleh dipercayai.
Strategi ini juga mengandungi tetapan stop loss dan take profit. Jarak stop loss boleh dikonfigurasi, dan take profit ditetapkan kepada kelipatan tertentu dari stop loss.
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai beberapa risiko:
Tindakan balas:
Strategi ini juga boleh dioptimumkan ke arah berikut:
Pengoptimuman ini boleh meningkatkan fleksibiliti strategi, ketahanan dan keuntungan.
Secara keseluruhan, strategi penjejakan momentum harga ini adalah strategi penjejakan trend yang mudah, mudah dan logik. Strategi ini menggunakan purata pergerakan harga dan harga purata untuk menentukan arah momentum harga, dan merancang mekanisme pengesahan pelbagai langkah untuk meningkatkan kualiti isyarat. Strategi ini juga mengandungi tetapan stop loss dan mengambil keuntungan yang munasabah. Dari segi kod, logika strategi sangat ringkas, memerlukan hanya 20+ baris skrip Pine untuk dilaksanakan. Ringkasnya, strategi ini adalah contoh pembelajaran yang sangat baik, pemula boleh menggunakannya sebagai titik permulaan yang sangat baik untuk memahami strategi perdagangan kuantitatif. Sudah tentu, strategi itu sendiri juga mempunyai nilai perdagangan praktikal. Melalui pengoptimuman parameter dan pengembangan fungsi, ia boleh menjadi sistem trek perdagangan praktikal untuk mengelakkan bunyi bising dan trend.
/*backtest start: 2023-12-03 00:00:00 end: 2024-01-02 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "Simple Price Momentum", shorttitle = "SPM", overlay = true, initial_capital = 20000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025) // How To Create A Simple Trading Strategy With TradingView // https://docs.google.com/document/d/1fXxCtPuGgTXb-RuBJNbwlfgkeiLTK5060LfTrzRlr5k/view swmaClose = swma(close) vwapClose = vwap(close) swmaLong = close > swmaClose vwapLong = close > vwapClose triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1] saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1] startLong = saveLong and swmaLong startLong := input(false, "Consecutive Orders") ? startLong : startLong and not startLong[1] stopLoss = input(250, "Stop Loss", step = 50) takeProfit = input(10, "Reward/Risk") * stopLoss strategy.entry("Open Long", strategy.long, when = startLong) strategy.exit("Exit Long", "Open Long", profit = stopLoss, loss = takeProfit) // bgcolor(swmaLong ? color.blue : na) // bgcolor(vwapLong ? color.orange : na) // bgcolor(triggerLong ? color.purple : na) // bgcolor(saveLong ? color.yellow : na) bgcolor(startLong[1] ? color.green : na)