// Paramètres de la stratégie
int PERIODE = 50; // Période de la moyenne mobile
double FACTEUR_ACHAT = 1.05; // Facteur de zone d’achat
double FACTEUR_VENTE = 0.95; // Facteur de zone de vente
for(int i = 0; i < période; i++)
{
total += close[index – i];
}
return total / période;
}
// Boucle principale pour lire les données de prix
for(int i = PERIODE; i < BarCount; i++)
{
// Lire les données de prix
close[i] = Close[i];
high[i] = High[i];
low[i] = Low[i];
// Calculer la moyenne mobile
double moyenneMobile = MA(PERIODE, close, i);
// Calculer les zones d’achat et de vente
double zoneAchat = moyenneMobile * FACTEUR_ACHAT;
double zoneVente = moyenneMobile * FACTEUR_VENTE;
// Vérifier si le prix a atteint une zone d’achat ou de vente
if(low[i] < zoneAchat && low[i-1] > zoneAchat) // breakout à la baisse
{
// Vendre
SellAtMarket;
}
else if(high[i] > zoneVente && high[i-1] < zoneVente) // breakout à la hausse
{
// Acheter
BuyAtMarket;
}
}
Enfin, il faut ajouter une condition pour vérifier la tendance et le pullback :
cpp
Copy code
// Condition pour vérifier la tendance et le pullback
if(close[i] > moyenneMobile && close[i-1] < moyenneMobile) // Tendance haussière
{
// Vérifier si le prix a effectué un pullback
if(low[i] < moyenneMobile && low[i-1] > moyenneMobile) // Pullback
{
// Acheter
BuyAtMarket;
}
}
else if(close[i] < moyenneMobile && close[i-1] > moyenneMobile) // Tendance baissière
{
// Vérifier si le prix a effectué un pullback
if(high[i] > moyenneMobile && high[i-1] < moyenneMobile) //
// Condition pour vérifier la tendance et le pullback
if(close[i] > moyenneMobile && close[i-1] < moyenneMobile) // Tendance haussière
{
// Vérifier si le prix a effectué un pullback
if(low[i] < moyenneMobile && low[i-1] > moyenneMobile) // Pullback
{
// Acheter
BuyAtMarket;
}
}
else if(close[i] < moyenneMobile && close[i-1] > moyenneMobile) // Tendance baissière
{
// Vérifier si le prix a effectué un pullback
if(high[i] > moyenneMobile && high[i-1] < moyenneMobile) //