[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 220
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
D'après mon expérience, le moyen le plus efficace de trouver les erreurs est d'afficher un message dans les commentaires avec le numéro de l'erreur, suivi d'une exécution visuelle de l'EA. Au début, cela prend beaucoup de temps, mais ensuite on apprend rapidement à le faire sans erreur. Vous pouvez également exclure des parties du code avec /* ... */ vous pouvez déterminer comment le comportement de l'EA change.
Tu as raison. De plus, lorsque nous sortons une valeur de la boîte, elle est de type double, mais si l'on donne la commande d'écrire le résultat dans une variable de type int, le compilateur prendra automatiquement toutes les mesures nécessaires pour mettre la valeur dans une nouvelle boîte.
Pour m'assurer que j'ai bien compris, je vous invite à lire mes réflexions sur votre dernier paragraphe... Nous avons donc l'expert mentionné ci-dessus :
Puis dans la ficelle :
Nous mettons une variable de type entier Experts dans la case "GV-variable" pour le stockage (en la convertissant en type double). Ensuite, si (hypothèse hypothétique) il y aurait une chaîne dans l'Expert Advisor
int New_Experts=Experts;
cela signifierait qu'il existe une commande pour écrire le résultat dans une variable de type int. Dans ce cas, le compilateur :
* prendrait d'emblée la valeur de la variable de type double,
* apporter les modifications nécessaires à la valeur de la variable Experts,
* affecter cette valeur à la variable Nouveaux_Experts et...
* mettre la valeur de la variable New_Experts dans une case "int".
Ainsi, le type de variable n'est rien d'autre qu'un emballage externe d'une certaine valeur ? et les variables GV ne peuvent donc pas être du type chaîne de caractères, car le déclassement n'est autorisé que pour les valeurs numériques, et les chaînes de caractères ne sont pas converties en nombres.
N'est-ce pas ?
Merci d'avance pour votre réponse.
ce qui n'est pas le cas pour (f=1;f<Bars;f++)
{
Price1 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,f)) / MarketInfo(Symbol_1, MODE_POINT)
Prix2 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,f)) / MarketInfo(Symbol_2, MODE_POINT) ;
Ecart = Prix1 - Prix2 ;
Print ("Prix1="+Prix1, " Prix2="+Prix2) ;
if (Spread==0){t=f ; break;}
}
Price12 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,t)) / MarketInfo(Symbol_1, MODE_POINT) ;
Price22 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,t)) / MarketInfo(Symbol_2, MODE_POINT) ;
Spread2 = Price12 - Price22 ;
si (MathAbs(Spread2) >= razdvizka && Spread2 < 0) { ouvrir une transaction }
je veux fixer la barre où l'écart était égal à zéro et contrôler l'écart à partir de celle-ci
if(MathAbs(Spread)<eps) { ........ } et vous devez toujours contrôler le résultat - que le point satisfaisant la condition soit trouvé ou non. À mon avis, il est préférable de créer une fonction distincte, par exemple, comme ceci :
Bonjour.
Savez-vous s'il existe une #propriété dans les indicateurs qui permet à l'indicateur de toujours afficher la même période, par exemple d1 ?
et il ne change pas même si vous changez d'horizon temporel dans MetaTrader ?
merci
------------------------------------------
oh... combien de pros.....
aide !!!!
comment appeler l'indicateur depuis le script, j'ai vraiment besoin qu'il soit affiché dans une fenêtre
Bonsoir, veuillez m'aider à modifier le code de l'EA :
1. Lors des tests, tout va bien, mais lors des transactions, la première transaction doit être ouverte manuellement, de même que le stop et le take. Je voudrais que l'EA commence à négocier automatiquement lorsque le prix arrive à un nouveau tick.
2. Puisque dans le cas d'un stop loss déclenché, la position suivante est ouverte avec deux fois le lot précédent, le lot peut théoriquement augmenter à l'infini (dans mon cas, jusqu'à 51,2), je voudrais le limiter (par exemple 0,8) avec la possibilité de changer le seuil. Lorsque le seuil est atteint et qu'un stop est déclenché, l'Expert Advisor ne se déconnecte pas et repart de 0.1.
Aidez-nous, s'il vous plaît. J'ai lutté toute la journée sans aucune aide.
L'ordre est sur le pickup (Main BAY, en attendant sellsstop comme filet de sécurité).
A la fermeture de la vente dans le no-loss, reporté à nouveau au même endroit.
Pour m'assurer que j'ai bien compris, je vous invite à lire mes réflexions sur votre dernier paragraphe... Nous avons donc l'expert mentionné ci-dessus :
Puis dans la ficelle :
Nous mettons une variable de type entier Experts dans la case "GV-variable" pour le stockage (en la convertissant en type double). Ensuite, si (hypothèse hypothétique) il y aurait une chaîne dans l'Expert Advisor
cela signifierait qu'il existe une commande pour écrire le résultat dans une variable de type int. Dans ce cas, le compilateur :
* prendrait d'emblée la valeur de la variable de type double,
* apporter les modifications nécessaires à la valeur de la variable Experts,
* affecter cette valeur à la variable Nouveaux_Experts et...
* mettre la valeur de la variable New_Experts dans une case "int".
Ainsi, le type de variable n'est rien d'autre qu'un emballage externe d'une certaine valeur ? et les variables GV ne peuvent donc pas être du type chaîne de caractères, puisque le déclassement n'est autorisé que pour les valeurs numériques, et que les chaînes de caractères ne sont pas converties en nombres.
N'est-ce pas ?
Merci d'avance pour la réponse.
Pas exactement. Le point est que la variable Experts a déjà le type int, donc, la conversion de type doit avoir lieu AVANT de lui assigner une valeur, c'est-à-dire que le compilateur
* Une valeur de type double est sortie de la boîte (elle n'a pas de nom dans votre programme, et est simplement écrite à une adresse connue du compilateur dans la mémoire principale ou dans le registre du CPU).
* a apporté toutes les modifications nécessaires à la valeur de la variable ci-dessus et a écrit une nouvelle valeur (de type int !) dans la variable Experts,
* a affecté cette valeur (de type int !) à la variable New_Experts. Ils ont le même type, il s'agit donc simplement de copier une valeur d'un emplacement mémoire à un autre.
P.S. C'est génial de voir qu'il y a des gens qui comprennent leurs actes de manière aussi détaillée. En fait, sans blague. Restez en contact.
Bonsoir, veuillez m'aider à modifier le code de l'EA :
1. Lors des tests, tout va bien, mais lors des transactions, la première transaction doit être ouverte manuellement, de même que le stop et le take. Je voudrais que l'EA commence à négocier automatiquement lorsque le prix atteint un nouveau tick.
Puisque dans le cas d'un stop loss déclenché, la position suivante est ouverte avec le double du lot précédent, le lot peut théoriquement augmenter à l'infini (dans mon cas, jusqu'à 51.2), je voudrais le limiter (par exemple 0.8) avec la possibilité de changer le seuil. Lorsque le seuil est atteint et qu'un stop est déclenché, l'EA ne se déconnecte pas, mais recommence à partir de 0,1.
Essayez-le :