Stratégie de crypto-monnaie élevée/faible basée sur plusieurs indicateurs

Auteur:ChaoZhang est là., Date: le 29 décembre 2023 14:16:16
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de haut / bas niveau adaptée aux marchés de crypto-monnaie. Elle intègre MACD, PSAR, ATR, Elliott Wave et d'autres indicateurs multiples pour la négociation à des délais plus longs comme 1 heure, 4 heures ou 1 jour.

La logique de la stratégie

Les signaux de négociation de cette stratégie proviennent des niveaux de prix élevés/faibles et des jugements composés de multiples indicateurs.

  1. Jugez s'il existe une fourchette de niveau haut/bas formée par des hauts ou des bas successifs sur le graphique des prix.

  2. Vérifiez le niveau de l'histogramme du MACD.

  3. Vérifiez l'indicateur PSAR pour la direction de la tendance.

  4. Vérifiez la direction de la tendance basée sur ATR et MA.

  5. Confirmez la direction de la tendance avec l'indicateur Elliott Wave.

Si toutes les 5 conditions pointent dans la même direction, des signaux longs ou courts sont générés.

Les avantages

  1. Un taux de risque et de récompense élevé jusqu'à 1:30.

  2. Facteur de profit moyen élevé, généralement compris entre 1,5 et 2,5.

  3. La combinaison de plusieurs indicateurs aide à filtrer efficacement les fausses éruptions.

Les risques

  1. Un taux de réussite relativement faible, autour de 10 à 20%.

  2. Il existe des risques potentiels de retrait et de piqûre.

  3. La performance des indicateurs pourrait être affectée par les régimes du marché.

  4. Il faut une bonne endurance psychologique.

Mesures correspondantes:

  1. Augmenter le capital pour équilibrer le taux de gain.

  2. Définissez un stop loss strict pour chaque transaction.

  3. Ajustez les paramètres en fonction des différents marchés.

  4. Renforcer la psychologie et contrôler la dimension de la position.

Directions d'optimisation

  1. Paramètres de test basés sur différentes cryptos et marchés.

  2. Ajoutez stop loss et profit pour optimiser la gestion de l'argent.

  3. Augmenter le taux de réussite avec des méthodes d'apprentissage automatique.

  4. Ajoutez un filtre de sentiment social pour les signaux de trading.

  5. Considérez la confirmation dans plusieurs délais.

Conclusion

En conclusion, il s'agit d'une stratégie de trading de crypto-monnaie à haut risque et à haut rendement. Son avantage réside dans le ratio de récompense et le facteur de profit. Les principaux risques proviennent du taux de gain relativement faible qui nécessite une forte psychologie. Les directions d'optimisation futures pourraient être le réglage des paramètres, la gestion de l'argent, l'augmentation du taux de gain, etc. Dans l'ensemble, cette stratégie a une valeur pratique pour les traders de crypto-monnaie à la recherche de profits élevés.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21

//@version=4
strategy("Crypto strategy high/low", overlay=true)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
//sar
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)


// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

CCI = input(20)
ATR = input(5)
Multiplier=input(1,title='ATR Multiplier')
original=input(true,title='original coloring')
thisCCI = cci(close, CCI)
lastCCI = nz(thisCCI[1])
bufferDn= high + Multiplier * sma(tr,ATR)
bufferUp= low - Multiplier * sma(tr,ATR)
if (thisCCI >= 0 and lastCCI < 0) 
    bufferUp := bufferDn[1]
if (thisCCI <= 0 and lastCCI > 0) 
    bufferDn := bufferUp[1]

if (thisCCI >= 0)
    if (bufferUp < bufferUp[1])
        bufferUp := bufferUp[1]
else
    if (thisCCI <= 0)
        if (bufferDn > bufferDn[1])
            bufferDn := bufferDn[1]
x=0.0
x:=thisCCI >= 0 ?bufferUp:thisCCI <= 0 ?bufferDn:x[1]
swap=0.0

swap:=x>x[1]?1:x<x[1]?-1:swap[1]

swap2=swap==1?color.lime:color.red
swap3=thisCCI >=0 ?color.lime:color.red
swap4=original?swap3:swap2

//elliot wave
srce = input(close, title="source")
sma1length = input(5)
sma2length = input(35)
UsePercent = input(title="Show Dif as percent of current Candle", type=input.bool, defval=true)
smadif=iff(UsePercent,(sma(srce, sma1length) - sma(srce, sma2length)) / srce * 100, sma(srce, sma1length) - sma(srce, sma2length))
col=smadif <= 0 ? color.red : color.green

longC = high > high[1] and high[1] > high[2] and close[2] > high[3] and hist > 0 and uptrend and smadif < 0 and swap4==color.lime 
//longC = high > high[1] and high[1] > high[2] and high[2] > high[3] and high[3] > high[4] and close[4] > high[5]
shortC = low < low[1] and low[1] < low[2] and close[2] < low[3] and hist < 0 and not uptrend and  smadif > 0 and swap4==color.red 
//shortC = low < low[1] and low[1] < low[2] and low[2] < low[3] and low[3] < low[4] and close[4] < low[5]

tp=input(0.15, title="tp")
sl=input(0.005, title="sl")


strategy.entry("long",1,when=longC)
strategy.entry("short",0,when=shortC)

strategy.exit("x_long", "long" ,loss = close * sl / syminfo.mintick, profit = close * tp / syminfo.mintick , alert_message = "closelong")
//strategy.entry("short",0, when= loss = close * sl / syminfo.mintick)

strategy.exit("x_short", "short" , loss = close * sl / syminfo.mintick, profit  = close * tp / syminfo.mintick,alert_message = "closeshort")
//strategy.entry("long",1, when = loss = close * sl / syminfo.mintick)

//strategy.close("long",when= hist < 0)
//strategy.close("short", when= hist > 0)

Plus de