Stratégie de négociation algorithmique simple à inversion de pivot

Auteur:ChaoZhang est là., Date: 2024-01-17 15h37 et 33 min
Les étiquettes:

img

Résumé

Cette stratégie effectue des transactions d'inversion basées sur des ruptures de point de pivot. Elle calcule le pivot high et le pivot low sur une période spécifiée pour déterminer les niveaux de pivot. Elle va court lorsque le prix dépasse le pivot high, et va long lorsque le prix dépasse le pivot low.

La logique de la stratégie

La logique de base de cette stratégie est de calculer les points hauts et bas du pivot.

Pivot High = somme du plus haut niveau au cours des dernières barres N1 / N1

Basse pivot = somme de la plus basse des dernières barres de N2 / N2

où N1 et N2 sont des paramètres qui définissent le nombre de barres utilisées pour calculer les points de pivotement.

Après avoir obtenu les niveaux pivot haut/bas, les règles de négociation sont les suivantes:

  1. Short lorsque le prix dépasse le pivot high
  2. Long lorsque le prix dépasse le bas de pivot
  3. Définir le stop-loss après entrée

Il réalise donc une stratégie d'inversion à court terme basée sur des ruptures de point pivot.

Analyse des avantages

Les avantages de cette stratégie simple sont les suivants:

  1. La logique est simple, facile à comprendre et à mettre en œuvre
  2. Convient pour les opérations à court terme à haute fréquence
  3. Capture l'inversion après les ruptures de pivot
  4. Optimiseable par réglage de paramètres

Analyse des risques

Il y a des risques:

  1. Risque d'échec de l'inversion - L'inversion après la rupture du pivot peut échouer et la tendance se poursuit
  2. Risque de stop loss - Le stop loss prédéfini pourrait être atteint, entraînant une grande perte.
  3. Risque des paramètres - Les paramètres inappropriés ont une incidence importante sur les résultats

Ces risques peuvent être gérés en ajustant les paramètres, en appliquant des règles de sortie, etc.

Directions d'optimisation

Il y a beaucoup de marge d'optimisation:

  1. Combiner avec d'autres indicateurs techniques pour améliorer le calendrier d'entrée
  2. Ajoutez des règles de sortie comme le stop-loss, la prise de profit, etc.
  3. Ajustement dynamique des paramètres pour améliorer l'adaptabilité
  4. Optimisation des paramètres pour trouver les meilleures combinaisons de paramètres

Résumé

En résumé, il s'agit d'une stratégie d'inversion de pivot à court terme très simple. Ses avantages sont la simplicité et la capacité de capturer les inversions. Mais il y a quelques risques qui doivent être abordés par l'optimisation. Dans l'ensemble, cela sert de bonne stratégie de pratique pour les débutants et jette les bases de stratégies avancées.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Pivot Reversal Strategy - FIGS & DATES 2.0", overlay=true, pyramiding=0, initial_capital=10000, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100.0, commission_value=0.075)

leftBars = input(4)
rightBars = input(2)

// backtesting date range
from_day = input(defval=1, title="From Day", minval=1, maxval=31)
from_month = input(defval=1, title="From Month", minval=1, maxval=12)
from_year = input(defval=2018, title="From Year", minval=1900)

to_day = input(defval=1, title="To Day", minval=1, maxval=31)
to_month = input(defval=1, title="To Month", minval=1, maxval=12)
to_year = input(defval=9999, title="To Year", minval=1900)

time_cond = true

swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)

middle = (swh+swl)/2

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 and time_cond
    strategy.entry("LONG", strategy.long, comment="LONG", 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 and time_cond
    strategy.entry("SHORT", strategy.short, comment="SHORT", stop=lprice - syminfo.mintick)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)


Plus de