La gestion du spread et les algos
La variabilité du spread est un point crucial.
D'abord un point : excluons les cfd à risque limité pour le trading auto.
Pourquoi ? par expérience, cette variabilité ne s'explique pas toujours par des critères rationnels. Donc, c'est imprévisible et ingérable. Les courtiers pourraient d'après moi facilement implémenter la variable "
spread" mais visiblement ça ne les arrange pas ...
Pour les Futures.
Pas non plus de variable "
spread" : dommage ! mais le
spread est la conséquence de causes connues.
Si nous prenons le
nq par exemple, le
spread varie en temps normal entre 0,25 à 0,5 points ;
hors horaires US, de 0,5 à 1 point ; en période de news : jusqu’à 10 points; et en cas de krach/illiquidité extrême : 20 points et plus.
Aucune solution simple.
Mais il y a plusieurs moyens - qui peuvent être combinés - pour gérer le sujet.
- Ajouter le
spread connu aux prix d'entrée et de sortie pour les périodes calmes (on pourrait bien sûr ajouter des variations horaires) :
Code : #
spread = 0.5
prixAchat = close + spread
- Déduire le
spread des profits et pertes :
Code : #
if longposition et conditionsdeSortie then
spread = 0.5
profit = close - prixAchat - spread
endif
- Ajuster le stop loss et take profit pour compenser le
spread :
Code : #
spread = 0.5
stopLoss = close - (stopSize + spread)
- Simuler un
spread dynamique :
Code : #
spread = ATR(10) * 0.1 // Exemple : 10% de l’ATR //
if condition_achat then
prixAchat = close + spread buy at prixAchat stop
endif
Sans oublier les filtres anti volatilités extrêmes :
- avec
l'atr :
Code : #
ATR_Period = 14
volatilite = ATR(ATR_Period)
// Seuil de volatilité : Exclure si l’ATR dépasse un % du prix
seuil_volatilite = close * 0.005 // Exemple : 0.5% du prix
// Ne pas trader en cas de forte volatilité
if volatilite < seuil_volatilite then
// Condition d'achat
if condition_achat then
buy at market
endif
- Avec les filtres horaires
Code : #
// Définition des heures d'annonces
[code]news_hours = [14:30, 20:00] // Exemple : NFP à 14h30, FOMC à 20h
// Vérifier si l'heure actuelle est dans la période de volatilité
if not(time in news_hours) then
if condition_achat then
buy at market
endif
- Avec un filtre basé sur la vitesse du prix
Code : #
delta_price = abs(close - close[5]) // Variation sur 5 bougies
seuil_delta = close * 0.003 // Exemple : 0.3% du prix
if delta_price < seuil_delta then
if condition_achat then
buy at market
endif
- et utiliser d'autres ratios liés à la
volatilité ...
Reste plus qu'à ...