//+------------------------------------------------------------------+
//| CombinedIndicator.mq5 |
//| Generated by ChatGPT |
//+------------------------------------------------------------------+
#property strict
#property indicator_chart_window
#property indicator_buffers 10
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color3 Yellow
#property indicator_color4 DodgerBlue
#property indicator_color5 Magenta
#property indicator_color6 Orange
#property indicator_color7 Blue
#property indicator_color8 Purple
#property indicator_color9 Aqua
#property indicator_color10 DarkOrange
//--- input parameters
input int InpBarsCount = 500; // Nombre de barres à vérifier
input double supportLevel = 100.0; // Niveau de support
input double resistanceLevel = 120.0; // Niveau de résistance
input double RiskPercentage = 2.0; // Pourcentage de risque par trade
input int TrendFilterPeriod = 50; // Période pour le filtre de tendance
//--- indicator buffers
double buySignalBuffer[];
double sellSignalBuffer[];
double universalBuyBuffer[];
double universalSellBuffer[];
double universalPriceActionBuyBuffer[];
double universalPriceActionSellBuffer[];
double trendlineBuyBuffer[];
double trendlineSellBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- Mapping des buffers des indicateurs
SetIndexBuffer(0, buySignalBuffer);
SetIndexBuffer(1, sellSignalBuffer);
SetIndexBuffer(2, universalBuyBuffer);
SetIndexBuffer(3, universalSellBuffer);
SetIndexBuffer(4, universalPriceActionBuyBuffer);
SetIndexBuffer(5, universalPriceActionSellBuffer);
SetIndexBuffer(6, trendlineBuyBuffer);
SetIndexBuffer(7, trendlineSellBuffer);
//--- Nom de la fenêtre de données et libellé de la sous-fenêtre de l'indicateur
IndicatorShortName("CombinedIndicator");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Fonction d'itération de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
// S'assurer qu'il y a suffisamment de données
if (rates_total < InpBarsCount)
return(0);
int limit = MathMin(rates_total - prev_calculated, rates_total - 1);
for (int i = limit - 1; i >= 1; i--)
{
// Réinitialiser les signaux
buySignalBuffer[i] = EMPTY_VALUE;
sellSignalBuffer[i] = EMPTY_VALUE;
universalBuyBuffer[i] = EMPTY_VALUE;
universalSellBuffer[i] = EMPTY_VALUE;
universalPriceActionBuyBuffer[i] = EMPTY_VALUE;
universalPriceActionSellBuffer[i] = EMPTY_VALUE;
trendlineBuyBuffer[i] = EMPTY_VALUE;
trendlineSellBuffer[i] = EMPTY_VALUE;
// Vérifier le rebond sur le niveau de support
if (low[i] <= supportLevel && close[i] > open[i] && close[i + 1] < open[i + 1])
{
buySignalBuffer[i] = low[i] - 0.0003; // Positionner la flèche en dessous de la bougie
}
// Vérifier le rebond sur le niveau de résistance
if (high[i] >= resistanceLevel && close[i] < open[i] && close[i + 1] > open[i + 1])
{
sellSignalBuffer[i] = high[i] + 0.0003; // Positionner la flèche au-dessus de la bougie
}// Vérification basée sur les dernières valeurs de clôture pour simuler une ligne de tendance
if (IsTrendlineBreak(i, close))
{
trendlineBuyBuffer[i] = low[i] - 0.5 * Point;
trendlineSellBuffer[i] = high[i] + 0.5 * Point;
}
}
return(rates_total);
}
//+------------------------------------------------------------------+
//| Fonction de vérification de la ligne de tendance |
//+------------------------------------------------------------------+
bool IsTrendlineBreak(int i, const double &close[])
{
int trendlineBars = 10; // Ajuster si nécessaire
double trendline = 0;
for (int j = i; j > i - trendlineBars; j--)
{
trendline += close[j];
}
trendline /= trendlineBars;
if (close[i] > trendline && close[i - trendlineBars] < trendline)
return(true);
else if (close[i] < trendline && close[i - trendlineBars] > trendline)
return(true);
return(false);
}
- Aide au codage
- Aide à la mise à niveau vers MetaTrader 5 sans perte de données
- prev_calculé
Bonjour. Essayez d'utiliser la fonction pour poster le code proprement. Il n'est pas lisible sinon.
On n'est pas devin. Qu'est sur votre code fait ou ne fait pas ?
En plus on n'est pas là pour corriger les codes de chatgpt
Comment poster le code pour qu'il soit visible ?
Faut chercher camarade
MQL5 va te demander beaucoup de recherches
On ne va pas pouvoir répondre à toutes tes questions
MQL5 va te demander beaucoup de recherches
On ne va pas pouvoir répondre à toutes tes questions
....
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire