用Python进行交易

Mikhael1983  

我想请人建议一个简单的(明知是输的,不是重点)交易策略。

如果信息是理智的,也就是说,会或多或少地明确提出需要做什么,在这里实施,在这个线程中,在这个策略上交易,在Python中。

我在等待 )

Mikhael1983  

我将从一段代码开始,它可能会派上用场(我计划用M5时间框架工作,进行计算,每5分钟做一次决定)。

输入datetime作为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
Mikhael1983  

你也会需要它。

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

这里的字体不是单行的,所以从视觉上看,格式有点偏差,但这不是重点

Aleksey Nikolayev  
我想知道在python上测试交易系统的计划是怎样的?
Vladimir Karputov  
Aleksey Nikolayev #:
我想知道在Python中测试一个交易系统的计划是怎样的?

Python 这个词搜索文章。

Aleksey Nikolayev  
Mikhael1983:

我想请人建议一个简单的(明知是输的,不是重点)交易策略。

如果信息是理智的,也就是说,会或多或少地明确提出需要做什么,在这里实施,在这个线程中,在这个策略上交易,在Python中。

我在等待 )

重写MT5附带的标准MACD 专家顾问。在各个阶段的检查都会很方便。

我将更具体地询问测试-优化的预期方式。是自己编写的测试器还是基于Python的第三方测试器?通过文件、套接字等与MQL5整合?

Sergey Deev  

用python进行交易是不错的...

但python适合分析数据,但不适合交易

如果你考虑MACD选项,在python上。

- 它很容易加载报价。

- MACD数据可以很容易地计算出来。

然后在每个新的条形图上取一个条件,例如:MACD值和信号线,慢线和快线的陡峭度,价格远离慢线的运动......。

通过历史记录运行条件,显示一定时期内指定队形的统计数字加减。其他一切(开仓/平仓/交易)都应该在MQL中完成。

你不必发明一个测试器--我们有一个现成的。

在Python中,报价和指标被存储在SQLite上。连接MQL - python通过socket、文件或数据库(socket更好)。

一切...

Malik Arykov  

Python - 仅用于数据分析,具有丰富的以2D(3D)图表显示分析结果的能力。

copy_rates_from 对于完整的数据分析是不够的。如果有可能提取指标数据(包括自定义指标),分析环就会被关闭。

而通过python进行交易,IMHO是MQL5的一个公关举措。

secret  
Mikhael1983:

我将在本线程中用Python实现这一策略。

你忘了加上 "静静地等待利益")
原因: