
L’idée principale de cette stratégie est de combiner l’indicateur percentrank et l’optimisation des paramètres pour permettre le jugement et le suivi de la tendance des prix. La stratégie génère des signaux de négociation en comparant la taille des prix actuels avec le pourcentage de prix sur une période historique donnée, afin de capturer l’effet de miroir intermédiaire, suivre la tendance et obtenir des gains supplémentaires.
La stratégie utilise l’indicateur percentrank pour déterminer la tendance des prix. Le percentrank indique la force relative des prix actuels au cours d’un cycle de consultation. Le paramètre len indique la longueur du cycle historique consulté.
Le percentrank se situe entre 0 et 100. Quand le percentrank est proche de 0, le prix actuel est proche du prix le plus bas de la période d’observation et appartient à la zone de sous-évaluation. Quand il est proche de 100, le prix actuel est proche du prix le plus élevé de la période d’observation et appartient à la zone de surévaluation.
La stratégie introduit également le paramètre scale comme décalage. La plage de 0 à 100 est déplacée vers la plage de scale à 100+ scale. Il est également possible de définir deux lignes de signaux, level_1 et level_2.
Un signal de plus est généré lorsque l’indicateur de percentrank de prix traverse le niveau_1 de bas en haut; un signal de plus est généré lorsque le prix traverse le niveau_2 de haut en bas. Les conditions de placement sont contraires au signal d’entrée.
Pour ce qui est des risques, il est possible d’optimiser les paramètres en ajustant les paramètres len, scale et level; d’autres indicateurs peuvent également être combinés pour confirmer et éviter les transactions erronées.
Il y a encore de la place pour optimiser cette stratégie:
La stratégie est clairement pensée dans son ensemble et utilise des méthodes quantifiées optimisées pour les paramètres pour juger et suivre les tendances des prix. Elle a une certaine valeur de combat, mais nécessite encore des tests et des optimisations supplémentaires pour réduire les risques de combat et améliorer la stabilité de la rentabilité.
/*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")