
La stratégie consiste à calculer la relation entre le PB moyen et le Brin en descente et à déterminer la corrélation entre le PB moyen et le Brin en descente, générant des signaux d’achat et de vente. Un signal d’achat est généré lorsque l’indicateur PB monte en haut et franchit le milieu de la Brin ou en descente; un signal de vente est généré lorsque l’indicateur PB descend et franchit le milieu de la Brin ou en descente.
L’indicateur central de la stratégie est l’indicateur moyen de PB. L’indicateur moyen de PB combine la stabilité du système de moyenne et la sensibilité de l’indicateur de PB, qui utilise les différences de deux moyennes périodiques différentes pour exprimer rapidement et lentement la tendance des changements de prix, afin de déterminer si la situation est trop vide.
Cette stratégie utilise également l’indicateur de la ceinture de Brin pour déterminer les sur-achats et les sur-vente du prix des actions. L’indicateur de la ceinture de Brin est composé de trois courbes: la voie médiane, la voie supérieure et la voie inférieure. La voie médiane est la moyenne mobile de n jours; la voie supérieure et la voie inférieure sont calculées à partir de la voie médiane et des fluctuations historiques.
En résumé, cette stratégie utilise habilement l’indicateur moyen PB pour déterminer la tendance des cours à la hausse et à la baisse, et est complétée par l’indicateur de la ceinture de Brin pour juger de la situation de survente et de survente, et de trouver des points d’achat et de vente dans la relation d’indicateur combinée entre les deux. C’est une stratégie de trading d’indicateur numérique typique.
Les principaux avantages de cette stratégie sont les suivants:
Les principaux risques de cette stratégie sont les suivants:
Pour les risques susmentionnés, il est possible d’éviter les risques en réglant des paramètres d’optimisation, en éliminant les pertes, en tenant compte des facteurs environnementaux et en surveillant manuellement.
Les axes d’optimisation de cette stratégie sont:
La stratégie fonctionne bien dans l’ensemble, avec des indicateurs PB de valeur moyenne au cœur, en plus de la bande de Bryn pour déterminer le point d’achat et de vente. L’opération est simple, la sensibilité est élevée et le rendement de la rétro-évaluation est bon.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("BandPass EOS", overlay=false, initial_capital = 1000)
src = input(close, "Source", input.source)
Period1 = input(41, "Fast Period", input.integer)
Period2 = input(54, "Slow Period", input.integer)
showBG = input(false, "Show crosses on background?", input.bool)
UseReversalStop = input(true, "Use additional triggers?", input.bool)
//Super Passband Filter
a1 = 0.0
a2 = 0.0
PB = 0.0
RMS = 0.0
if bar_index > Period1
a1 := 5 / Period1
a2 := 5 / Period2
PB := (a1 - a2) * src + (a2 * (1 - a1) - a1 * (1 - a2)) * src[1] +
(1 - a1 + 1 - a2) * nz(PB[1]) - (1 - a1) * (1 - a2) * nz(PB[2])
for i = 0 to 49 by 1
RMS := RMS + PB[i] * PB[i]
RMS
RMS := sqrt(RMS / 40)
RMS
z = 0
buy = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
sell = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)
signal = buy ? 1 : sell ? -1 : 0
bg = buy ? color.green : sell ? color.red : color.white
bg := showBG ? bg : na
upperFill = PB>RMS ? color.lime : na
lowerFill = PB<-RMS ? color.red : na
p1 = plot(PB,"PB",color.red)
p2 = plot(RMS,"+RMS",color.blue)
p3 = plot(-RMS,"-RMS",color.blue)
bgcolor(bg)
fill(p1,p2,upperFill)
fill(p1,p3,lowerFill)
hline(0)
//PERIOD
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
lcolor = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
scolor = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)
c1 = (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
c2 = (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))
plot (c1 ? PB : na, style = plot.style_circles, color = color.red, linewidth = 3)
plot (c2 ? PB : na, style = plot.style_circles, color = color.green, linewidth = 3)
if (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))
strategy.entry("long", strategy.long, when = testPeriod())
if (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
strategy.entry("short", strategy.short, when = testPeriod())