Stratégie de la double K de la baleine

Auteur:ChaoZhang est là., Date: le 18 octobre 2023 à 11 h 19:07
Les étiquettes:

img

La stratégie Double K Crossbow combine la stratégie 123 Reversal et la stratégie Special K de Martin Pring pour tirer parti des signaux d'inversion et des indicateurs cycliques.

La logique de la stratégie:

La Double K Crossbow se compose de deux parties:

  1. 123 Stratégie d'inversion: Il identifie les signaux d'achat et de vente basés sur 2 jours consécutifs d'inversion de prix de clôture, combinés aux lectures de l'oscillateur stochastique. Il génère un signal d'achat lorsque la clôture est supérieure à la clôture précédente pendant 2 jours et que l'oscillateur stochastique est inférieur à 50, indiquant la consolidation. Il génère un signal de vente lorsque la clôture est inférieure à la clôture précédente pendant 2 jours et que l'oscillateur stochastique est supérieur à 50, indiquant la distribution.

  2. Stratégie spéciale K de Martin Pring: Il utilise un indicateur cyclique composite formé par l'empilement des valeurs de changement de taux de différentes périodes. Il génère des signaux d'achat lorsque l'indicateur dépasse sa moyenne mobile et des signaux de vente lorsqu'il en dépasse.

Le Double K Crossbow consolide les signaux des deux stratégies, ce qui nécessite un accord pour déclencher des transactions réelles.

Analyse des avantages:

  • Combine les signaux de deux stratégies pour une entrée et une sortie plus fiables.

  • 123 L'inversion détermine les inversions à court terme tandis que le K spécial évalue la tendance à long terme.

  • Le taux de variation sur plusieurs périodes donne un aperçu des cycles du marché.

  • Les paramètres stochastiques optimisés s'adaptent aux différentes conditions du marché.

Analyse des risques:

  • Les signaux de consolidation peuvent manquer certains points d'achat/de vente et retarder les mouvements à court terme.

  • Les stratégies peuvent être en désaccord lors d'événements anormaux, ce qui nécessite un jugement sur la direction.

  • Il est nécessaire de surveiller et d'optimiser les paramètres des deux stratégies, ce qui accroît la complexité.

  • L'optimisation incorrecte des paramètres à court et à long terme peut manquer les points tournants du cycle.

Des possibilités d'amélioration:

  • Testez différentes combinaisons de paramètres pour trouver les paramètres optimaux.

  • Ajouter le module stop-loss pour limiter les pertes.

  • Ajouter un module de dimensionnement des positions pour s'adapter aux conditions du marché.

  • Incorporer l'apprentissage automatique pour une modélisation plus robuste du signal.

  • Ajoutez une optimisation adaptative pour suivre dynamiquement les rythmes du marché.

Conclusion:

La double K Crossbow combine avec succès les atouts des stratégies d'inversion et cycliques pour des signaux de qualité et des opportunités de profit sur plusieurs délais.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/02/2021
// 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
// Pring's Special K is a cyclical indicator created by Martin Pring. 
// His method combines short-term, intermediate and long-term velocity 
// into one complete series. Useful tool for Long Term Investors
// Modified for any source.
//
// 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


MPSK(a, sources) =>
    pos = 0.0
    roc1 = (sma(roc(sources,10),10)*1)
    roc2 = (sma(roc(sources,15),10)*2)
    roc3 = (sma(roc(sources,20),10)*3)
    roc4 = (sma(roc(sources,30),15)*4)
    roc5 = (sma(roc(sources,40),50)*1)
    roc6 = (sma(roc(sources,65),65)*2)
    roc7 = (sma(roc(sources,75),75)*3)
    roc8 = (sma(roc(sources,100),100)*4)
    roc9 = (sma(roc(sources,195),130)*1)
    roc10 = (sma(roc(sources,265),130)*2)
    roc11 = (sma(roc(sources,390),130)*3)
    roc12 = (sma(roc(sources,530),195)*4)
    osc = roc1+roc2+roc3+roc4+roc5+roc6+roc7+roc8+roc9+roc10+roc11+roc12
    oscsmt = sma(osc,a)
    pos := iff(osc > oscsmt, 1,
    	     iff(osc < oscsmt, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Martin Pring's Special K", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Martin Pring`s ----")
a = input(10, title = "Smooth" )
sources = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMPSK = MPSK(a,sources)
pos = iff(posReversal123 == 1 and posMPSK == 1 , 1,
	   iff(posReversal123 == -1 and posMPSK == -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