Besoin d'aide pour repérer une légère erreur. - page 3

 

La longue condition && et ||, j'ai décomposé la partie en plusieurs instructions if enchaînées. J'ai également essayé d'utiliser MarketInfo(OrderSymbol() , MODE_ASK/BID) au lieu de OrderClosePrice() .

Cette partie fonctionne encore parfois, mais pas tout le temps, j'ai également essayé les suggestions que vous m'avez toutes données, mais cela se termine toujours de la même façon.

Je ne suis pas sûr si c'est cela qui cause le problème ou si c'est autre chose. Mais à partir de ces essais et erreurs, voici ce que j'ai remarqué.

On dirait que la partie la plus basse de l'ordre ouvert ne veut pas déplacer le stop loss MÊME si la condition est remplie (la longue condition && et || et les nombreuses déclarations if enchaînées, j'ai essayé les deux).

Les paramètres de l'EA :

Compte 1 avant :


Compte 1 après :

Pour ce compte 1, le 1er et le 2ème ordre n'ont pas rempli la condition if/if + && et ||, donc le stop loss n'est pas déplacé (ce qui est correct).

Le 3ème ordre cependant, a déjà rempli la condition et il devrait suivre jusqu'au 10ème, mais le stop loss n'a été déplacé qu'UNE SEULE fois. ( faux faux faux )

Il aurait dû être déplacé plus d'une fois ( 50.0 pips à mon avis, pas 5.0 pips ) .

Compte 2 avant :

Compte 2 après :

Pour ce compte 2, seul le 1er ordre n'a pas rempli la condition, donc encore une fois aucun stop loss n'est déplacé (ce qui est correct). Le 2ème et le 3ème ordre ont rempli la condition et voici la partie étrange .

Le 2ème ordre a été suivi exactement jusqu'au 10ème, le stop loss a été déplacé exactement 10 fois. Le stop loss a été déplacé à 50.0 pips du prix d'ouverture de cet ordre individuel (ce qui est correct).

Le 3ème ordre remplit également la condition et devrait suivre jusqu'au 3ème, mais encore une fois le stop loss n'a été déplacé qu'UNE SEULE fois ( encore faux :( ))

Avez-vous remarqué que les deux comptes où la partie trailing ne fonctionne pas correctement sont ceux du dernier ordre ?

Si l'USDJPY peut fonctionner, cela devrait pouvoir être appliqué à toutes les autres paires. Je ne suis pas sûr de ce qu'il faut faire avec cela.

J'utilise un compte en arrière pour la boucle que j'ai lu où RaptorUK a enseigné devrait être bon cependant. Le comptage à rebours ne devrait pas être un problème non plus.

L'onglet Experts n'a pas montré d'erreurs non plus ....

@.@ T_T

 
Etes-vous sûr que le prix n'a pas retraité et arrêté après le 1er trail ?
 
Excusez-moi, je ne comprends pas bien ce que vous voulez dire ... Quel prix voulez-vous dire ? Stop it out après la 1ère piste ?
 
Je vois ce que vous voulez dire maintenant, je n'ai pas lu les résultats de l'échange correctement la première fois.
 
SDC:
Je vois ce que vous voulez dire maintenant, je n'ai pas lu les résultats de l'échange correctement la première fois.
Je n'ai toujours aucune idée de ce qui ne va pas .... Avez-vous une idée de l'endroit où je me suis trompé ?
 
      if ( ( OrderStopLoss() == 0 ) || (OrderStopLoss() != 0 && OrderStopLoss() <= OrderOpenPrice() ) || ( OrderStopLoss() < ( OrderOpenPrice() + ( TrailingStop * Figure ) ) ) )
                              {
 

J'ai essayé, toujours la même chose pour .....

J'ai essayé plusieurs fois, c'est toujours la dernière commande qui n'a pas été modifiée correctement .... Je ne pense pas que ce soit le cas, mais je ne sais pas pourquoi cela ne fonctionne pas correctement ...

 

juniorlcq:

Le compte à rebours pour la boucle cause ce problème ?


cela n'a pas d'importance si vous comptez vers le haut ou vers le bas (trailing stoploss)

Si vous supprimez ou fermez une transaction, vous devez compter vers le bas.

 

J'ai essayé de compter vers le haut aussi, même problème.

Est-ce que le deuxième for loop a déjà modifié l'ordre et j'ai dû le sélectionner à nouveau ?

Au début, j'ai sélectionné l'ordre, et à la 2ème boucle for, la condition remplie a modifié cet ordre. Dois-je resélectionner à nouveau ?

 

OrderSelect

La fonction OrderSelect() copie les données de l'ordre dans l'environnement du programme et tous les appels ultérieurs de OrderClosePrice(), OrderCloseTime(), OrderComment(), OrderCommission(), OrderExpiration(), OrderLots(), OrderMagicNumber(), OrderOpenPrice(), OrderOpenTime(), OrderPrint(), OrderProfit(), OrderStopLoss(), OrderSwap(), OrderSymbol(), OrderTakeProfit(), OrderTicket(), OrderType() retournent les données copiées précédemment. Cela signifie que dans certains cas, les détails de l'ordre (prix ouvert, niveaux SL/TP ou date d'expiration) peuvent changer et les données deviennent non réelles. Il est fortement recommandé d'appeler la fonction OrderSelect() avant de demander les données de l'ordre.