Les ressources ont été chargées... Je charge...

Stratégie de mise en œuvre croisée de la STI

Auteur:ChaoZhang est là., Date: 2024-06-07 16h36 et 24h
Les étiquettes:STILe taux d'intérêtATRTEMA

img

Résumé

Cette stratégie utilise l'indicateur TSI comme signal principal de négociation. Lorsque l'indicateur TSI traverse sa ligne de signal et que l'indicateur TSI est en dessous de la limite inférieure ou au-dessus de la limite supérieure, la stratégie génère un signal de position ouverte.

Principe de stratégie

  1. Calculer la valeur de l'indicateur de la STI et la valeur de la ligne de signalisation.
  2. Déterminer si l'heure actuelle se situe dans la fourchette de négociation admissible et si la barre actuelle correspond au moins au nombre minimum de barres indiqué à la dernière transaction.
  3. Si l'indicateur de la STI traverse la ligne de signalisation par-dessous et que celle-ci est inférieure à la limite inférieure spécifiée, un signal long est généré.
  4. Si l'indicateur de la STI traverse en dessous de la ligne de signal depuis le haut et que la ligne de signal est au-dessus de la limite supérieure spécifiée, un signal court est généré.
  5. Si une position longue est actuellement maintenue, une fois que l'indicateur de la STI passe sous la ligne de signal depuis le haut, toutes les positions longues sont fermées.
  6. Si une position courte est actuellement maintenue, une fois que l'indicateur de la STI dépasse la ligne de signal depuis le bas, toutes les positions courtes sont fermées.

Analyse des avantages

  1. La logique de la stratégie est claire, utilisant la croix de l'indicateur de la STI comme seule condition d'ouverture et de clôture des positions, ce qui est simple et facile à comprendre.
  2. En limitant la session de négociation et la fréquence de la négociation, le risque de surtrading est efficacement contrôlé.
  3. Arrêter les pertes et les profits en temps opportun, une fois qu'un signal contraire apparaît, fermer la position de manière décisive, contrôlant l'exposition au risque d'une seule transaction.
  4. Plusieurs indicateurs sont utilisés pour faciliter le jugement, tels que l'EMA, l'ATR, etc., renforçant la robustesse de la stratégie.

Analyse des risques

  1. La stratégie est très sensible à la sélection des paramètres des indicateurs de la STI et les différents paramètres entraîneront de grandes différences de performance, qui doivent être choisies avec soin.
  2. Les conditions d'ouverture et de clôture sont relativement simples, ne présentent pas de jugement sur la tendance ni de contraintes de volatilité et peuvent entraîner des pertes sur les marchés oscillants.
  3. En l'absence de gestion des positions et de gestion des fonds, il est difficile de contrôler le retrait, une fois qu'une perte continue entraînera un retrait important.
  4. Seule une inversion longue-courte, et non un suivi de tendance, manquera de nombreuses opportunités de tendance.

Direction de l'optimisation

  1. Optimiser les paramètres de l'indicateur de la STI pour trouver une combinaison de paramètres plus robuste.
  2. Ajouter des indicateurs de jugement de tendance, tels que MA ou MACD, pour sélectionner la direction de tendance lors de l'ouverture d'une position afin d'améliorer le taux de réussite.
  3. Ajouter des indicateurs de volatilité, tels que ATR, pour réduire le nombre de transactions dans des environnements de marché à forte volatilité.
  4. Mettre en place un modèle de gestion des positions permettant d'ajuster dynamiquement la taille des positions de chaque transaction en fonction des résultats récents du marché et de la valeur nette du compte.
  5. La logique de suivi des tendances peut être ajoutée pour continuer à occuper des positions sur le marché des tendances afin d'améliorer la capacité de la stratégie à capturer les grandes tendances.

Résumé

Cette stratégie est basée sur l'indicateur TSI et génère des signaux de négociation à travers le croisement de la TSI et de sa ligne de signal. En même temps, elle limite le temps et la fréquence de négociation pour contrôler les risques. L'avantage de la stratégie est que la logique est simple et claire, et elle arrête les pertes et les bénéfices en temps opportun. Cependant, l'inconvénient est le manque de jugement de tendance et de gestion de position, la sensibilité aux paramètres TSI, et ne peut capturer que l'inversion de tendance du marché tout en manquant le marché.


/*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)


Relationnée

Plus de