La décélération linéaire est-elle une erreur de programmation ou une caractéristique de MT4 ? - page 4
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
la construction ci-dessous vaut à elle seule le coup.
un peu plus
et nous savons déjà ce qui est exécuté dans quelle séquence. C'est juste du formatage. Mais vous pouvez également décomposer le code en opérations logiquement cohérentes et les séparer en fonctions distinctes. L'algorithme principal est ainsi libéré des piles de code enchevêtrées.
Le problème est la duplication du code, le nombre excessif d'instructions conditionnelles. En fait, le code est constitué de 99% de lignes incluant d'une manière ou d'une autre l'opérateur conditionnel If ; je suis sûr que si vous vous y penchez, le nombre de comparaisons pourrait être réduit de 10 fois. Non seulement cela ralentit l'exécution, mais ce code est également difficile à lire. Une personne qui y apporte des ajouts a au moins 2 tâches principales :
1 - pour ne pas le casser
2 - Ajouter les fonctionnalités nécessaires.
De toute façon, un code illisible entraîne une duplication supplémentaire de toutes sortes de contrôles et de comparaisons, ce qui constitue également une dépense supplémentaire. En regardant le code, je me souviens personnellement de moi il y a environ 25 ans, lorsque j'ai commencé à programmer, et que j'ai appris à partir du manuel de l'Atari 800XL PC sans aucun professeur, juste parce que c'était intéressant.
Bien sûr, il est intéressant de savoir de quel "si" nous parlons, il y a probablement mon RPT - où j'écris "si, alors, alors", et le programmeur l'interprète dans le code, et il y a un "si" lié au travail direct avec les ordres, et il y a beaucoup d'opérations avec les ordres...
Bien sûr, je pensais qu'il s'agissait d'une sorte de boucle dont l'exécution conduit à de multiples vérifications des conditions d'ordre. Et il s'avère que la situation ne peut être corrigée qu'en réécrivant le code à partir de zéro ?
la construction ci-dessous vaut à elle seule le coup.
un peu plus
et vous pouvez déjà voir ce qui est exécuté dans quel ordre. C'est juste du formatage. Mais vous pouvez également décomposer le code en opérations logiquement cohérentes et les séparer en fonctions distinctes. Ainsi, il soulagera l'algorithme principal des piles de code enchevêtrées.
Mais cela n'affecte-t-il pas les performances de quelque manière que ce soit ?
Problème avec le code dupliqué
la construction ci-dessous vaut à elle seule le coup.
un peu plus
et nous savons déjà ce qui est exécuté dans quelle séquence. C'est juste du formatage. Mais vous pouvez également décomposer le code en opérations logiquement cohérentes et les séparer en fonctions distinctes. L'algorithme principal est ainsi libéré des piles de code enchevêtrées.
rev 1.1
Pour définir un stop loss et le filtrage des ordres en attente, nous utilisons deux options d'utilisation d'une MA miroir.
maMirror - calculé en utilisant la fonction iMA standard, fonctionne une fois par barre, les données sont prises à partir des prix d'ouverture de la barre.
Algorithme de calcul :
Pour vendre :
point de calcul initial maMirror=iMA+pipsXHmaM(o/b)
point de calcul ultérieur maMirror=maMirror(1)-(iMA(0)+pipsXHmaM(o/b)-iMA(1)+pipsXHmaM(o/b))
le calcul est terminé après le point final du calcul.
A acheter :
point de calcul initial maMirror=iMA-pipsXHmaL
points de calcul suivants maMirror=maMirror(1)-(iMA(0)-pipsXLmaM-iMA(1)-pipsXLmaM)
Le calcul est terminé après le point final du calcul.
Pour simplifier le cahier des charges, il est nécessaire de mettre en place deux blocs de calcul, qui seront indépendants l'un de l'autre en termes de fonctionnement et de variables, et qui peuvent être définis par l'utilisateur.
maMBlock=0 - ne pas utiliser les blocs (le stop loss standard est utilisé)
maMBlock=1 - utiliser uniquement le bloc n°1.
maMBlock=2 - utiliser le bloc #2 uniquement (le stop loss standard est utilisé)
maMBlock=3 - utiliser les deux blocs
Bloc 1
Calculer le stop loss. Le stop loss est recalculé et l'ordre est mis à jour à chaque barre par la valeur de maMirror.
1 La variable StartPoint est utilisée pour déterminer le point de départ du calcul, si StartPoint=1 (le calcul est effectué après que le maT soit touché), si StartPoint=2 (le calcul est effectué après l'ouverture de l'ordre).
1.1 Si StartPointO=1, le calcul est terminé après que maT ait été touché ;
1.2 Si StartPointO=2, le règlement se termine après la clôture de l'ordre ;
1.3 Si le stop loss ne peut être fixé par maMirror, l'ordre est fermé.
1.4. Levl_Zerro=0 (non utilisé), Levl_Zerro!=0 (le stop loss est actualisé à la valeur maximale spécifiée en comptant à partir du prix d'ouverture, une valeur négative signifie que le stop loss est converti en une valeur positive)
Bloc 2
Calcul du filtrage pour les ordres en attente
0.1 Pour acheter un ordre, l'ordre est placé si maMirror>prix d'ouverture de l'ordre en attente
0.2 Pour vendre, les ordres sont placés si maMirror<prix d'ouverture de l'ordre en attente
1 La variable StartPoint est utilisée pour déterminer le point de départ du calcul si StartPoint=1 (le calcul est effectué après que le maT soit touché), si StartPoint=2 (le calcul est effectué après l'ouverture de l'ordre).
1.1 Si StartPointB=1, le calcul est terminé après que maT ait été touché ;
1.2 Si StartPointB=2 (le règlement se termine après la clôture de l'ordre) ;
2. Si maMirrorDell=0 (non utilisé) maMirrorDell=1 (tous les ordres ouverts sont supprimés si les conditions du point 0 ne correspondent pas)
Variables d'utilisateur
maMirrorO (réglages par iMA)
maMirrorB (paramètres iMA)
Point de départO
Point de départB
pipsXHmaMo
pipsXLmaMo
pipsXHmaMb
pipsXLmaMb
maMBlock
maMirrorDell
Aide à l'estimation de la mission, le client veut un nouveau travail, je ne sais pas combien estimer) Comme je ne suis pas un programmeur, je suis un ingénieur d'académie aérospatiale)
Cela affecte-t-il les performances de quelque manière que ce soit ?
Des arguments très forts, votre code, où puis-je voir un programmeur expérimenté ?
La duplication n'a rien à voir avec cela, ni les "si". Le véritable ralentissement est donné par le travail sur commande.
Travailler avec des ordres dans le code TK, ou peut-être TK lui-même, ou MT4 travaillant avec des ordres en général ?