
La stratégie de négociation de la croix d’or est une stratégie de suivi de tendance en ligne moyenne et longue. Elle identifie la direction de la tendance des prix en calculant les indicateurs SR et les indicateurs de signaux SR, et en combinant des réseaux neuronaux pour tracer des canaux de tendance, pour réaliser des opérations de suivi de tendance. Elle génère un signal d’achat lorsque l’indicateur SR traverse le signal SR et un signal de vente lorsque l’indicateur SR traverse le signal SR.
L’indicateur central de la stratégie est l’indicateur SR et l’indicateur du signal SR. L’indicateur SR est la synthèse secondaire de la moyenne WMA avec un paramètre de 8 cycles et de la moyenne SMA. L’indicateur du signal SR est l’indicateur SR calculé avec un paramètre de 20 cycles.
La stratégie utilise des algorithmes de réseaux neuronaux pour tracer automatiquement les limites supérieures et inférieures du prix d’une action, formant ainsi une courbe d’adaptation. La limite supérieure est une entrée avec le maximum historique de l’indicateur SR, la limite inférieure est une entrée avec le minimum historique, puis la courbe de régression est calculée séparément comme une courbe supérieure et inférieure de la courbe. La courbe de la courbe de la courbe est plus lisse après avoir traversé une vague de régression linéaire adaptative.
Lorsque l’indicateur SR est traversé par le signal SR, un signal d’achat est généré; lorsque l’indicateur SR est traversé par le signal SR, un signal de vente est généré. Après l’émission d’un signal plus court, la relation entre le prix de l’action et la limite supérieure et inférieure du canal détermine la position d’arrêt de perte.
La stratégie est basée sur le suivi des tendances et présente les principaux risques suivants:
Pour contrôler les risques, il est recommandé de combiner d’autres stratégies et d’éviter les opérations sur une seule stratégie; tout en optimisant les paramètres pour s’adapter à différents environnements de marché.
Cette stratégie peut être optimisée dans les domaines suivants:
Optimiser les paramètres des indicateurs SR et des indicateurs de signal pour améliorer la stabilité des signaux croisés;
Optimisation de la longueur du cycle d’adaptation des voies, pour lisser la courbe des voies;
Ajouter d’autres indicateurs de filtrage pour éviter les erreurs, tels que les indicateurs de quantité d’énergie, les indicateurs de volatilité, etc.
L’optimisation en temps réel de la courbe des canaux, combinée à des algorithmes d’apprentissage en profondeur, améliore l’adaptabilité.
La stratégie de négociation croisée de l’or est une stratégie quantitative qui permet de suivre efficacement les tendances à long terme. Elle a une grande probabilité de déterminer correctement la direction de la tendance et un faible risque d’opération. Avec un grand espace d’optimisation des modèles algorithmiques, la stratégie devrait devenir un outil puissant pour suivre les changements de tendance des actions.
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
strategy(title = " Strategy PyramiCover",
shorttitle = "S-PC",
overlay = true,
precision = 8,
calc_on_order_fills = true,
calc_on_every_tick = true,
backtest_fill_limits_assumption = 0,
default_qty_type = strategy.fixed,
default_qty_value = 2,
initial_capital = 10000,
pyramiding=50,
currency = currency.USD,
linktoseries = true)
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)
FromMonth = input(defval = 1, title = "Month", minval = 1)
FromDay = input(defval = 1, title = "Day", minval = 1)
FromYear = input(defval = 2014, title = "Year", minval = 2014)
backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth = input(defval = 31, title = "Month", minval = 1)
ToDay = input(defval = 12, title = "Day", minval = 1)
ToYear = input(defval = 9999, title = "Year", minval = 2014)
backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
per = input(14,title="🔹 Length")
//
up = 0.0
nup= 0.0
lowl = 0.0
nin = 0.0
//
srl=wma(close,8)
srr = sma(close,8)
sr = 2*srl - srr
//
srsl=wma(close,20)
srsr= sma(close,20)
srsignal = 2*srsl - srsr
//
if sr>srsignal
up := highest(sr,round(150))
nup :=highest(srsignal,round(20))
else
up := highest(srsignal,round(150))
nup := highest(sr,round(20))
//
if sr<srsignal
lowl := lowest(sr,round(150))
nin := lowest(srsignal,round(20))
else
lowl := lowest(sr,round(150))
nin := lowest(srsignal,round(20))
//reg alexgrover
f_reg(src,length)=>
x = bar_index
y = src
x_ = sma(x, length)
y_ = sma(y, length)
mx = stdev(x, length)
my = stdev(y, length)
c = correlation(x, y, length)
slope = c * (my / mx)
inter = y_ - slope * x_
reg = x * slope + inter
reg
//
up_=f_reg(up,per)
lowl_=f_reg(lowl,per)
nup_=f_reg(nup,per)
nin_=f_reg(nin,per)
//
plot(sr, title='SR', color=color.green, linewidth=2, style=plot.style_line,transp=0)
plot(srsignal, title='SR-Signal', color=color.red, linewidth=2, style=plot.style_line,transp=0)
plot(up_, title='Upper limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0)
plot(lowl_, title='Lower limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0)
a=plot(nup_, title='Neuronal Upper', color=color.gray, linewidth=1, style=plot.style_line,transp=0)
b=plot(nin_, title='Neuronal Lower', color=color.gray, linewidth=1, style=plot.style_line,transp=0)
fill(a, b, color=color.gray)
plotshape(crossunder(sr,nup_)? sr+atr(20):na, title="Sell", text="🐻", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.black,transp=0)
plotshape(crossover(sr,nin_)? sr-atr(20):na, title="Buy", text="🐂", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.black,transp=0)
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
if backTestPeriod()
strategy.entry("Buy", true, 1, when = crossover(sr,nin_))
strategy.entry("Short", false, 1, when = crossunder(sr,nup_))