Idea utama strategi ini adalah untuk menilai dan mengesan trend harga dengan menggabungkan penunjuk peratusan dan pengoptimuman parameter. Strategi ini menghasilkan isyarat perdagangan dengan membandingkan harga semasa dengan peratusan harga dalam tempoh sejarah tertentu untuk menangkap kesan cermin dan mengesan trend untuk pulangan yang berlebihan.
Strategi ini menggunakan penunjuk peratusan untuk menentukan trend harga. Peratusan mewakili kekuatan relatif harga semasa dalam tempoh yang dilihat. Parameter len menunjukkan panjang tempoh sejarah untuk dilihat.
Julat nilai peratusan adalah dari 0 hingga 100. Apabila nilai peratusan adalah dekat dengan 0, ia bermakna harga semasa adalah berhampiran dengan harga terendah dalam tempoh yang dilihat dan berada di kawasan yang kurang dinilai. Apabila ia adalah berhampiran dengan 100, ia bermakna harga semasa adalah berhampiran dengan harga tertinggi dalam tempoh yang dilihat dan berada di kawasan yang terlalu dinilai.
Strategi ini juga memperkenalkan parameter skala sebagai offset untuk memindahkan julat 0 hingga 100 ke julat skala ke julat skala 100+. Dua garis isyarat level_1 dan level_2 juga ditetapkan, di mana level_1 menunjukkan tahap panjang dan level_2 menunjukkan tahap pendek.
Apabila penunjuk peratusan harga melintasi level_1 ke atas, isyarat panjang dihasilkan. Apabila melintasi level_2 ke bawah, isyarat pendek dihasilkan. Syarat keluar bertentangan dengan isyarat masuk.
Untuk menangani risiko di atas, parameter seperti len, skala, tahap boleh diselaraskan untuk pengoptimuman.
Terdapat ruang untuk pengoptimuman lagi strategi:
Idea keseluruhan strategi ini jelas, menggunakan kaedah kuantitatif pengoptimuman parameter untuk menilai dan mengesan trend harga. Ia mempunyai beberapa nilai praktikal tetapi masih memerlukan ujian dan pengoptimuman lanjut untuk mengurangkan risiko dan meningkatkan keuntungan yang stabil.
/*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")