Soucis de modification de TP et SL (python)

 

Bonjour,

Je suis en train de developper un outil pour automatiser mon trade management. L'idée est d'avoir plus d'options pour géré mes trades. J'ai un outil général qui gère toute mes demandes, et ensuite je peux d'un autre côté dvlp des scripts bcp plus simple que je peux intégrer à mon outil, assigner a chaque trade en ajustant les paramètres (par exemple remonter les SL à chaque niveau de prix ; remonter le SL si une div est visible ; en cas de gros move du marché ; ...)
Bref, je suis en train de coder tout ceci en python ; et là je travaille sur l'intégration de la fonction qui permet de modifier les TP et SL pour les ordres déja executés.

Je bloque sur une petite chose (qui dois certainement être un truc stupide).

L'idée ici est donc de modifié mon TP et mon SL (pour le moment, seul le SL devra être modifié, mais je garde quand même la possibilité de modifier le TP, si une idée me viens dans le futur).

Je pose ma requete comme ceci

    # Préparer la requête de modification du trade
    trade_request = {
        "action": mt5.TRADE_ACTION_SLTP,
        "order": ticket,
        "tp": tp,
        "sl": sl,
        "type_filling": fillmod,   # avec ou sans le fillmod, rien ne change (logiquement il ne sers a rien ici).
    }

    # Envoyer la requête de modification du trade
    result = mt5.order_send(trade_request)

et j'ai sans cesse une erreur Retcode 10013

voici si vous voulez le retour de tout mes logs (c'est un compte démo ^^)

Fill Mode chargé depuis fillmod.txt : ORDER_FILLING_IOC
Initialisation réussie de la connexion à l'interface MetaTrader 5.
Fill Mode pour la modification des trades : 1
----------------------------------------
Fichier: z:\mes documents perso\trading\python trade management\temp\order\27\27.order
ID: 27
Devise: AUDNZD
Ticket: 43895904
TP: 1.09252
SL: 1.07331
--------------------
Échec de la modification du trade 43895904.
Retcode=10013, Commentaire=Invalid request.
Résultat complet:
OrderSendResult(retcode=10013, deal=0, order=0, volume=0.0, price=0.0, bid=0.0, ask=0.0, comment='Invalid request', request_id=0, retcode_external=0, request=TradeRequest(action=6, magic=0, order=43895904, symbol='', volume=0.0, price=0.0, stoplimit=0.0, sl=1.07331, tp=1.09252, deviation=0, type=0, type_filling=1, type_time=0, expiration=0, comment='', position=0, position_by=0))

Fermeture de la connexion à l'interface MetaTrader 5.

et mt5 me renvoie ceci

2023.08.07 14:50:23.178 Trades  '981828': failed modify #0 buy 0  sl: 0.00000, tp: 0.00000 -> sl: 1.07331, tp: 1.09252 [Invalid request]

tout les paramètres me semblent correct :(

L'idée globale ici c'est de remonter le SL (c'est un achat, donc tout en bas) au niveau de la 2nd ligne rouge.


Pour info, mon fillmod est le bon (et il me semble qu'il n'est même pas utile de le mettre ici d'ailleur, mais qu'il soit là ou pas rien ne change).
La connection avec mt5 fonctionne, car je soumet les trades (depuis un autre script), je modifie aussi mes entrée (avant execution) avec un autre script de la même façon ; mais ici non ça ne veut pas :(

merci par avance de votre aide :)

salutations,

 

Ah j'ai trouvé finalement !

# Préparer la requête de modification du trade
    trade_request = {
        "action": mt5.TRADE_ACTION_SLTP,
        "order": ticket,
        "tp": tp,
        "sl": sl,
        "position": ticket,
    }

il faut mettre la variable "position" ici !

c'est maintenant fonctionnel. Je laisse le message ici si qq'un à le même soucis que moi :)


merci de m'avoir lu
salutations,

Raison: