Stratégie de rupture à court terme basée sur le MACD et le RSI


Date de création: 2023-10-07 16:08:53 Dernière modification: 2023-10-07 16:08:53
Copier: 1 Nombre de clics: 1162
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie est basée sur la stratégie de rupture de la courte ligne conçue par l’indicateur MACD et l’indicateur RSI à 1 minute. Elle combine la capacité de l’indicateur MACD à juger de la tendance et à trouver des ruptures, et celle de l’indicateur RSI à juger des surachats et des survente, à la recherche d’opportunités de rupture de la courte ligne pour effectuer des mouvements longs et courts.

Principe de stratégie

La stratégie commence par calculer la courbe de dispersion de l’indicateur MACD sur une période de 1 minute et trace une rupture de la courbe de dispersion de la courbe de Brin. En même temps, elle calcule l’indicateur RSI pour déterminer la courbe de force polyvalente.

Plus précisément, le MACD de 1 minute est plus élevé que le RSI de 51 et moins élevé que le RSI de 49, et le MACD de 1 minute est plus élevé que le RSI de 51 et moins élevé que le RSI de 49 et plus élevé que le MACD de 1 minute.

Prendre un arrêt fixe de stop loss Exit lorsque le gain atteint 0,5% ou la perte atteint 0,3% et la position est nettoyée.

Analyse des avantages

Cette stratégie, combinée à un jugement de tendance et à un jugement de surachat et de survente, permet de filtrer efficacement les fausses percées. Le stop loss fixe permet une certaine gestion de l’attente pour chaque gain.

Les avantages sont les suivants:

  1. Le MACD détermine la direction de la tendance, le RSI détermine la voie de la force aérienne, ce qui permet d’éviter efficacement les opérations de revers.

  2. En combinant le canal de la ceinture de Brin avec le signal de rupture, il est possible de filtrer les fausses ruptures.

  3. Il est possible de contrôler les pertes individuelles en utilisant un stop loss fixe, avec une certaine prévision pour chaque gain.

  4. La fréquence de transaction est élevée, ce qui est approprié pour les opérations de courte durée.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Le stop loss fixe ne peut pas être ajusté en fonction des variations du marché, ce qui peut entraîner un stop loss trop petit et un stop loss trop grand.

  2. Les signaux de filtrage multiples dépendant de l’indicateur provoquent plusieurs déclenchements de stop-loss dans la zone de réglage.

  3. Les frais de transaction à haute fréquence sont élevés.

  4. Les paramètres du MACD et du RSI doivent être optimisés et peuvent ne pas être optimaux.

Les points suivants peuvent être améliorés:

  1. L’arrêt de freinage dynamique est utilisé pour ajuster le taux de freinage en fonction d’indicateurs tels que ATR.

  2. L’augmentation des paramètres de la bande de Brin réduit le canal et réduit la fréquence de déclenchement.

  3. Optimisez les paramètres MACD et RSI pour trouver la meilleure combinaison de paramètres

  4. Filtrez en fonction de la direction de la tendance macro-cyclique et évitez les transactions à contre-courant.

Résumer

Cette stratégie est globalement un système typique de rupture de courte ligne, intégrant des jugements de tendance, de surachat et de survente, permettant de détecter efficacement les opportunités de courte ligne. Cependant, il existe un certain risque, il est nécessaire de tester et d’optimiser les paramètres pour réduire le risque d’augmentation de la rentabilité. Si les paramètres sont correctement ajustés, cette stratégie peut devenir l’une des stratégies de courte ligne les plus efficaces.

Code source de la stratégie
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 1h
basePeriod: 15m
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/
// © pluckyCraft54926

//@version=5
strategy("5 Minute Scalp", overlay=true, margin_long=100, margin_short=100)

fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Plot colors
col_macd = input(#2962FF, "MACD Line  ", group="Color Settings", inline="MACD")
col_signal = input(#FF6D00, "Signal Line  ", group="Color Settings", inline="Signal")
col_grow_above = input(#26A69A, "Above   Grow", group="Histogram", inline="Above")
col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
hist_1m = request.security(syminfo.tickerid,"1",hist [barstate.isrealtime ? 1 : 0])
hline(0, "Zero Line", color=color.new(#787B86, 50))
////////////////////////////////////////////////////
//plotting emas on the chart
len1 = input.int(9, minval=1, title="Length")
src1 = input(close, title="Source")
offset1 = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out1 = ta.ema(src1, len1)
plot(out1, title="EMA9", color=color.blue, offset=offset1)

len2 = input.int(50, minval=1, title="Length")
src2 = input(close, title="Source")
offset2 = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out2 = ta.ema(src2, len2)
plot(out2, title="EMA50", color=color.yellow, offset=offset2)

len3 = input.int(200, minval=1, title="Length")
src3 = input(close, title="Source")
offset3 = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out3 = ta.ema(src3, len3)
plot(out3, title="EMA200", color=color.white, offset=offset3)
//////////////////////////////////////////////////////////////////
//Setting up the BB
/////////////////////////////////////////////////////////////
srcBB = hist_1m
lengthBBLong = input.int(94,title = "LengthBB Long", minval=1)
lengthBBShort = input.int(83,title = "LengthBB Short", minval=1)
multBB = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basisBBLong = ta.sma(srcBB, lengthBBLong)
basisBBShort = ta.sma(srcBB, lengthBBShort)
devBBLong = multBB * ta.stdev(srcBB, lengthBBLong)
devBBShort = multBB * ta.stdev(srcBB, lengthBBShort)
upperBB = basisBBShort + devBBShort
lowerBB = basisBBLong - devBBLong
offsetBB = input.int(0, "Offset", minval = -500, maxval = 500)

/////////////////////////////////////////
//aetting up rsi
///////////////////////////////////////////
rsilengthlong = input.int(defval = 11, title = "Rsi Length Long", minval = 1)
rlong=ta.rsi(close,rsilengthlong)
rsilengthshort = input.int(defval = 29, title = "Rsi Length Short", minval = 1)
rshort=ta.rsi(close,rsilengthshort)
///////////////////////////
//Only taking long and shorts, if RSI is above 51 or bellow 49
rsilong = rlong >= 51
rsishort = rshort <= 49
//////////////////////////////////////
//only taking trades if all 3 emas are in the correct order
long = out1 > out2 and out2 > out3
short = out1 < out2 and out2 < out3
/////////////////////////////////////


///////////////////////////////////////////
//setting up TP and SL
TP = input.float(defval = 0.5, title = "Take Profit %",step = 0.1) / 100
SL = input.float(defval = 0.3, title = "Stop Loss %", step = 0.1) / 100

longCondition = hist_1m <= lowerBB
longhight = input(defval=-10,title = "MacdTick Low")
if (longCondition and long and rsilong and hist_1m <= longhight) 
    strategy.entry("Long", strategy.long)

if (strategy.position_size>0)
    longstop = strategy.position_avg_price * (1-SL)
    longprofit = strategy.position_avg_price * (1+TP)
    strategy.exit(id ="close long",from_entry="Long",stop=longstop,limit=longprofit)

shortCondition = hist_1m >= upperBB
shorthight = input(defval=35,title = "MacdTick High")
if (shortCondition and short and rsishort and hist_1m >= shorthight)
    strategy.entry("short ", strategy.short)

shortstop = strategy.position_avg_price * (1+SL)
shortprofit = strategy.position_avg_price * (1-TP)

if (strategy.position_size<0)
    strategy.exit(id ="close short",stop=shortstop,limit=shortprofit)