Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Vues:
411
Note:
(31)
Publié:
2022.01.31 10:13
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance


    L'Expert Advisor Moving Average utilise une moyenne mobile pour former des signaux de trading. L'ouverture et la fermeture des positions sont effectuées lorsque la moyenne mobile rencontre le prix à la barre récemment formée (indice de barre égal à 1). La taille du lot sera optimisée selon un algorithme spécial.

    L'Expert Advisor analyse la concordance de la moyenne mobile et du graphique des prix du marché. La vérification est effectuée par la fonction CheckForOpen(). Si la moyenne mobile atteint la barre de telle manière que la première est supérieure au prix d'ouverture mais inférieure au prix de clôture, la position ACHETER sera ouverte. Si la moyenne mobile rencontre la barre de telle manière que la première est inférieure au prix d'ouverture mais supérieure au prix de clôture, la position de VENTE sera ouverte.

    Le Money Management utilisé dans l'expert est très simple, mais efficace : le contrôle du volume de chaque position est effectué en fonction des résultats des transactions précédentes. Cet algorithme est implémenté par la fonction LotsOptimized(). La taille de base du lot est calculée sur la base du risque maximal admissible :

    lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);

    Le paramètre MaximumRisk affiche le pourcentage de risque de base pour chaque transaction. Il possède généralement une valeur comprise entre 0,01 (1%) et 1 (100%). Par exemple, si la marge libre (AccountFreeMargin) est égale à 20 500 $ et que les règles de gestion du capital prescrivent d'utiliser un risque de 2 %, la taille de base du lot fera 20 500 * 0,02 / 1000 = 0,41. Il est très important de contrôler la précision de la taille du lot et de normaliser le résultat avec les valeurs autorisées. Normalement, les lots fractionnés avec un pas de 0,1 sont autorisés. Une transaction ayant un volume de 0,41 ne sera pas effectuée. Pour normaliser, la fonction NormalizeDouble() est utilisée avec une précision jusqu'à 1 caractère après le point. Il en résulte un lot de base de 0,4. Le calcul du lot de base sur la base de la marge libre permet d'augmenter les volumes d'opérations en fonction du succès de trading, c'est-à-dire de trader avec réinvestissant. C'est le mécanisme de base avec une gestion du capital obligatoire pour augmenter l'efficacité du trading.

    DecreaseFactor est la mesure dans laquelle la taille du lot sera réduite après une transaction non rentable. Les valeurs normales sont 2,3,4,5. Si les transactions précédentes n'étaient pas rentables, les volumes suivants diminueront d'un facteur de DecreaseFactor afin d'attendre la période non rentable. C'est le facteur principal de l'algorithme de gestion du capital. L'idée est très simple : si le trading augmente avec succès, l'expert travaille avec le lot de base en réalisant un profit maximum. Après la toute première transaction non rentable, l'expert "réduira la vitesse" jusqu'à ce qu'une nouvelle transaction positive soit effectuée. L'algorithme permet de désactiver la "réduction de vitesse", pour cela, il faut spécifier DecreaseFactor = 0. Le montant des dernières transactions non rentables successives est calculé dans l'historique des transactions. Le lot de base sera recalculé sur cette base :

    if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);

    Ainsi, l'algorithme permet de réduire efficacement le risque survenant à la suite d'une série de transactions non rentables. La taille du lot est obligatoirement vérifiée pour la taille de lot minimale autorisée à la fin de la fonction car les calculs effectués précédemment peuvent aboutir à lot = 0 :

    if(lot<0.1) lot=0.1;

    L'expert est principalement destiné à travailler avec une période quotidienne et en mode test - à faire à des prix proches. Il ne s'échangera qu'à l'ouverture d'une nouvelle barre, c'est pourquoi les modes de modélisation à chaque tick ne sont pas nécessaires.

    Les résultats des tests sont représentés dans le rapport.

Rapport du Testeur de Stratégie

Moyenne Mobile


SymboleEURUSD (Euro vs US Dollar)
Période1 heure (H1) 2003.01.08 00:00 - 2003.11.25 00:00
ModèleChaque tick (basé sur tous les moindres délais disponibles avec interpolation fractale de chaque tick)
ParamètresLots=0.1; MaximumRisk=0.01; DecreaseFactor=1; MovingPeriod=16; MovingShift=11;

Barres en test19371Ticks modélisés656918Qualité de modélisation25,00 %

Dépôt initial10000.00



Bénéfice net total1695.20Bénéfice brut4293.20Perte brute-2598.00
Facteur de profit1.65Gain attendu10.80

Drawdown absolu40.35Réduction maximale (%)318,50 (3,0%)


Nombre total de trades157Positions courtes (gagnées %)73 (26.03%)Positions longues (gagnées %)84 (32.14%)

Trades gagnants (% du total)46 (29.30%)Trades perdants (% du total)111 (70.70%)
Le plus grandtrade gagnant262.55trade perdant-91.00
Moyennetrade gagnant93.33trade perdant-23.41
Maximumgains consécutifs (profit en argent)2 (387.15)pertes consécutives (perte en argent)7 (-287.25)
Maximalprofit consécutif (nombre de trades gagnants)387.15 (2)perte consécutive (nombre de pertes)-287.25 (7)
Moyennegains consécutifs1pertes consécutives3

Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/7927

Send Pending Order Send Pending Order

Le script envoie SELL STOP à l'ordre en attente avec les données d'expiration et le numéro d'impression du ticket.

Modify Pending Order Modify Pending Order

Modify pending order - script choisissant le premier dans la liste des ordres en attente, imprimant les données de l'ordre en attente sélectionné, modifiant l'ordre en attente et imprimant les données de l'ordre en attente après modification.

Convertisseur de période Convertisseur de période

Il est conçu pour créer une période de symbole non standard basée sur l'utilisation de la période standard.

Convertisseur de période Convertisseur de période

Utilisez ce script pour créer vos propres périodes non standard.