Negociando com Python

 

Estou pedindo a alguém que sugira uma estratégia comercial simples (perder conscientemente, não o ponto).

Se a mensagem for sã, isto é, será mais ou menos claro o que precisa ser feito, implemente aqui, nesta linha, o comércio sobre esta estratégia, em Python.

Olhando para o futuro )

 

Começarei com um pedaço de código, que pode vir a ser útil (pretendo trabalhar com o cronograma M5, fazer cálculos e tomar uma decisão a cada 5 minutos):

data de importação 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__()


Graças a esta classe, será conveniente registrar o que está acontecendo.

Por exemplo, escreva algo como isto

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

e obter resultados como:

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

Você também vai precisar dele:

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__()

A fonte aqui não é monoespacial, de modo que visualmente a formatação foi um pouco fora, mas essa não é a questão

 
E qual seria a vantagem em comparação com uma implementação de MQL?
 
Mikhael1983:


Favor inserir o código corretamente: primeiro pressione Código, depois insira o código na janela pop-up.

 
Como será que o plano é testar o sistema comercial em python?
 
Aleksey Nikolayev #:
Como será que o plano é testar um sistema comercial em Python?

Busca de artigos usando a palavraPython.

 
Mikhael1983:

Estou pedindo a alguém que sugira uma estratégia comercial simples (perder conscientemente, não o ponto).

Se a mensagem for sã, isto é, será mais ou menos claro o que precisa ser feito, implemente aqui, nesta linha, o comércio sobre esta estratégia, em Python.

Estou esperando )

Reescreva o Expert Advisor MACD padrão que vem com o MT5. Será útil para verificar em todas as etapas.

Vou perguntar mais especificamente sobre a forma de teste-optimização pretendida. É um testador auto-escrito ou um testador de terceiros baseado em Python? Integração com a MQL5 através de arquivos, soquetes, etc.?

 

Negociar com píton é bom...

Mas a pitão é boa para analisar dados, mas não para comercialização.

Se você considerar a opção MACD, em python:

- é fácil de carregar as citações;

- Os dados MACD podem ser facilmente calculados;

Depois, em cada nova barra, tomar uma condição, por exemplo: valor MACD e linha de sinal, inclinação da linha lenta e rápida, movimento de preços longe da linha lenta...

Faça o histórico da condição e mostre estatísticas mais/menos da formação especificada por um certo período. Tudo o resto (abrir/fechar/assumir negócios) deve ser feito em MQL.

Você não precisa inventar um testador - nós temos um já pronto.

Em Python, as citações e indicadores são armazenados no SQLite. Conexão MQL - python através de soquete, arquivos ou banco de dados (soquete é melhor).

Tudo...

 

Python - somente para análise de dados com a rica capacidade de exibir os resultados da análise como gráficos 2d(3d).

copy_rates_from não é suficiente para uma análise completa dos dados. Se fosse possível extrair dados indicadores (incluindo indicadores personalizados), o anel de análise seria fechado.

E negociando via python, IMHO é um movimento de relações públicas da MQL5.

 
Mikhael1983:

Vou implementar esta estratégia aqui nesta linha em Python.

Você esqueceu de acrescentar "esperar tranquilamente pelo lucro")
Razão: