Experts: MarketPredictor - page 2

 

Merci pour les conseils, le code est en cours depuis 5 jours, j'ai résolu le problème de ne pas définir de transactions, je veux juste faire de petites mises à jour :)

 

Vous devez faire une nouvelle itération

    // Ajuster l'alpha en fonction de la volatilité (ATR)
    double atr = iATR(_Symbol, PERIOD_CURRENT, period); // Calculer l'ATR
    if(atr > 0.0)
        alpha = atr * 0.1; // Fixer l'alpha proportionnellement à la volatilité
    else
        alpha = inputAlpha; // Retour à la valeur d'entrée si l'ATR n'est pas disponible

ce code ne va pas calculer correctement l'ATR

https://www.mql5.com/fr/docs/indicators/iatr

Valeur de retour

Renvoie le handle d'un indicateur technique spécifié


Il renvoie le handle qui est un code, et ne renvoie pas la valeur ATR

Documentation on MQL5: Technical Indicators / iATR
Documentation on MQL5: Technical Indicators / iATR
  • www.mql5.com
The function returns the handle of the Average True Range indicator. It has only one buffer. Parameters symbol [in] The symbol name of the security...
 
1. corrections de bogues :
- Dans FFT : L'appel FFT récursif pour les tableaux pairs et impairs peut conduire à une récursion infinie si la taille du tableau n'est pas un degré de deux.
Nous devons nous assurer que la taille du tableau est un degré de deux. Ceci n'est pas vérifié dans le code actuel.
- Dans la fonction CalculateFractalComponentFFT :, nous utilisons la FFT mais ne vérifions pas que N est un degré de deux.
De plus, après la FFT, nous n'utilisons que les N/2 premiers éléments, ce qui est correct, mais le code de la FFT comporte une erreur d'indexation lors de la combinaison.
2. Améliorations :
- Dans la fonction ExecuteTrade : la vérification de la position ouverte à l'aide de PositionSelect(_Symbol) n'est pas tout à fait correcte,
parce que cette fonction renvoie vrai s'il y a une position sur un symbole, mais pas nécessairement qu'elle est ouverte à ce moment-là.
Il est préférable d'utiliser une boucle à travers toutes les positions et de vérifier le numéro magique et le symbole.
- En outre, dans ExecuteTrade, nous ne vérifions pas s'il existe déjà une position ouverte, de sorte que nous pouvons ouvrir plusieurs positions.
Nous devons limiter l'ouverture à une seule position (ou utiliser le numéro magique pour identifier nos positions).
- Dans la fonction OptimiseParameters :, le calcul de la moyenne mobile peut être remplacé par la fonction iMA intégrée.
- Dans la fonction SimulerPrix : l'utilisation de MathRand() n'est peut-être pas la meilleure pour Monte Carlo, il est préférable d'utiliser la distribution normale.