Stratégie de négociation à court terme

Auteur:ChaoZhang est là., Date: 2024-01-29 16h31 et 04h
Les étiquettes:

img

Résumé

La stratégie de négociation à court terme Peanut 123 Reversal and Breakout Range est une stratégie combinée qui intègre les signaux d'une stratégie d'inversion et des sous-stratégies d'une stratégie de rupture pour générer des signaux de négociation plus puissants.

La logique de la stratégie

La stratégie est composée de deux sous-stratégies:

  1. Stratégie de renversement de l' arachide 123

    Il s'agit d'une stratégie d'inversion adaptée basée sur le système introduit sur P183 du livre d'Ulf Jensen. Il va long lorsque le prix de clôture augmente pendant 2 jours consécutifs et que la ligne Stochastique Lent de 9 jours est inférieure à 50; Il va court lorsque le prix de clôture tombe pendant 2 jours consécutifs et que la ligne Stochastique Rapide de 9 jours est supérieure à 50.

  2. Stratégie de courte portée

    Il s'agit d'une stratégie à court terme qui utilise la rupture du prix le plus bas dans une certaine période look_bak comme signal.

La stratégie combinée prend en compte les signaux des deux sous-stratégies. Elle génère des signaux de trading réels uniquement lorsque les deux sous-stratégies donnent des signaux dans le même sens. Aucun signal de trading ne sera généré si les deux sous-stratégies donnent des signaux opposés.

Analyse des avantages

La stratégie combine les avantages des deux sous-stratégies d'inversion et de rupture et prend en compte plus de facteurs.

  1. La stratégie d'inversion capte les opportunités d'inversion à court terme et génère des bénéfices lors des fluctuations.

  2. La stratégie de rupture capte la tendance à court terme après la rupture.

  3. En combinant les signaux de deux sous-stratégies, des signaux de trading plus efficaces peuvent être générés et le bruit filtré.

Analyse des risques

La stratégie comporte également les risques suivants:

  1. Il est possible que les retours ne se produisent pas, il y a des risques d'échec des retours.

  2. Les ruptures peuvent aussi être de fausses ruptures, il y a des risques de courir après les hauts et les bas.

  3. Aucune des deux sous-stratégies ne peut assurer l'efficacité lorsqu'elle est utilisée seule, leur combinaison peut également échouer.

Pour faire face à ces risques, des méthodes telles que l'optimisation des paramètres, l'ajustement de la pondération des sous-stratégies, le choix de différents produits pour l'arbitrage peuvent être utilisées pour réduire les risques.

Directions d'optimisation

La stratégie peut être encore optimisée:

  1. Optimiser les paramètres des deux sous-stratégies pour mieux s'adapter à différents cycles et produits.

  2. Augmenter d'autres types de sous-stratégies, telles que les stratégies de prédiction d'apprentissage automatique, pour incorporer plus de facteurs.

  3. Ajustez dynamiquement la pondération des deux sous-stratégies pour donner plus de poids à celle qui a obtenu de meilleurs résultats dans différents environnements de marché.

  4. Effectuer l'arbitrage combiné en sélectionnant des produits peu corrélés mais présentant certaines similitudes.

Résumé

La stratégie de négociation à court terme de Peanut 123 Reversal and Breakout Range intègre les sous-stratégies d'inversion et de rupture au niveau de la stratégie. Dans une certaine mesure, elle combine les avantages des deux sous-stratégies tout en ayant la possibilité d'optimiser davantage. Elle fournit de nouvelles idées pour la conception de la stratégie - mener l'intégration et la combinaison au niveau de la stratégie tout en préservant l'indépendance des sous-stratégies, afin de découvrir des opportunités de négociation plus efficaces.


/*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
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 01/07/2019
// 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
//    Breakout Range Short Strategy
//
// 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

BreakoutRangeShort(look_bak) =>
    pos = 0
    xLowest = lowest(low, look_bak)
    pos :=	iff(low < xLowest[1], -1, 0) 
    pos

strategy(title="Combo Backtest 123 Reversal & Breakout Range Short", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
look_bak = input(4, minval=1, title="Look Bak")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBreakoutRangeShort = BreakoutRangeShort(look_bak)
pos = iff(posReversal123 == 1 and posBreakoutRangeShort == 1 , 1,
	   iff(posReversal123 == -1 and posBreakoutRangeShort == -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 ? color.red: possig == 1 ? color.green : color.blue )

Plus de