Grupo de usuarios de MetaTrader 5 Python - cómo utilizar Python en Metatrader - página 65

 
Документация по MQL5: Интеграция / MetaTrader для Python / order_send
Документация по MQL5: Интеграция / MetaTrader для Python / order_send
  • www.mql5.com
[in]  Структура типа MqlTradeRequest, которая описывает требуемое торговое действие. Обязательный неименованный параметр. Пример заполнения запроса и состав перечислений смотрите ниже. Идентификатор эксперта. Позволяет организовать аналитическую обработку торговых ордеров. Каждый эксперт может выставлять свой собственный уникальный...
 
AxxelTrader:

Actualizado a la versión 2432.
Pero el error sigue ahí...
Lo he probado en diferentes corredores incluso...

r = mt5.Buy(...)
if r is None:
    print(mt5.last_error())
else:
    if r.retcode ...
 

copy_rates_from no proporciona suficientes datos sobre el marco temporal M1.


¿Es esta la forma correcta de actuar?

from datetime import datetime 
import matplotlib.pyplot as plt
import pandas as pd
from pandas.plotting import register_matplotlib_converters
import pytz

register_matplotlib_converters()
import MetaTrader5 as mt5


 if not mt5.initialize():
    print("initialize() failed")
    mt5.shutdown()


print(mt5.terminal_info())
print(mt5. version ())

timezone = pytz.timezone("Etc/UTC")
utc_from = datetime ( 2020 , 1 , 10 , tzinfo=timezone)


eurusd_rates_m1 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M1, utc_from, 1000 )
print('M1 eurusd_rates(', len(eurusd_rates_m1), ')')
eurusd_rates_m5 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M5, utc_from, 1000 )
print('M5 eurusd_rates(', len(eurusd_rates_m5), ')')
eurusd_rates_m10 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M10, utc_from, 1000 )
print('M10 eurusd_rates(', len(eurusd_rates_m10), ')')
eurusd_rates_m15 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M15, utc_from, 1000 )
print('M15 eurusd_rates(', len(eurusd_rates_m15), ')')
eurusd_rates_m30 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M30, utc_from, 1000 )
print('M30 eurusd_rates(', len(eurusd_rates_m30), ')')


mt5.shutdown()
M1 eurusd_rates( 1 )      ???
M5 eurusd_rates( 1000 )
M10 eurusd_rates( 1000 )
M15 eurusd_rates( 1000 )
M30 eurusd_rates( 1000 )
 
Sé que este tema se hará rápidamente muy largo. Metaquotes necesita añadir un nuevo subforo (Python) para cada idioma.
 
Christian:

copy_rates_range no proporciona suficientes datos sobre el marco temporal M1.


¿Es esta la forma correcta de actuar?

Preste atención a la nota sobre la gama de tarifas de copia

Nota

Consulte la función CopyRates() para obtener más información.

El terminal MetaTrader 5 sólo proporciona barras dentro de un historial disponible para el usuario en los gráficos. El número de barras disponibles para los usuarios se establece en el parámetro "Barras máximas en el gráfico".

Al crear el objeto 'datetime', Python utiliza la zona horaria local, mientras que MetaTrader 5 almacena la hora de apertura de los ticks y las barras en la zona horaria UTC (sin el desplazamiento). Por lo tanto, 'datetime' debe crearse en tiempo UTC para ejecutar funciones que utilicen el tiempo. Los datos recibidos del terminal MetaTrader 5 tienen la hora UTC.


Documentation on MQL5: Integration / MetaTrader for Python / copy_rates_range
Documentation on MQL5: Integration / MetaTrader for Python / copy_rates_range
  • www.mql5.com
# create 'datetime' objects in UTC time zone to avoid the implementation of a local time zone offset # get bars from USDJPY M5 within the interval of 2020.01.10 00:00 - 2020.01.11 13:00 in UTC time zone                  time     open     high      low    close  tick_volume  spread  real_volume...
 
Rashid Umarov:

Preste atención a la Nota sobre la gama de tarifas de las copias

Hay un error en las tasas de copia. He publicado esto varias veces pero nadie lo ha reconocido.

import MetaTrader5 as mt5

mt5.initialize()
maxbars = mt5.terminal_info().maxbars
for count in range(maxbars):
    rates = mt5.copy_rates_from_pos('EURUSD', mt5.TIMEFRAME_M1, 0, count)
    errno, strerror = mt5.last_error()
    if errno != mt5.RES_S_OK:
        print(f"Failed on count={count} with strerror={strerror}")
        break
mt5.shutdown()

##
# Failed on count=7844 with strerror=IPC recv failed
##
 
Es una pena, pero tengo entendido que hay un problema con la inicialización de las estructuras en MT.
 
Por cierto, tengo que presentar a mi nieta a Python y no lo conozco... Adiós.
 

Tengo un script que se ejecutó durante unas horas. pero luego empiezo a recibir estos errores, Invalid_Stops, y luego no abre más operaciones.

1.BUY order send (): by EURUSD 0.01 lots at 1.0949 

2. order_send failed, retcode = 10016 
   retcode = 10016 
   deal = 0 
   order = 0 
   volume = 0.0 
   price = 0.0 
   bid = 0.0 
   ask = 0.0 
   comment = Invalid stops 
   request_id = 0 
   retcode_external = 0 

   request = TradeRequest (action = 1, magic = 234000, order = 0, symbol = 'EURUSD', volume = 0.01, price = 1.0949, stoplimit = 0.0, sl = 1.0939, tp = 1.0979, 
   deviation = 0, type = 0, type_filling = 0, type_time = 0, expiration = 0, commen 

t = 'EURUSD Buy.', Position = 0, position_by = 0) 

¿Alguien puede ayudar a indicar por dónde empezar a buscar este problema?

Gracias

 
fbrand:

Tengo un script que se ejecutó durante unas horas. pero luego empiezo a recibir estos errores, Invalid_Stops, y luego no abre más operaciones.

¿Alguien puede ayudar a indicar por dónde empezar a buscar este problema?

Gracias

¿Cuál es el precio actual (Bid y Ask)? ¿Cuál era el nivel de congelación (SYMBOL_TRADE_FREEZE_LEVEL)?