
Cette stratégie est optimisée sur la base de la stratégie traditionnelle d’inversion des supports, principalement en calculant l’ATR et en définissant un facteur de filtrage ATR pour filtrer les supports qui ne sont pas significatifs et ne négocier que ceux qui sont vraiment importants.
La logique centrale de cette stratégie est de calculer les points de soutien des hauts et des bas importants. Les principales étapes pour calculer les points de soutien des hauts sont:
La logique pour calculer le point de repli est similaire.
Après avoir atteint un point de repère important, faites une courte pause lorsque le prix franchit ce point de repère important; faites plus lorsque le prix franchit ce point de repère important.
Les principaux avantages de cette stratégie sont:
Les principaux risques de cette stratégie sont:
Pour maîtriser ces risques, il est possible d’optimiser:
Cette stratégie peut être optimisée dans les directions suivantes:
L’utilisation d’indicateurs comme le MACD, le KDJ, etc. peut être envisagée pour juger de l’état de la tendance du marché.
L’ajout d’algorithmes d’apprentissage automatique et d’optimisation automatique des paramètres. Des algorithmes génétiques et des forêts aléatoires peuvent être utilisés pour trouver la combinaison optimale de paramètres.
L’ajout de données quantifiées pour la formation permet de trouver la meilleure plage d’ATR. L’ajout de données historiques peut améliorer la précision de la sélection des paramètres.
On peut envisager de l’utiliser avec d’autres combinaisons de stratégies, combinant les avantages de différents types de stratégies. Par exemple, avec une combinaison de stratégies de suivi de tendance, de retournement dans la consolidation et de tendance dans la tendance.
Cette stratégie de retournement des points importants permet de filtrer les fluctuations insignifiantes en calculant l’ATR et en réglant le facteur de filtrage. La stratégie de retournement des points importants permet d’augmenter efficacement le niveau de profit de la stratégie.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)
// Inputs
leftBars = input(4, title = 'PP Left Bars')
rightBars = input(2, title = 'PP Right Bars')
atr_length = input(14, title = 'ATR Length')
atr_mult = input(0.1, title = 'ATR Mult')
// Pivot High Significant Function
pivotHighSig(left, right) =>
pp_ok = true
atr = atr(atr_length)
for i = 1 to left
if (high[right] < high[right+i] + atr * atr_mult)
pp_ok := false
for i = 0 to right-1
if (high[right] < high[i] + atr * atr_mult)
pp_ok := false
pp_ok ? high[right] : na
// Pivot Low Significant Function
pivotLowSig(left, right) =>
pp_ok = true
atr = atr(atr_length)
for i = 1 to left
if (low[right] > low[right+i] - atr * atr_mult)
pp_ok := false
for i = 0 to right-1
if (low[right] > low[i] - atr * atr_mult)
pp_ok := false
pp_ok ? low[right] : na
swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])
if (le)
strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
if (se)
strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)