Ide utama dari strategi ini adalah untuk menilai dan melacak tren harga dengan menggabungkan indikator persentase peringkat dan optimasi parameter. Strategi menghasilkan sinyal perdagangan dengan membandingkan harga saat ini dengan persentase harga selama periode sejarah tertentu untuk menangkap efek cermin dan melacak tren untuk kelebihan pengembalian.
Strategi ini menggunakan indikator percentrank untuk menentukan tren harga. Percentrank mewakili kekuatan relatif harga saat ini selama periode yang dilihat. Parameter len menunjukkan panjang periode historis yang akan dilihat.
Jangkauan nilai percentrank adalah dari 0 sampai 100. Ketika nilai percentrank mendekati 0, itu berarti harga saat ini dekat dengan harga terendah dalam periode yang dilihat dan berada di area yang undervalued. Ketika mendekati 100, itu berarti harga saat ini dekat dengan harga tertinggi dalam periode yang dilihat dan berada di area yang overvalued.
Strategi ini juga memperkenalkan parameter skala sebagai offset untuk memindahkan kisaran 0 sampai 100 ke kisaran skala ke kisaran skala 100+. Dua garis sinyal level_1 dan level_2 juga ditetapkan, di mana level_1 menunjukkan tingkat panjang dan level_2 menunjukkan tingkat pendek.
Ketika indikator price percentrank melintasi level_1 ke atas, sinyal panjang dihasilkan. Ketika melintasi level_2 ke bawah, sinyal pendek dihasilkan. Kondisi keluar bertentangan dengan sinyal masuk.
Untuk mengatasi risiko di atas, parameter seperti len, skala, level dapat disesuaikan untuk optimasi. indikator lain juga dapat dimasukkan untuk konfirmasi untuk menghindari perdagangan yang salah.
Ada ruang untuk optimalisasi strategi lebih lanjut:
Ide keseluruhan strategi ini jelas, menerapkan metode kuantitatif optimasi parameter untuk menilai dan melacak tren harga.
/*backtest start: 2023-12-02 00:00:00 end: 2024-01-01 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Alex_Dyuk //@version=4 strategy(title="percentrank", shorttitle="percentrank") src = input(close, title="Source") len = input(title="lookback - Период сравнения", type=input.integer, defval=10, minval=2) scale = input(title="scale offset - смещение шкалы", type=input.integer, defval=50, minval=0, maxval=100) level_1 = input(title="sygnal line 1", type=input.integer, defval=30) level_2 = input(title="sygnal line 2", type=input.integer, defval=-30) prank = percentrank(src,len)-scale plot(prank, style = plot.style_columns) plot(level_2, style = plot.style_line, color = color.red) plot(level_1, style = plot.style_line, color = color.green) longCondition = (crossunder(level_1, prank) == true) if (longCondition) strategy.entry("Long", strategy.long) longExitCondition = (crossover(level_2, prank) == true) if (longExitCondition) strategy.close("Long") shortCondition = (crossover(level_2, prank) == true) if (shortCondition) strategy.entry("Short", strategy.short) shortexitCondition = (crossunder(level_1, prank) == true) if (shortexitCondition) strategy.close("Short")