Stratégie de trading combinée STEM et MATCS


Date de création: 2023-09-15 16:22:48 Dernière modification: 2023-09-15 16:22:48
Copier: 0 Nombre de clics: 655
1
Suivre
1617
Abonnés

Cette stratégie est appelée stratégie de trading de dynamique combinée STEM et MATCS. Cette stratégie utilise l’indicateur Supertrend en combinaison avec l’indicateur MACD pour former un signal de trading.

Comment fonctionne cette stratégie ?

  1. Calculer l’indicateur de Supertrend, qui génère des signaux d’achat et de vente lorsque le cours se déplace.
  2. Calculer la ligne rapide, la ligne moyenne et la ligne lente de l’indicateur MACD. Un signal de vente est généré lorsque la ligne rapide traverse la ligne moyenne et un signal d’achat lorsque la ligne rapide traverse la ligne moyenne.
  3. La combinaison de l’indicateur Supertrend et de l’indicateur MACD permet d’entrer dans le marché uniquement lorsque les deux signaux sont émis en même temps.
  4. Le stop loss est calculé en utilisant l’indicateur ATR.

Règles de négociation spécifiques:

  1. Lorsque la Supertrend tourne à la hausse et à la baisse et que la MACD traverse la ligne médiane sur la ligne rapide, effectuez une entrée supplémentaire.
  2. Lorsque la Supertrend est renversée par une baisse de la courbe et que la ligne rapide du MACD traverse la ligne médiane, le short est entré.
  3. Conditions de placement: Stop loss ou stop loss (optionnel)

Les avantages de cette stratégie:

  1. La combinaison de plusieurs indicateurs améliore la précision du signal.
  2. Les pertes dynamiques peuvent limiter les pertes individuelles.
  3. Il est capable de suivre les tendances et de renverser les transactions.

Le risque de cette stratégie:

  1. Les paramètres de l’indicateur Supertrend et MACD sont mal configurés et peuvent générer des signaux erronés.
  2. Les points d’arrêt trop proches peuvent être fréquemment arrêtés.
  3. Les frais de transaction et les points de glissement affectent le profit.

En résumé, les stratégies de dynamisme combinées STEM et MATCS sont adaptées pour les transactions de courte et moyenne ligne. L’application d’une stratégie de stop loss est essentielle pour contrôler les risques. Les traders doivent réduire les risques dans les transactions physiques grâce à l’optimisation des paramètres et à une gestion rigoureuse des fonds.

Code source de la stratégie
/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-14 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/
// © IncomePipelineGenerator
//@version=4
// strategy("STRAT_STEM_MATCS_BTC", overlay=true, pyramiding = 0, default_qty_value = 20, slippage = 5)


ST_EMA_PERIOD = input(1, minval=1)
ST_EMA = ema(close, ST_EMA_PERIOD)

LENGTH = input(title="ATR_PERIOD", type=input.integer, defval=95)
ATR_TUNE = input(title="ATR_TUNE", type=input.float, step=0.1, defval=2.1)
showLabels = input(title="Show_Buy/Sell_Labels ?", type=input.bool, defval=true)
highlightState = input(title="Highlight_State ?", type=input.bool, defval=true)

ATR = ATR_TUNE * atr(LENGTH)

longStop = ST_EMA - ATR
longStopPrev = nz(longStop[1], longStop)
longStop := (close[1]) > longStopPrev ? max(longStop, longStopPrev) : longStop

shortStop = ST_EMA + ATR
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := (close[1]) < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and (close) > shortStopPrev ? 1 : dir == 1 and (close) < longStopPrev ? -1 : dir


fastLength = input(3, minval=1), medLength=input(9, minval=1), slowLength=input(12, minval=1), signalLength=input(16,minval=1)
fastMA = ema(close, fastLength), medMA = ema(close, medLength), slowMA = ema(close, slowLength)

macd = fastMA - slowMA
fmacd = fastMA - medMA
smacd = slowMA - medMA

signal = ema(macd, signalLength)
fsignal = ema(fmacd, signalLength)
ssignal = ema(smacd, signalLength)


SetStopLossShort = 0.0
SetStopLossShort := if(strategy.position_size < 0)
    StopLossShort = shortStop
    min(StopLossShort,SetStopLossShort[1])

SetStopLossLong = 0.0
SetStopLossLong := if(strategy.position_size > 0)
    StopLossLong = longStop
    max(StopLossLong,SetStopLossLong[1])


ATR_CrossOver_Period = input(5, type=input.integer, minval=1, maxval=2000)
ATR_SIGNAL_FINE_TUNE = input(0.962, type=input.float)  
ATR_CS = atr(ATR_CrossOver_Period)*ATR_SIGNAL_FINE_TUNE

StopLoss_Initial_Short = input(0.0, type=input.float) 
StopLoss_Initial_Long = input(0.0, type=input.float) 

StopLoss_Long_Adjust = input(0.0, type=input.float) 
StopLoss_Short_Adjust = input(0.0, type=input.float) 

VOLUME_CHECK = input(200)

//Custom Time Interval
fromMinute = input(defval = 0, title = "From Minute", minval = 0, maxval = 60)
fromHour = input(defval = 0, title = "From Hour", minval = 0, maxval = 24)
fromDay = input(defval = 1, title = "From Day", minval = 1)
fromMonth = input(defval = 1, title = "From Month", minval = 1)
fromYear = input(defval = 2019, title = "From Year", minval = 1900)
tillMinute = input(defval = 0, title = "Till Minute", minval = 0, maxval = 60)
tillHour = input(defval = 0, title = "Till Hour", minval = 0, maxval = 24)
tillDay = input(defval = 1, title = "Till Day", minval = 1)
tillMonth = input(defval = 1, title = "Till Month", minval = 1)
tillYear = input(defval = 2020, title = "Till Year", minval = 1900)
timestampStart = timestamp(fromYear,fromMonth,fromDay,fromHour,fromMinute)
timestampEnd = timestamp(tillYear,tillMonth,tillDay,tillHour,tillMinute)


//Custom Buy Signal Code --  This is where you design your own buy and sell signals. You now have millions of possibilites with the use of simple if/and/or statements.
if (  dir==1 and dir[1]==-1  and volume > VOLUME_CHECK and ((fsignal[1] -fsignal) <= 0) and  cross(fmacd, smacd) )
    strategy.exit("SELL")
    strategy.entry("BUY", strategy.long)
    strategy.exit("BUY_STOP","BUY", stop = close - StopLoss_Initial_Long)

//Custom Sell Signal Code
if  ( dir == -1 and dir[1] == 1 and dir[2] == 1 and dir[3] == 1 and dir[4] == 1 and  cross(fmacd, smacd) )
    strategy.exit( "BUY")
    strategy.entry("SELL", strategy.short)
    strategy.exit("SELL_STOP","SELL", stop = close + StopLoss_Initial_Short)

//Slight adjustments to ST for fine tuning
if (strategy.opentrades > 0 )
    strategy.exit("BUY_TRAIL_STOP","BUY", stop = longStop - StopLoss_Long_Adjust)
    strategy.exit("SELL_TRAIL_STOP","SELL", stop = shortStop + StopLoss_Short_Adjust)