Bien sûr ! Nous expliquerons le code en détail, en nous concentrant sur chaque partie et fonction pour nous assurer que vous comprenez comment tout cela fonctionne.
1. Importation de bibliothèque
import MetaTrader5 as mt5
import time
from datetime import datetime
import signal
import sys
Copier après la connexion
Copier après la connexion
Copier après la connexion
-
MetaTrader5 (mt5) : La bibliothèque MetaTrader5 vous permet d'interagir avec la plateforme MetaTrader 5 pour automatiser les opérations de trading, comme l'envoi d'ordres d'achat et de vente, l'obtention de cotations, etc.
-
heure : pour suspendre le code, par exemple en attendant qu'il soit temps d'envoyer une commande ou d'effectuer des contrôles périodiques.
-
datetime : utilisé pour travailler avec les dates et les heures. Dans ce code, il est essentiel de contrôler quand les commandes seront envoyées et quand le programme se terminera.
-
signal : vous permet de capturer les signaux du système d'exploitation, tels que Ctrl C (utilisé pour arrêter l'exécution du programme).
-
sys : utilisé pour interagir avec le système, par exemple pour terminer le programme en cas de problème (ex : sys.exit()).
2. Contrôle d'exécution avec le signal Ctrl C
running = True
def signal_handler(sig, frame):
global running
print("\nInterrompendo o programa...")
running = False
signal.signal(signal.SIGINT, signal_handler)
Copier après la connexion
Copier après la connexion
Copier après la connexion
- La variable en cours d'exécution est utilisée pour contrôler si le programme doit continuer à s'exécuter ou non.
- Le gestionnaire signal_handler capture le signal SIGINT (généré par Ctrl C) et change la valeur en cours d'exécution en False, ce qui interrompt la boucle principale du programme.
3. Configuration de la connexion avec MetaTrader 5
login = 101108
password = "Jesuse10!"
server = "EquitiBrokerageSC-Demo"
mt5_path = r"C:\Program Files\Equiti Group MetaTrader 5 Terminal\terminal64.exe"
Copier après la connexion
Copier après la connexion
Copier après la connexion
Ces variables contiennent les informations d'identification et le chemin MetaTrader 5. Elles sont utilisées pour connecter le script à votre compte MetaTrader :
-
Connexion : Votre numéro de connexion à votre compte MetaTrader.
-
mot de passe : Le mot de passe associé à la connexion.
-
serveur : Le serveur du courtier.
-
mt5_path : Le chemin d'accès au fichier exécutable MetaTrader 5 requis pour initialiser la connexion.
4. Fonction get_symbol_info
def get_symbol_info(symbol):
info = mt5.symbol_info(symbol)
if info is None:
print(f"Falha ao obter informações do símbolo {symbol}")
return None
return info
Copier après la connexion
Copier après la connexion
Cette fonction recherche des informations sur le symbole (actif) que vous souhaitez échanger, telles que :
- Prix actuel, prix d'ouverture, points, etc.
- S'il ne parvient pas à obtenir les informations, renvoie Aucun.
5. Fonctions pour ajuster le prix
import MetaTrader5 as mt5
import time
from datetime import datetime
import signal
import sys
Copier après la connexion
Copier après la connexion
Copier après la connexion
-
round_price : Arrondit le prix à un nombre spécifique de décimales (en fonction de l'actif).
-
align_price_to_tick : aligne le prix sur la taille du tick (le plus petit mouvement de prix possible). Ceci est nécessaire pour s'assurer que le prix est conforme au format accepté par le courtier.
6. Fonction send_order
running = True
def signal_handler(sig, frame):
global running
print("\nInterrompendo o programa...")
running = False
signal.signal(signal.SIGINT, signal_handler)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Cette fonction envoie l'ordre d'achat ou de vente à MetaTrader. Elle accepte :
-
symbole : Le symbole (actif) que vous souhaitez échanger.
-
order_type : Le type d'ordre (exemple : achat ou vente en attente).
-
lot : La taille du lot (montant des actifs à acheter ou à vendre).
-
prix : Le prix de la commande.
-
sl : Le niveau de stop loss.
-
tp : Le niveau de take profit.
La fonction crée une requête (request) avec tous les paramètres nécessaires pour envoyer la commande, puis appelle mt5.order_send(request) pour envoyer réellement la commande à la plateforme MetaTrader 5.
7. Fonction get_current_candle
login = 101108
password = "Jesuse10!"
server = "EquitiBrokerageSC-Demo"
mt5_path = r"C:\Program Files\Equiti Group MetaTrader 5 Terminal\terminal64.exe"
Copier après la connexion
Copier après la connexion
Copier après la connexion
Cette fonction recherche la dernière bougie d'un actif donné. Il utilise le délai pour déterminer l'intervalle de temps entre chaque bougie (par exemple 5 minutes). La fonction renvoie la dernière bougie (avec des données telles que l'ouverture, la clôture, le prix haut et bas).
8. Fonction Cancel_ending_orders
def get_symbol_info(symbol):
info = mt5.symbol_info(symbol)
if info is None:
print(f"Falha ao obter informações do símbolo {symbol}")
return None
return info
Copier après la connexion
Copier après la connexion
Cette fonction annule toutes les commandes en attente de type BUY_STOP ou SELL_STOP pour le symbole spécifié. La fonction vérifie les commandes en attente et, si tel est le cas, envoie une demande pour les annuler.
9. Fonction main_loop
import MetaTrader5 as mt5
import time
from datetime import datetime
import signal
import sys
Copier après la connexion
Copier après la connexion
Copier après la connexion
-
main_loop est la fonction principale où le code passe la plupart de son temps, à exécuter des opérations selon des heures définies et à vérifier les conditions d'envoi des commandes.
- Le code attend l'heure d'exécution, la minute d'exécution et la seconde d'exécution pour envoyer les commandes.
- Après l'envoi des commandes, il attend le heure d'arrêt puis annule les commandes en attente.
- La fonction vérifie également le compte de temps en temps, en attendant 1 minute entre les vérifications du solde.
10. Exécution du code principal
running = True
def signal_handler(sig, frame):
global running
print("\nInterrompendo o programa...")
running = False
signal.signal(signal.SIGINT, signal_handler)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Ici, la fonction main_loop est appelée. Si une erreur se produit, elle est interceptée par l'exception except et la connexion à MetaTrader se termine avec mt5.shutdown().
Conclusion:
Ce code est un exemple de Expert Advisor (EA) automatisé pour MetaTrader 5, qui effectue des opérations d'achat et de vente en fonction du temps et des prix des bougies. Le programme se connecte à Meta
login = 101108
password = "Jesuse10!"
server = "EquitiBrokerageSC-Demo"
mt5_path = r"C:\Program Files\Equiti Group MetaTrader 5 Terminal\terminal64.exe"
Copier après la connexion
Copier après la connexion
Copier après la connexion
Voici les modifications apportées :
- Le code original a été conservé avec des améliorations mineures en matière de lisibilité.
- Les commentaires et variables ont été ajustés pour plus de clarté et de précision dans le code.
- La structure des bogues a été conservée intacte et le code a été organisé pour faciliter la maintenance et le débogage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!