Operar con Python

 

Le pido a alguien que me sugiera una estrategia de trading sencilla (a sabiendas de que pierden, no es el punto).

Si el mensaje es sano, es decir, será más o menos claramente lo que hay que hacer, aplicar aquí, en este hilo, el comercio en esta estrategia, en Python.

Estoy esperando )

 

Empezaré con un trozo de código, que puede ser útil (tengo previsto trabajar con un marco temporal de M5, realizar cálculos y tomar una decisión cada 5 minutos):

importar datetime como dt


class date_time(dt.datetime):
   
    '''
    Класс описывает отсчёт даты и времени.
    Представляет собой расширение класса datetime библиотеки datetime. 
    '''
   
    @property
    def M5_view(self):
        minute = (self.minute//5)*5
        if minute < 10:
            _minute = '0'+str(minute)
        else:
            _minute = str(minute)
        return self.strftime('%Y%m%d%H')+_minute
   
    @property
    def nice_view(self):
        return self.strftime('%Y.%m.%d %H:%M:%S')
   
    def __str__(self):
        return self.M5_view
   
    def __repr__(self):
        return self.__str__()


Gracias a esta clase, será conveniente registrar lo que está sucediendo.

Por ejemplo, escriba algo así

dt_stamp_read = ...
print('\n'+date_time.now().nice_view, '- начал работу, планирую прочитать файлы с ценами в {}'.format(dt_stamp_read.nice_view))

y obtener una salida como:

2021.12.11 22:41:23 - начал работу, планирую прочитать файлы с ценами в 2021.12.11 22:45:30
 

Tú también lo necesitarás:

class Bar:
    
    '''
    Класс описывает бар, то есть структуру данных,
    удобную для описания изменения цен финансовых инструментов на интервалах времени.  
    '''
    
    def __init__(self, instrument, time_frame, time_close, price_open, price_low, price_high, price_close, pips_value):
        self.instrument = instrument
        self.time_frame = time_frame   
        self.time_close = time_close
        self.time_open = self.time_close - dt.timedelta(minutes=self.time_frame)
        self.price_open = price_open
        self.price_low = price_low
        self.price_high = price_high
        self.price_close = price_close
        self.w = pips_value
    
    def __str__(self):
        str1 = '(Bar: instrument={} time_frame={} time_open={} time_close={}\n'
        str2 = 'open={} low={} high={} close={} pips_value={})'
        return (str1+str2).format(self.instrument, self.time_frame, self.time_open.M5_view, self.time_close.M5_view,
                                  self.price_open, self.price_low, self.price_high, self.price_close, self.w)
    
    def __repr__(self):
        return self.__str__()

El tipo de letra aquí no es monoespaciado, por lo que visualmente el formato se ha ido un poco, pero eso no es lo importante

 
¿Y cuál sería la ventaja en comparación con una implementación MQL?
 
Mikhael1983:


Por favor, inserte el código correctamente: primero pulse Código, luego inserte el código en la ventana emergente.

 
Me pregunto cómo es el plan para probar el sistema de comercio en python?
 
Aleksey Nikolayev #:
Me pregunto cómo es el plan para probar un sistema de comercio en Python.

Buscar artículos con la palabraPython.

 
Mikhael1983:

Le pido a alguien que me sugiera una estrategia de trading sencilla (a sabiendas de que pierden, no es el punto).

Si el mensaje es sano, es decir, será más o menos claramente lo que hay que hacer, aplicar aquí, en este hilo, el comercio en esta estrategia, en Python.

Estoy esperando )

Reescribir el Asesor Experto MACD estándar que viene con MT5. Será útil comprobarlo en todas las etapas.

Preguntaré más específicamente sobre la forma prevista de probar-optimizar. ¿Se trata de un comprobador escrito por uno mismo o de un comprobador de terceros basado en Python? ¿Integración con MQL5 a través de archivos, sockets, etc.?

 

Operar con python es bueno...

Pero python es bueno para analizar datos, pero no para operar.

Si considera la opción MACD, en python:

- es fácil cargar las cotizaciones;

- Los datos del MACD se pueden calcular fácilmente;

Luego, en cada nueva barra, tome una condición, por ejemplo: el valor del MACD y la línea de señal, la inclinación de la línea lenta y rápida, el movimiento del precio lejos de la línea lenta...

Ejecutar la condición a través de la historia y mostrar las estadísticas más/menos de la formación especificada para un determinado período. Todo lo demás (abrir/cerrar/tomar operaciones) debe hacerse en MQL.

No tiene que inventar un probador: tenemos uno ya preparado.

En Python las cotizaciones y los indicadores se almacenan en SQLite. Conexión MQL - python a través de socket, archivos o base de datos (socket es mejor).

Todo...

 

Python - sólo para el análisis de datos con la rica capacidad de mostrar los resultados del análisis como gráficos 2d(3d).

copy_rates_from no es suficiente para un análisis completo de los datos. Si fuera posible extraer los datos de los indicadores (incluidos los indicadores personalizados), se cerraría el anillo de análisis.

Y el comercio a través de python, IMHO es un movimiento de relaciones públicas por MQL5.

 
Mikhael1983:

Voy a poner en práctica esta estrategia aquí en este hilo en Python.

Se te ha olvidado añadir "esperar tranquilamente para obtener beneficios")