Maison > développement back-end > Tutoriel Python > Ce code est un exemple d'Expert Advisor (EA) automatisé pour MetaTrader 5.

Ce code est un exemple d'Expert Advisor (EA) automatisé pour MetaTrader 5.

Susan Sarandon
Libérer: 2024-12-06 16:35:17
original
624 Les gens l'ont consulté

Este código é um exemplo de um Expert Advisor (EA) automatizado para o MetaTrader 5.

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 :

  1. Le code original a été conservé avec des améliorations mineures en matière de lisibilité.
  2. Les commentaires et variables ont été ajustés pour plus de clarté et de précision dans le code.
  3. 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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal