Stratégie de crypto-monnaie haute et basse basée sur plusieurs indicateurs


Date de création: 2023-12-29 14:16:16 Dernière modification: 2023-12-29 14:16:16
Copier: 0 Nombre de clics: 652
1
Suivre
1621
Abonnés

Stratégie de crypto-monnaie haute et basse basée sur plusieurs indicateurs

Aperçu

Cette stratégie est une stratégie de hauts et bas qui s’applique au marché de la crypto-monnaie. Elle utilise des indicateurs tels que MACD, PSAR, ATR, Elliott Wave et d’autres indicateurs pour effectuer des transactions sur des périodes de temps plus élevées telles que 1 heure, 4 heures ou 1 jour. L’avantage de la stratégie réside dans le taux de rendement élevé du risque et un facteur de profit moyen pouvant atteindre 1,5 à 2,5.

Principe de stratégie

Les signaux de négociation de cette stratégie proviennent des hauts et des bas des prix et d’une analyse globale de plusieurs indicateurs. La logique spécifique est la suivante:

  1. Déterminez si la ligne K présente une fourchette de hauts et de bas de prix, c’est-à-dire que les hauts sont des hauts d’innovation continus et les bas sont des hauts d’innovation continus.

  2. Vérifiez le niveau du rectangle du MACD.

  3. Vérifiez les indicateurs du PSAR pour déterminer la tendance.

  4. Examiner les indicateurs de tendance formés par l’ATR et la MA pour déterminer la direction de la tendance.

  5. Les ondes d’Elliott confirment la tendance.

Si les cinq conditions ci-dessus sont orientées dans la même direction, un signal de sur- ou de vide est produit.

Avantages stratégiques

  1. Le taux de rendement du risque est élevé, jusqu’à 1:30.

  2. Le facteur de gain moyen est élevé, généralement compris entre 1,5 et 2,5.

  3. Une combinaison de multiples indicateurs permet de filtrer efficacement les fausses percées.

Risque stratégique

  1. Le taux de réussite est faible, entre 10 et 20% seulement.

  2. Il y a un certain risque de retrait et de tirage au sort.

  3. L’efficacité de l’indicateur est influencée par les conditions du marché.

  4. Il faut une plus grande résilience psychologique.

Les mesures prises:

  1. Augmenter le capital de la transaction pour équilibrer le taux de réussite.

  2. Les pertes ponctuelles sont strictement contrôlées.

  3. Adaptez les paramètres de l’indicateur en fonction des différents marchés.

  4. Il est important d’avoir une bonne construction psychologique et de bien maîtriser la taille de la position.

Direction d’optimisation

  1. Paramètres de l’indicateur de test selon les différentes crypto-monnaies et environnements de marché.

  2. Augmentation des stratégies de stop loss et de stop loss et optimisation de la gestion des fonds.

  3. Le but est d’améliorer le taux de réussite grâce à l’apprentissage automatique.

  4. Le filtrage des signaux de transaction par les indicateurs d’humeur sociale a été augmenté.

  5. Considérer la confirmation des indicateurs sur plusieurs périodes.

Résumer

Cette stratégie est une stratégie de trading à haut risque et à haut rendement pour les crypto-monnaies. Son avantage réside dans le taux de retour sur risque élevé et le facteur de profit moyen élevé. Le risque réside principalement dans le faible taux de gain et la nécessité d’une forte tolérance psychologique. La direction d’optimisation suivante peut être prise à partir de plusieurs dimensions telles que l’ajustement des paramètres, l’optimisation de la gestion des fonds et l’amélioration du taux de gain.

Code source de la stratégie
/*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)