>백엔드 개발 >파이썬 튜토리얼 >이 코드는 MetaTrader 5용 자동화된 EA(Expert Advisor)의 예입니다.

이 코드는 MetaTrader 5용 자동화된 EA(Expert Advisor)의 예입니다.

Susan Sarandon
Susan Sarandon원래의
2024-12-06 16:35:17627검색

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

당연하죠! 코드가 어떻게 작동하는지 확실히 이해할 수 있도록 각 부분과 기능에 초점을 맞춰 코드를 자세히 설명하겠습니다.

1. 라이브러리 가져오기

import MetaTrader5 as mt5
import time
from datetime import datetime
import signal
import sys
  • MetaTrader5(mt5): MetaTrader5 라이브러리를 사용하면 MetaTrader 5 플랫폼과 상호 작용하여 매수 및 매도 주문 보내기, 견적 받기 등의 거래 작업을 자동화할 수 있습니다.
  • 시간: 주문을 보낼 때까지 기다리거나 정기적인 확인을 수행하는 등 코드를 일시 중지합니다.
  • datetime: 날짜 및 시간 작업에 사용됩니다. 이 코드에서는 주문이 전송되는 시점과 프로그램이 종료되는 시점을 제어하는 ​​것이 필수적입니다.
  • 신호: Ctrl C(프로그램 실행을 중지하는 데 사용)와 같은 운영 체제 신호를 캡처할 수 있습니다.
  • sys: 문제가 발생할 경우 프로그램을 종료하는 등 시스템과 상호 작용하는 데 사용됩니다(예: sys.exit()).

2. Ctrl C 신호를 이용한 실행 제어

running = True

def signal_handler(sig, frame):
    global running
    print("\nInterrompendo o programa...")
    running = False

signal.signal(signal.SIGINT, signal_handler)
  • 실행 변수는 프로그램이 계속 실행되어야 하는지 여부를 제어하는 ​​데 사용됩니다.
  • signal_handler 핸들러는 SIGINT 신호(Ctrl C로 생성됨)를 캡처하고 실행 값을 False로 변경하여 기본 프로그램 루프를 중단합니다.

3. MetaTrader 5와의 연결 설정

login = 101108
password = "Jesuse10!"
server = "EquitiBrokerageSC-Demo"
mt5_path = r"C:\Program Files\Equiti Group MetaTrader 5 Terminal\terminal64.exe"

이 변수에는 MetaTrader 5 자격 증명과 경로가 포함되어 있으며 스크립트를 MetaTrader 계정에 연결하는 데 사용됩니다.

  • 로그인: MetaTrader 계정 로그인 번호
  • password: 로그인과 관련된 비밀번호입니다.
  • 서버: 브로커의 서버
  • mt5_path: 연결을 초기화하는 데 필요한 MetaTrader 5 실행 파일의 경로입니다.

4. 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

이 기능은 다음과 같이 거래하려는 기호(자산)에 대한 정보를 검색합니다.

  • 현재가, 시가, 포인트 등
  • 정보를 얻을 수 없으면 None을 반환합니다.

5. 가격 조정 기능

import MetaTrader5 as mt5
import time
from datetime import datetime
import signal
import sys
  • round_price: 가격을 특정 소수 자릿수로 반올림합니다(자산에 따라 다름).
  • align_price_to_tick: 가격을 틱 크기(가능한 가장 작은 가격 변동)에 맞춰 정렬합니다. 이는 가격이 브로커가 허용하는 형식을 준수하는지 확인하는 데 필요합니다.

6. send_order 기능

running = True

def signal_handler(sig, frame):
    global running
    print("\nInterrompendo o programa...")
    running = False

signal.signal(signal.SIGINT, signal_handler)

이 기능은 매수 또는 매도 주문을 MetaTrader로 보냅니다. 그녀는 다음을 수락합니다:

  • symbol: 거래하려는 (활성) 기호입니다.
  • order_type: 주문 유형(예: 구매 또는 판매 보류 중)
  • : 랏의 크기(매수 또는 매도할 자산의 양)
  • 가격: 주문 가격
  • sl: 손절매 수준.
  • tp: 차익실현 수준.

이 함수는 주문을 보내는 데 필요한 모든 설정을 갖춘 요청(request)을 생성한 다음 mt5.order_send(request)를 호출하여 실제로 MetaTrader 5 플랫폼에 주문을 보냅니다.

7. get_current_candle 함수

login = 101108
password = "Jesuse10!"
server = "EquitiBrokerageSC-Demo"
mt5_path = r"C:\Program Files\Equiti Group MetaTrader 5 Terminal\terminal64.exe"

이 기능은 특정 자산의 마지막 캔들을 검색합니다. 기간을 사용하여 각 캔들 사이의 시간 간격(예: 5분)을 결정합니다. 이 함수는 마지막 캔들(시가, 종가, 고가, 저가 등의 데이터 포함)을 반환합니다.

8. cancel_pending_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

이 기능은 지정된 기호에 대해 BUY_STOP 또는 SELL_STOP 유형의 모든 보류 주문을 취소합니다. 이 기능은 보류 중인 주문을 확인하고, 그렇다면 취소 요청을 보냅니다.

9. main_loop 함수

import MetaTrader5 as mt5
import time
from datetime import datetime
import signal
import sys
  • main_loop은 코드가 대부분의 시간을 보내는 핵심 기능으로 정의된 시간에 따라 작업을 실행하고 조건을 확인하여 주문을 보냅니다.
  • 코드는 실행_시간, 실행_분, 실행_초까지 기다렸다가 주문을 보냅니다.
  • 주문을 보낸 후 종료 시간까지 기다린 후 대기 중인 주문을 취소합니다.
  • 잔액 확인 사이에 1분을 기다리며 수시로 계좌를 확인하는 기능도 있습니다.

10. 메인코드 실행

running = True

def signal_handler(sig, frame):
    global running
    print("\nInterrompendo o programa...")
    running = False

signal.signal(signal.SIGINT, signal_handler)

여기서는 main_loop 함수가 호출됩니다. 오류가 발생하면 Except 예외에 의해 포착되고, mt5.shutdown()으로 MetaTrader에 대한 연결이 종료됩니다.

결론:

이 코드는 시간과 양초 가격을 기준으로 매수 및 매도 작업을 수행하는 MetaTrader 5용 자동화된 Expert Advisor(EA)의 예입니다. 프로그램이 Meta에 연결됩니다

login = 101108
password = "Jesuse10!"
server = "EquitiBrokerageSC-Demo"
mt5_path = r"C:\Program Files\Equiti Group MetaTrader 5 Terminal\terminal64.exe"

변경된 사항은 다음과 같습니다.

  1. 약간의 가독성을 개선하여 원본 코드를 유지했습니다.
  2. 코드의 명확성과 정확성을 높이기 위해 주석과 변수가 조정되었습니다.
  3. 버그 구조를 그대로 유지하고 유지 관리 및 디버깅이 더 쉽도록 코드를 정리했습니다.

위 내용은 이 코드는 MetaTrader 5용 자동화된 EA(Expert Advisor)의 예입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.