Торговля с Python

 

Прошу кого-нибудь предложить простую (заведомо убыточную, не суть) стратегию торговли.

Если сообщение будет вменяемым, то есть будет более-менее ясно изложено, что необходимо сделать, реализую здесь, в этой ветке, торговлю по этой стратегии, на языке Python. 

Жду ) 

 

Начну с кусочка кода, который всяко пригодится (планирую работать с таймфреймом М5, проводить вычисления и принимать решение один раз в 5 минут):

import datetime as 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__()


Благодаря этому классу будет удобно логировать происходящее.

Например, написать что-нибудь в духе:

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

и получить вывод типа:

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

Тоже понадобится:

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

шрифт здесь не моноширинный, так что визуально немного уплыло форматирование, не суть

 
А какое будет преимущество по сравнению с реализацией на MQL?
 
Mikhael1983:


Вставляйте, пожалуйста, код правильно: сначала нажимаете кнопку  Code, а затем во всплывающее окно вставляете код.

 
Интересно, как планируется тестировать торговую систему на питоне?
 
Aleksey Nikolayev #:
Интересно, как планируется тестировать торговую систему на питоне?

Поиск по статьям, по слову Python.

 
Mikhael1983:

Прошу кого-нибудь предложить простую (заведомо убыточную, не суть) стратегию торговли.

Если сообщение будет вменяемым, то есть будет более-менее ясно изложено, что необходимо сделать, реализую здесь, в этой ветке, торговлю по этой стратегии, на языке Python. 

Жду ) 

Перепишите стандартный MACD эксперт поставляемый с МТ5. Будет удобно для проверки на всех этапах.

Более адресно задам вопрос про предполагаемый способ тестирования-оптимизации. Самописный или сторонний тестер на питоне? Интеграция с MQL5 через файлы, сокеты и тд?

 

Торговля с питон - это гуд..

Но питон - хорошее средство для анализа данных, но не ведения торговых операций.

Если рассматривать вариант MACD, то на питон:

- легко загрузить котировки;

- несложно посчитать данные MACD;

Далее, на каждом новом баре брать сложившееся условие, например: значение MACD и сигнальной линии, крутизну медленной и быстрой линии, уход цены от медленной..

Прогонять условие по истории и выдавать статистику плюс/минус указанной формации за определенный период. Все остальное (открытие/закрытие/сопровождение сделок) выполнять на MQL.

Не придется придумывать тестера - есть готовый.

В питоне хранение котировок и индикаторов на SQLite. Связь MQL-питон через сокет, файлы или БД (лучше сокет).

Все..

 

Питон - только для анализа данных с богатой возможностью отображать результаты анализа в виде 2d(3d) графиков.

copy_rates_from для полного анализа данных недостаточно. Если можно было извлекать данные индикаторов (в т.ч. пользовательских), то кольцо анализа замкнулось бы.

А торговать через питон, ИМХО - пиар ход MQL5

 
Mikhael1983:

реализую здесь, в этой ветке, торговлю по этой стратегии, на языке Python. 

Вы забыли добавить "спокойно ждем прибыль")
Причина обращения: