Stratégie de négociation inverse basée sur des différentiels de prix qui se chevauchent

Auteur:ChaoZhang est là., Date: 2023-12-15 15h47 et 23h
Les étiquettes:

img

Résumé

L'idée principale de cette stratégie est d'utiliser les différentiels de prix qui se chevauchent pour juger des tendances du marché.

Principe

La stratégie calcule d'abord le différentiel de prix qui se chevauche (Close-Close[1]), qui est le prix de clôture d'aujourd'hui moins le prix de clôture d'hier, puis calcule la somme des différentiels au cours des 30 derniers jours.

Plus précisément, la stratégie maintient trois indicateurs:

  1. FF: Somme des écarts de prix au cours des 30 derniers jours
  2. dd1: moyenne mobile pondérée de 15 jours de ff
  3. dd2: moyenne mobile pondérée de 30 jours de ff

Il génère un signal long lorsque ff passe de négatif à positif, c'est-à-dire de moins de 0 à plus de 0, et dd1 passe également de négatif à positif.

Il génère un signal court lorsque ff passe de positif à négatif, c'est-à-dire de plus de 0 à moins de 0, et dd1 passe également de positif à négatif.

Après avoir fait long ou court, des lignes de profit et de stop-loss seront définies.

Les avantages

La stratégie présente les avantages suivants:

  1. La logique est claire et facile à comprendre et à mettre en œuvre.
  2. Il capture le bon moment d'entrée aux points tournants du marché en utilisant des caractéristiques d'inversion des prix.
  3. Les fausses fuites peuvent être filtrées avec le mécanisme de double confirmation.
  4. Les paramètres personnalisables s'adaptent aux différents environnements du marché.

Les risques

Il y a aussi des risques pour la stratégie:

  1. Une probabilité élevée d'échec de l'inversion, susceptible d'être arrêtée sur les marchés à plage.
  2. Des paramètres mal réglés peuvent entraîner des transactions fréquentes et des coûts de transaction plus élevés.
  3. D'autres indicateurs doivent être incorporés pour filtrer les entrées, en évitant de poursuivre les sommets et les fonds.

Les solutions correspondantes sont:

  1. Réglez le pourcentage de stop loss approprié pour contrôler la perte unique.
  2. Optimisez les paramètres pour trouver la meilleure combinaison.
  3. Ajoutez des conditions de filtrage pour éviter les entrées inutiles.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Ajoutez le filtre de volume, ce qui nécessite un volume accru sur les éclaboussures.
  2. Incorporer des indicateurs de tendance pour éviter les opérations de contre-tendance.
  3. Ajustez dynamiquement les paramètres pour les adapter aux conditions changeantes du marché.
  4. Optimiser le mécanisme d'arrêt des pertes, tel que l'arrêt des pertes en retard.

Résumé

La stratégie évalue les points tournants du marché en calculant les renversements des différentiels de prix. C'est une stratégie de trading inverse typique. La logique est claire et facile à mettre en œuvre avec une certaine valeur pratique. Mais il y a aussi des risques qui doivent être optimisés pour s'adapter aux changements du marché.


/*backtest
start: 2023-12-07 00:00:00
end: 2023-12-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Fst",currency="USD",initial_capital=100000)

//Length0 = input(30, title="fastperiod", minval=1)
Length = input(30, title="SUMM")
Length1 = input(15, title="Signalperiod", minval=1)
Length2= input(30, title="Info", minval=1)
profit=input(95, title="profit", minval=1)
loss=input(95, title="loss", minval=1)
//f=iff(close>open,close-open,iff(close>open[1],close[1]-open[1],0))
f=0.0
dd1=0.0
dd2=0.0
ff=0.0
ff0=0.0
f:=close-close[1]
ff:=sum(f,Length)
//ff0:=sum(f,Length0)
dd1:=wma(ff,Length1)
dd2:=wma(ff,Length2)

bull=ff<0 and dd1<0 and ff[1]<dd1 and ff>dd1 and abs(ff)>20
bear=ff>0 and dd1>0 and ff[1]>dd1 and ff<dd1 and abs(ff)>20
if(bull)
    
    strategy.entry("long", strategy.long)
strategy.exit("exit", "long", profit = close*profit/1000, loss=close*loss/1000) 

strategy.close("long", when = bear)




plotchar(bull,size=size.small,location=location.bottom)
plot(ff,color=black,linewidth=2)
plot(ff0,color=green,linewidth=2)
plot(wma(ff,Length1),color=red,linewidth=2)
plot(wma(ff,Length2),color=blue,linewidth=2)
plot(wma(ff,Length1)-wma(ff,Length2),color=green,style=columns)

plot(0,linewidth=1,color=black)
plot(500,linewidth=1,color=red)
plot(-500,linewidth=1,color=red)


Plus de