Stratégie de croisement TSI

TSI EMA ATR TEMA
Date de création: 2024-06-07 16:36:24 Dernière modification: 2024-06-07 16:36:24
Copier: 7 Nombre de clics: 628
1
Suivre
1617
Abonnés

Stratégie de croisement TSI

Aperçu

La stratégie utilise l’indicateur TSI comme principal signal de négociation. La stratégie génère un signal d’ouverture de position lorsque l’indicateur TSI se croise avec sa ligne de signal et que l’indicateur TSI est en dessous ou au-dessus de la limite inférieure. La stratégie utilise également des indicateurs tels que l’EMA et l’ATR pour optimiser la performance de la stratégie.

Principe de stratégie

  1. Calculer la valeur de l’indicateur TSI et la valeur de la ligne de signal.
  2. Détermine si le bar actuel est dans la fourchette de temps autorisée pour la transaction et si le bar actuel est au moins intercalaire entre le bar de la dernière transaction et le bar minimum indiqué.
  3. Si l’indicateur TSI traverse la ligne de signal de bas en haut, et que la ligne de signal est inférieure à la limite inférieure indiquée, un signal plus élevé est produit.
  4. Si le TSI traverse la ligne de signal de haut en bas, et que la ligne de signal est supérieure à la limite supérieure indiquée, un signal de vide est généré.
  5. Si vous détenez actuellement des positions à plusieurs têtes, effacez toutes les positions à plusieurs têtes une fois que l’indicateur TSI a traversé la ligne de signal de haut en bas.
  6. Si vous détenez actuellement des positions vides, effacez toutes les positions vides une fois que l’indicateur TSI a traversé la ligne de signal de bas en haut.

Analyse des avantages

  1. La logique de la stratégie est claire, simple et compréhensible, en utilisant le croisement de l’indicateur TSI comme seule condition d’ouverture de position.
  2. Le risque de survente est effectivement maîtrisé en limitant le temps et la fréquence des transactions.
  3. Le stop-loss est mis en place en temps opportun, et le plafond est décisif dès qu’un signal contraire apparaît, ce qui permet de maîtriser le seuil de risque d’une seule transaction.
  4. L’utilisation d’indicateurs multiples comme l’EMA, l’ATR et d’autres pour aider à juger de la robustesse de la stratégie.

Analyse des risques

  1. Les stratégies sont sensibles au choix des paramètres de l’indicateur TSI. Les paramètres différents entraînent de grandes différences de performances et nécessitent une sélection prudente.
  2. Les conditions d’ouverture et de placement sont relativement simples, il n’y a pas de jugement de tendance et de contrainte sur la volatilité, ce qui peut entraîner des pertes en cas de choc.
  3. L’absence de gestion des positions et de gestion des capitaux rend les retraits difficiles à contrôler, et les pertes consécutives peuvent entraîner des retraits importants.
  4. Si vous ne suivez pas la tendance, vous risquez de rater de nombreuses opportunités de voir la tendance.

Direction d’optimisation

  1. Optimiser les paramètres de l’indicateur TSI pour trouver des combinaisons de paramètres plus robustes. Les algorithmes génétiques peuvent être utilisés pour rechercher automatiquement l’optimisation.
  2. L’ajout d’indicateurs de jugement de tendance, tels que MA ou MACD, permet de choisir la direction de la tendance lors de l’ouverture d’une position et d’améliorer le taux de réussite.
  3. L’ajout d’indicateurs de volatilité, tels que l’ATR, réduit le nombre de transactions dans un environnement de marché à forte volatilité.
  4. Introduction d’un modèle de gestion des positions qui permet d’ajuster la taille des positions de chaque transaction en fonction de la performance récente du marché et de la valeur nette des comptes.
  5. Il est possible d’augmenter la logique de suivi des tendances, de maintenir une position dans une tendance et d’améliorer la capacité de la stratégie à capturer les grandes tendances.

Résumer

La stratégie est basée sur l’indicateur TSI, qui génère un signal de transaction par la croisée du TSI et de la ligne de signal. En même temps, le temps de négociation et la fréquence de négociation sont limités pour contrôler le risque. L’avantage de la stratégie est la logique simple et claire, le stop-loss en temps opportun.

Code source de la stratégie
/*backtest
start: 2024-05-30 00:00:00
end: 2024-06-06 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nikgavalas

//@version=5
strategy("TSI Entries", overlay=true, margin_long=100, margin_short=100)

//
// INPUTS
//

// Define the start and end hours for trading
string sessionInput = input("1000-1530", "Session")

// Day of the week.
string daysInput = input.string("23456", tooltip = "1 = Sunday, 7 = Saturday")

// Minimum number of bar's between entries
requiredBarsBetweenEntries = input.int(12, "Required Bars Between Entries")

// Show debug labels
bool showDebugLabels = input.bool(false, "Show Debug Labels")

//
// FUNCTIONS
//

//@function Define the triple exponential moving average function
tema(src, len) => tema = 3 * ta.ema(src, len) - 3 * ta.ema(ta.ema(src, len), len) + ta.ema(ta.ema(ta.ema(src, len), len), len)

//@function Atr with EMA
atr_ema(length) =>
    trueRange = na(high[1])? high-low : math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
    //true range can be also calculated with ta.tr(true)
    ta.ema(trueRange, length)

//@function Check if time is in range
timeinrange() => 
    sessionString = sessionInput + ":" + daysInput
    inSession = not na(time(timeframe.period, sessionString, "America/New_York"))

//@function Displays text passed to `txt` when called.
debugLabel(txt, color, y, style) =>
    if (showDebugLabels) 
        label.new(bar_index, y, text = txt, color = color, style = style, textcolor = color.black, size = size.small)


//
// INDICATOR CODE
//

long = input(title="TSI Long Length", defval=8)
short = input(title="TSI Short Length", defval=8)
signal = input(title="TSI Signal Length", defval=3)
lowerLine = input(title="TSI Lower Line", defval=-50)
upperLine = input(title="TSI Upper Line", defval=50)

price = close
double_smooth(src, long, short) =>
	fist_smooth = ta.ema(src, long)
	ta.ema(fist_smooth, short)

pc = ta.change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(math.abs(pc), long, short)
tsiValue = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
signalValue = ta.ema(tsiValue, signal)

//
// COMMON VARIABLES
//

var color trendColor = na
var int lastEntryBar = na

bool tradeAllowed = timeinrange() == true and (na(lastEntryBar) or bar_index - lastEntryBar > requiredBarsBetweenEntries)

// 
// CROSSOVER
//

bool crossOver = ta.crossover(tsiValue, signalValue)
bool crossUnder = ta.crossunder(tsiValue,signalValue)

if (tradeAllowed) 
	if (signalValue < lowerLine and crossOver == true)
		strategy.entry("Up", strategy.long)
		lastEntryBar := bar_index

	else if (signalValue > upperLine and crossUnder == true)

		strategy.entry("Down", strategy.short)
		lastEntryBar := bar_index

// 
// EXITS
// 

if (strategy.position_size > 0 and crossUnder == true)
	strategy.close("Up", qty_percent = 100)

else if (strategy.position_size < 0 and crossOver == true)
	strategy.close("Down", qty_percent = 100)