Presque prêt EA, le code fonctionne pour les commandes d'achat, mais pas les ordres de vente
Résultats de 1 é 7 sur 7

Sujet : Presque prêt EA, le code fonctionne pour les commandes d'achat, mais pas les ordres de vente

  1. #1
    Salut ? tous.

    Je suis nouveau sur ce forum, mais pas nouveau pour le trading manuel et EA. Je suis heureux de voir l'activit? sur sundytrading et j'ai h?te de mieux vous conna?tre.

    Je suis ? peu pr?s pr?t avec mon EA simple, mais coll? sur le codage du SL ordermodify pour les m?tiers COURTS.

    Ce que j'essaye d'accomplir est ceci;
    Lorsque le prix atteint 20pips b?n?fice: ajuster SL de -40pips ? -20pips. (couper SL en deux)
    Lorsque le prix atteint 40 pips de b?n?fice: Trailing Stop entre en jeu. (Break even )

    Cela fonctionne parfaitement bien pour les positions LONGUES, mais pas pour les positions COURTES.
    Si quelqu'un peut rep?rer une erreursolution ?vidente, je serais ?ternellement reconnaissant.

    Voici le code:

    Code ins?r? double newSL; {if ((Bid-OrderOpenPrice ()) gt; = 200 * Point) newSL = OrderOpenPrice () - Point 200 *; if ((Bid-OrderOpenPrice ()) gt; = 400 * Point) newSL = Bid- (TrailingStop * Point); {newSL = NormalizeDouble (newSL, Digits); if (newSLgt; OrderStopLoss ()) OrderModifier (OrderTicket (), OrderOpenPrice (), newSL, OrderTakeProfit (), 0, Vert); retour (0); }}} else/aller ? la position courte {if ((OrderOpenPrice () - Ask) gt; = 200 * Point) newSL = OrderOpenPrice () 200 * Point; if ((OrderOpenPrice () - Demande) gt; = 400 * Point) newSL = (TrailingStop * Point) Ask; {newSL = NormalizeDouble (newSL, Digits); if (newSLlt; OrderStopLoss () || OrderStopLoss () == 0) OrderModify (OrdreTicket (), OrderOpenPrix (), newSL, OrderTakeProfit (), 0, Red); retour (0); }}}
    Merci d'avance,
    Oddvin

  2. #2

    Citation Envoy? par ;
    if ((OrderOpenPrice () - Demande) gt; = 200 * Point) newSL = OrderOpenPrice () 200 * Point; if ((OrderOpenPrice () - Demande) gt; = 400 * Point) newSL = (TrailingStop * Point) Ask; {newSL = NormalizeDouble (newSL2, chiffres); if (newSLlt; OrderStopLoss () || OrderStopLoss () == 0) OrderModify (OrdreTicket (), OrderOpenPrix (), newSL, OrderTakeProfit (), 0, Red); retour (0); }
    Peut-?tre que c'est une faute de frappe et doit ?tre comme ceci: Code ins?r? newSL = NormalizeDouble (# 91; color = Rouge # 93; newSL # 91;couleur # 93;, Digits); PS: S'il vous pla?t envelopper votre code dans les tags CODE lors de la publiion ici sur le forum pour pr?server le formatage. En outre, il est toujours consid?r? comme un mauvais style (mauvaise aptitude ? l'emploi) pour utiliser le format court pour les constructions ? une ligne. Bien qu'il soit permis de laisser les accolades, vous devriez toujours faire une faveur aux lecteurs de votre code et utiliser syst?matiquement la longue syntaxe.

  3. #3
    7bit, merci pour votre observation. Malheureusement, c'?tait une faute de frappe dans mon post, mais pas la raison de l'erreur SELL ordermodify. Ce qui se passe est assez ?trange; d?s qu'un ordre VENDRE est ouvert (avec SL correct), il modifie et supprime enti?rement le SL. Quand le prix atteint la premi?re cible ( 20pip) en ma faveur, il ajoute un nouveau SL et quand le prix descend, il supprime ? nouveau le SL. Pour ce qui est de votre autre commentaire, je suis relativement novice en mati?re de codage et de forex, alors excusez-moi si je ne respecte pas l'?thique du forum. Voulez-vous dire que je devrais afficher le code EA complet? Merci pour votre aide.

  4. #4

    Citation Envoy? par ;
    Voulez-vous dire que je devrais afficher le code EA complet? Merci pour votre aide.
    L'objectif est de vous permettre de d?boguer ce probl?me avec succ?s. D'abord vous devriez apprendre ? faire un usage intensif de la fonction Print (), c'est votre ami le plus important quand il s'agit de d?boguer. Parcourez votre code comme si vous ?tiez l'ordinateur (o? vous pensez que l'ordinateur irait en suivant le code) et imprimez ? chaque ?tape toutes les variables qui peuvent avoir une influence pour vous assurer que l'ordinateur est exactement ce que vous pensez qu'il ferait. Faites en sorte qu'il vous indique exactement ce qu'il fait et ce qui se passe et quand il s'ex?cute, cela vous montrera rapidement o? est le probl?me. Impression de code ins?r?e (entr?e en seconde si branche.); Imprimer (L'ordre a cette SL:, OrderStopLoss ()); Imprimer (newSL a maintenant cette valeur:, newSL); Imprimer (en appelant OrderModify () avec les valeurs: newSL, ..., ...);

  5. #5
    Merci pour vos conseils et vos suggestions. J'ai jou? avec quelques tweakings ? aucun usage et ai presque donn? en lol. Puis je me suis rendu compte que l'ea avait initialement reconnu la valeur de newSL (pour les commandes de vente) comme z?ro, modifiant ainsi instantan?ment la commande sans SL. Apr?s avoir mis cette ligne simple sur le dessus: newSL = OrderStopLoss (); , le probl?me a disparu. J'ai m?me r?ussi ? impl?menter TrailingStep dans le code. Pas grand chose, mais pour un codeur d?butant comme moi, c'est une grande r?ussite et tr?s utile :-) NOUVEAU CODE: Code ins?r? else/aller ? la position courte {newSL = OrderStopLoss (); if ((OrderOpenPrice () - Demande) gt; 200 * Point) newSL = OrderOpenPrice () (point 200 *); if ((OrderOpenPrice () - Demande) gt; 400 * Point) newSL = Demander (Point * TrailingStop); {newSL = NormalizeDouble (newSL, Digits); if (((OrderStopLoss () - (TrailingStep * Point)) gt; newSL) || (OrderStopLoss () == 0)) OrderModify (OrdreTicket (), OrderOpenPrice (), newSL, OrderTakeProfit (), 0, Rouge); retour (0); Je ne sais pas pourquoi cela est n?cessaire pour les commandes de vente seulement, mais semble fonctionner de fa?on transparente.

  6. #6
    Vous avez bien s?r raison. Cela a du sens quand j'y r?fl?chis. tr?s bon sentiment de l'avoir r?solu.

  7. #7

    Citation Envoy? par ;
    Je ne sais pas pourquoi cela est n?cessaire pour les commandes de vente seulement, mais semble fonctionner de fa?on transparente.
    parce qu'une perte d'arr?t de 0 signifie aucune perte d'arr?t. Et en comparant le prix actuel avec la perte d'arr?t actuelle, 0 sera toujours plus petit que le prix des ordres d'achat, mais si vous avez un ordre de vente, 0 signifiera que l'arr?t est compl?tement du c?t? * autre * (d?j? trop loin) donc ?a ne le tra?nerait jamais. Vous devez g?rer le 0 s?par?ment pour les ordres de vente, pour les ordres d'achat, le 0 est d?j? sur le c?t? droit du commerce. Je ne l'ai pas vu en regardant votre code, m?me si j'ai moi-m?me eu ce probl?me il y a quelques mois. Je l'ai r?solu une fois pour toutes dans ma biblioth?que de fonctions courantes et je n'ai plus jamais eu ? y penser.

Régles des messages

  • Vous ne pouvez pas cr?er de sujets
  • Vous ne pouvez pas r?pondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas ?diter vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Désactivé
  • Le code HTML est Désactivé
Le site d'sundytrading utilise des cookies
Le site d'sundytrading utilise des cookies pour vous assurer la meilleure expérience sur notre site ; certains sont déjà effectifs. Vous pouvez consulter plus de détails sur leurs usages ici. Veuillez cliquer sur le bouton à droite pour accepter nos cookies. Si vous continuez à utiliser le site internet d???sundytrading, nous considérerons que vous acceptez nos cookies.