Stratégie d'appariement à double voie de combo pour inversion de l'élan

Auteur:ChaoZhang est là., Date: 2023-11-24 10:17:15 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie combine plusieurs indicateurs techniques pour mettre en œuvre l'inversion de l'élan et l'appariement à deux rails pour générer des signaux de trading.

Principaux

La stratégie comporte deux parties:

  1. Modèle pour déterminer les points d'inversion
  2. Indicateur CSI ergodique pour générer des signaux de correspondance

Le modèle 123 juge l'inversion des prix sur la base des prix de clôture des 3 barres récentes. Si le prix de clôture de la 3e barre augmente par rapport aux 2 barres précédentes, et que les stocks rapides et lents sont inférieurs à 50, c'est un signal d'achat. Si le prix de clôture de la 3e barre tombe par rapport aux 2 barres précédentes, et que les stocks rapides et lents sont au-dessus de 50, c'est un signal de vente.

L'indicateur ergodic CSI prend en compte de multiples facteurs tels que le prix, la plage réelle, les indicateurs de tendance pour déterminer de manière exhaustive les conditions du marché et générer des zones d'achat / vente. Lorsque l'indicateur dépasse la zone d'achat, il génère un signal d'achat.

Enfin, les signaux d'inversion des signaux de zone et de modèle 123 du CSI ergodique sont ANDed pour produire le signal de stratégie final.

Les avantages

  1. Capture les tendances à moyen et court terme, potentiel de profit élevé
  2. La détermination du schéma d'inversion capte efficacement les points tournants
  3. La correspondance à deux rails réduit les faux signaux

Les risques

  1. Les stocks individuels peuvent diverger, ce qui entraîne un stop loss
  2. Modèles de renversement susceptibles d'être affectés par les marchés à fourchette
  3. Espace limité d'optimisation des paramètres, fluctuation de performance élevée

Directions d'optimisation

  1. Optimiser les paramètres pour améliorer la rentabilité de la stratégie
  2. Ajouter une logique de stop loss pour réduire les pertes d'une seule transaction
  3. Intégrer des modèles multifactoriels pour améliorer la sélection des stocks

Conclusion

Cette stratégie suit efficacement les tendances à moyen et court terme en combinant des modèles d'inversion et une correspondance à double voie. Par rapport aux indicateurs techniques uniques, elle a une stabilité et des niveaux de profit plus élevés. Les prochaines étapes consistent à optimiser davantage les paramètres, à ajouter des modules de stop loss et de sélection d'actions pour réduire les retraits et améliorer la performance globale.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/07/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This is one of the techniques described by William Blau in his book 
// "Momentum, Direction and Divergence" (1995). If you like to learn more, 
// we advise you to read this book. His book focuses on three key aspects 
// of trading: momentum, direction and divergence. Blau, who was an electrical 
// engineer before becoming a trader, thoroughly examines the relationship between 
// price and momentum in step-by-step examples. From this grounding, he then looks 
// at the deficiencies in other oscillators and introduces some innovative techniques, 
// including a fresh twist on Stochastics. On directional issues, he analyzes the 
// intricacies of ADX and offers a unique approach to help define trending and 
// non-trending periods.
// This indicator plots Ergotic CSI and smoothed Ergotic CSI to filter out noise. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

ECSI(r,Length,BigPointValue,SmthLen,SellZone,BuyZone) =>
    pos = 0
    source = close
    K = 100 * (BigPointValue / sqrt(r) / (150 + 5))
    xTrueRange = atr(1) 
    xADX = fADX(Length)
    xADXR = (xADX + xADX[1]) * 0.5
    nRes = iff(Length + xTrueRange > 0, K * xADXR * xTrueRange / Length,0)
    xCSI = iff(close > 0,  nRes / close, 0)
    xSMA_CSI = sma(xCSI, SmthLen)
    pos := iff(xSMA_CSI > BuyZone, 1,
             iff(xSMA_CSI <= SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic CSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(32, minval=1)
LengthECSI = input(1, minval=1)
BigPointValue = input(1.0, minval=0.00001)
SmthLen = input(5, minval=1)
SellZone = input(0.06, minval=0.00001)
BuyZone = input(0.02, minval=0.001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posECSI = ECSI(r,LengthECSI,BigPointValue,SmthLen,SellZone,BuyZone)
pos = iff(posReversal123 == 1 and posECSI == 1 , 1,
	   iff(posReversal123 == -1 and posECSI == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Plus de