Strategi ini menggunakan indikator momentum harga untuk menentukan arah perdagangan. Secara khusus, ini menghitung moving average dan harga rata-rata masing-masing. Ketika harga melintasi di atas moving average dan harga rata-rata, sinyal beli dihasilkan. Untuk menyaring sinyal palsu, tidak memerlukan sinyal sebelumnya yang serupa. Kemudian menyimpan status sinyal dan menghasilkan sinyal posisi pembukaan akhir dalam kombinasi dengan moving average. Strategi ini juga berisi pengaturan stop loss dan take profit.
Strategi ini terutama mengandalkan indikator momentum harga untuk menilai arah tren. Pertama-tama menghitung rata-rata bergerak dan harga rata-rata harga:
swmaClose = swma(close)
vwapClose = vwap(close)
Di mana?swma
adalah rata-rata bergerak yang dihaluskan danvwap
adalah harga rata-rata tertimbang volume.
Kemudian bandingkan harga dengan rata-rata untuk melihat apakah harga melintasi di atas rata-rata bergerak dan harga rata-rata, untuk menilai apakah itu sinyal bullish:
swmaLong = close > swmaClose
vwapLong = close > vwapClose
Untuk menyaring sinyal palsu, tidak diperlukan sinyal sebelumnya dari kedua indikator ini:
triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1]
Selanjutnya, simpan sinyal bullish:
saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1]
Akhirnya, ketika sinyal penyeberangan yang disimpan dan harga menyeberang di atas rata-rata bergerak lagi, menghasilkan sinyal posisi pembukaan:
startLong = saveLong and swmaLong
Hal ini dapat menyaring beberapa sinyal palsu dan membuat sinyal lebih dapat diandalkan.
Strategi ini juga berisi pengaturan stop loss dan take profit. Jarak stop loss dapat dikonfigurasi, dan take profit diatur menjadi kelipatan tertentu dari stop loss.
Strategi ini memiliki keuntungan berikut:
Strategi ini juga memiliki beberapa risiko:
Pengendalian:
Strategi ini juga dapat dioptimalkan dalam arah berikut:
Optimalisasi ini dapat meningkatkan fleksibilitas strategi, ketahanan dan profitabilitas.
Secara keseluruhan, strategi pelacakan momentum harga ini adalah strategi pelacakan tren yang sederhana, sederhana dan logis. Strategi ini menggunakan rata-rata pergerakan harga dan harga rata-rata untuk menentukan arah momentum harga, dan merancang mekanisme verifikasi multi-langkah untuk meningkatkan kualitas sinyal. Strategi ini juga mengandung pengaturan stop loss dan take profit yang wajar. Dari segi kode, logika strategi sangat ringkas, hanya membutuhkan 20+ baris skrip Pine untuk diimplementasikan. Singkatnya, strategi ini adalah contoh pembelajaran yang sangat baik, pemula dapat menggunakannya sebagai titik awal yang sangat baik untuk memahami strategi perdagangan kuantitatif. Tentu saja, strategi itu sendiri juga memiliki nilai perdagangan praktis. Melalui optimasi parameter dan perluasan fungsi, ini dapat menjadi sistem pelacakan praktis untuk menghindari kebisingan dan tren perdagangan.
/*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)