Extraire une valeur d'un tableau en PYTHON
Fermémamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 16 nov. 2022 à 11:18
- Extraire une valeur d'un tableau en PYTHON
- Tableau croisé dynamique - Guide
- Extraire une video youtube - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
2 réponses
Bonsoir, quel est le type de mt5.order_send ? Cet attribut retourne quoi ? Une liste ? Un dictionnaire ? Autre chose ?
print(type(mt5.order_send))
14 nov. 2022 à 20:30
Bonjour,
De ce que j'ai cru inférer, tu utilses la fonction order_send de MetaTrader5 et celle-ci retourne plus ou moins un MqlTradeResult (ça aurait été bien de préciser dans le message initial) Le problème c'est que cette documentation ne concerne pas le python (qui n'est qu'un wrapper) mais la librairie C++ sous-jacente.
De plus ton code paraît étrange, car mt5.order_send est une méthode qui prend en paramètre une requête. Je ne vois donc pas trop comment ton code peut retourner un OrderSend.
import MetaTrader5 as mt5 my_request = ... result = mt5.order_send(my_request) print(result)
Enfin, peu importe la manière dont tu récupères ton résultat, tu peux inspecter ses attributs avec :
print(result.__dict__)
... ce qui te permettrait de voir les attributs ou méthodes qui peuvent t'intéresser. Si ça se trouve, ce que tu veux, c'est juste :
print(result.ticket)
Bonne chance
Bonjour merci de votre réactivité, je suis vraiment novice dans la conception d'algo je ne savais pas pour la formule en mql5 donc désolé de ne pas avoir précisé.
Vous pensez que print(result.ticket) récupèrerais le ticket du trade qui viens de passer ?
Qu'entendez vous par inspecter ces attributs ? cela me permettrais quoi concretement?
Merci
Modifié le 15 nov. 2022 à 14:31
Bonjour merci de votre réactivité, je suis vraiment novice dans la conception d'algo je ne savais pas pour la formule en mql5 donc désolé de ne pas avoir précisé.
Peut-être devrais-tu commencer par regarder quelques tutoriels pour apprendre python et à utiliser ce module ?
Vous pensez que print(result.ticket) récupèrerais le ticket du trade qui viens de passer ?
Sans inspecter l'objet, on ne peut pas en être sûr mais ça serait naturel.
Qu'entendez vous par inspecter ces attributs ?
En python, tu peux interroger un objet pour savoir quels sont les attributs qu'il possède (les méthodes qu'il expose, les variables membres qu'il mémorise...). On parle d'introspection. Si à la fin de ton fichier, tu ajoutes les instructions suivantes et que tu nous reportes leur résultat on devrait y voir plus clair
print(type(result)) print(result.__dict__) dir(result)
Par ailleurs on attend toujours que tu nous donne un extrait de code permettant de mieux comprendre ce que tu fais.
Bonne chance
Bonjou,
Je vous donne un extrait de code pour éclaircir ma demande. Après avoir défini les bibliothèque ainsi que les variable on arrive a cette partie de l'algorithme où on retrouve les calcul pour définir les conditions pour passer un trade :
# Calcul Bollinger sma = df['close'].mean() sd = df['close'].std() lower_band = sma - STANDARD_DEVIATION * sd upper_band = sma + STANDARD_DEVIATION * sd BollCall = last_close_price < lower_band BollPut = last_close_price > upper_band sma1H = DF['close'].mean() sd1H = DF['close'].std() lower_band1H = sma1H - STANDARD_DEVIATION * sd1H upper_band1H = sma1H + STANDARD_DEVIATION * sd1H # Calcul RSI df['rsi'] = ta.momentum.rsi(df.close, window=14) RsiCall = bool(float(df['rsi'].iloc[-1]) < BORNEBASSE) RsiPut = bool(float(df['rsi'].iloc[-1]) > BORNEHAUTE) # Verification Range RangeOK = bool(lower_band1H < last_close_price < upper_band1H) # Conditions : if RsiCall: #and RangeOK and BollCall: return 'buy', sd elif RsiPut: #and RangeOK and BollPut: return 'sell', sd else: return [None, None] # Connection à la plateforme initialized = mt5.initialize() if initialized: print('connected to MetaTrader5') print('Login:', mt5.account_info().login) print('Server:', mt5.account_info().server) while True: localtime = time.localtime() Heure = time.strftime("%H.%M", localtime) if mt5.positions_total() == 0 and (Open1 < float(Heure) < Close1 or Open2 < float(Heure) < Close2): signal, standard_deviation = get_signal() print(Heure) tick = mt5.symbol_info_tick(SYMBOL) if signal == 'buy': market_order(SYMBOL, 1.0, 'buy', 20, 10) #,tick.bid - SL_SD * standard_deviation, #tick.bid + TP_SD * standard_deviation) elif signal == 'sell': market_order(SYMBOL, 1.0, 'sell', 20, 10) #,tick.bid + SL_SD * standard_deviation, #tick.bid - TP_SD * standard_deviation)
Jusqu'ici tout va bien l'algorithme tourne. Une autre partie de l'algorithme qui me renvois OrderSendResult
order_result = mt5.order_send(request) print(order_result) return order_result
Et des qu'un ordre passe j'ai ca qui s'affiche dans ''Run:''
connected to MetaTrader5
Login: XXXXXXX
Server: AdmiralMarkets-Demo
19.09
OrderSendResult(retcode=10002, deal=0, order=1117097736, volume=1.0, price=0.0, etc...)
Et moi ce qui m'intéresserais, c'est de récupérer la valeur numérique de 'order' qui correspond a mon numéros de ticket.
Merci !
16 nov. 2022 à 11:18
La demande est claire mais tu n'as toujours pas répondu à mon message #5. Du coup, difficile d'en dire plus. Tu pourrais donc ajouter après ton print(order_result) les instructions dont je parlais.
14 nov. 2022 à 22:27
Bonjour je n'ai aucune idée comment puis-je savoir?