Stratégie de détention de position SMA solide et stable

Auteur:ChaoZhang est là., Date: 2023-12-18 17:44:16 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de détention de position simple basée sur les lignes SMA. Elle va long lorsque la ligne SMA à court terme traverse la ligne SMA à long terme, et ferme la position lorsque la ligne SMA à court terme traverse en dessous de la ligne SMA à long terme.

Principe de stratégie

La stratégie utilise deux lignes SMA, une ligne à court terme de 20 jours et une ligne à long terme de 50 jours. La ligne à court terme peut capturer les changements de tendance des prix plus rapidement, tandis que la ligne à long terme filtre le bruit à court terme. Lorsque la ligne à court terme monte rapidement au-dessus de la ligne à long terme, cela indique que la tendance a peut-être commencé une reprise à long terme, donc nous allons long ici. Lorsque la ligne à court terme descend en dessous de la ligne à long terme, cela suggère que la tendance haussière peut avoir pris fin, donc nous clôturons la position ici.

En résumé, cette stratégie utilise les caractéristiques de la courbe des lignes SMA pour déterminer les tendances du mouvement des prix sur deux dimensions temporelles et génère des bénéfices stables avec une position relativement stable.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Facile à utiliser, facile à comprendre, faible barrière d'utilisation
  2. Relativement stable en tirant parti des points forts des lignes SMA
  3. Longues périodes de détention, moins affectées par le bruit de marché à court terme
  4. Peu de paramètres configurables, facile à trouver des combinaisons optimales de paramètres

Analyse des risques

Les risques de cette stratégie comprennent:

  1. Plus de stop-loss possibles lorsque les marchés à plage prolongée
  2. Les lignes SMA ont un effet de retard, ne peuvent pas capter les variations de prix immédiates
  3. Incapable de capitaliser sur les tendances à la baisse à court terme
  4. Impossible de contrôler la taille des pertes de transaction unique

Directions d'optimisation

Cette stratégie peut être encore optimisée dans les domaines suivants:

  1. Ajouter l'indicateur MACD pour identifier le moment du rebond vers le bas pour moins de pertes sur les marchés à fourchette
  2. Testez différentes combinaisons de paramètres de ligne SMA pour trouver l'optimum
  3. Incorporer des indicateurs nationaux pour détecter les divergences de tendance, améliorer la précision des données
  4. Ajouter des mécanismes de prise de bénéfices et d'arrêt des pertes au contrôle du bénéfice/perte par transaction

Résumé

En résumé, cette stratégie de détention de position SMA est stable, simple et facile à utiliser, adaptée aux traders débutants.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Zlema Strateg Long 5m', overlay=true )

// FUNCTIONS

Atr(p) =>
    atr = 0.
    Tr = math.max(high - low, math.max(math.abs(high - close[1]), math.abs(low - close[1])))
    atr := nz(atr[1] + (Tr - atr[1]) / p, Tr)
    atr

// ZLEMA
length = input(title='Length', defval=14)
highlightMovements = input(title='Highlight Movements ?', defval=true)
src = input(title='Source', defval=close)

lag = math.floor((length - 1) / 2)

zlema = ta.ema(src + src - src[lag], length)

zlemaColor = highlightMovements ? zlema > zlema[1] ? color.green : color.red : #6d1e7f
plot(zlema, title='ZLEMA', linewidth=2, color=zlemaColor, transp=0)


// TAKE PROFIT AND STOP LOSS
long_tp1_inp = input.float(1, title='Long Take Profit 1 %', step=0.1) / 100
long_tp1_qty = input.int(10, title='Long Take Profit 1 Qty', step=1)

long_tp2_inp = input.float(5, title='Long Take Profit 2%', step=0.1) / 100
long_tp2_qty = input.int(50, title='Long Take Profit 2 Qty', step=1)

long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp)
long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp)




// Stop Loss
multiplier = input.float(2.2, 'SL Mutiplier', minval=1, step=0.1)
ATR_period = input.int(17, 'ATR period', minval=1, step=1)

// Strategy
entry_long = zlema > zlema[1]
entry_price_long = ta.valuewhen(entry_long, close, 0)
SL_floating_long = entry_price_long - multiplier * Atr(ATR_period)
exit_long = zlema < zlema[1]

///// BACKTEST PERIOD ///////
testStartYear = input(2022, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(9999, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(31, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

if testPeriod()
    strategy.entry('long', strategy.long, comment='Long', when=entry_long)
    strategy.exit('TP1', 'long', qty_percent=long_tp1_qty, limit=long_take_level_1)  //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
    strategy.exit('TP2', qty_percent=long_tp2_qty, limit=long_take_level_2)  //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
    strategy.close('long', when=exit_long, comment='exit long')


// LONG POSITION
plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='1st Long Take Profit')
plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='2nd Long Take Profit')
plot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Stop Loss')


if testPeriod()
    strategy.entry('long', strategy.long, comment='Long', when=entry_long)


// LONG POSITIONplot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Stop Loss')



Plus de