FMZ phát hành công cụ phát hiện bản địa Python

Tác giả:Giấc mơ nhỏ, Tạo: 2018-04-13 09:48:31, Cập nhật: 2019-08-19 16:30:05

FMZ phát hành công cụ phát hiện bản địa Python

FMZ backtest engine python package FMZ Quản lý công cụ python hỗ trợ python2 và python3, hỗ trợ Windows, Linux, Mac Hỗ trợ python2 và python3, hỗ trợ hệ thống Windows, Linux, Apple Mac OS

cài đặt

Thiết lập Trong lệnh, nhập lệnh sau:

pip install https://github.com/fmzquant/backtest_python/archive/master.zip
  • Lưu ý: Khi cài đặt hệ thống Apple Mac, nếu có giới hạn bảo mật, bạn cần thêm lệnh sudo trước lệnh pip, và toàn bộ lệnh cài đặt sẽ yêu cầu nhập mật khẩu hệ thống trước khi thực hiện.

ví dụ đơn giản

Ví dụ đơn giản

'''backtest
start: 2018-02-19 00:00:00
end: 2018-03-22 12:00:00
period: 15m
exchanges: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}]
'''
from fmz import *
task = VCtx(__doc__) # initialize backtest engine from __doc__
print exchange.GetAccount()
print exchange.GetTicker()
print task.Join() # print backtest result

The config string can be generated automatically by saving the backtest configuration in the strategy edit page. The config string can be generated automatically by saving the backtest configuration in the strategy edit page. The config string can be generated automatically by saving the backtest configuration in the strategy edit page. The config string can be generated automatically by saving the backtest configuration in the strategy edit page. Dây chuỗi cấu hình có thể được tự động tạo ra bằng cách lưu lại cấu hình truy vấn trong giao diện chỉnh sửa chính sách

meta

tài liệu

Tài liệu API: (có nghĩa là tài liệu gọi các hàm như GetAccount trong ví dụ)

Có một số người đã sử dụng nó.

'''backtest
start: 2018-02-19 00:00:00
end: 2018-03-22 12:00:00
period: 15m
exchanges: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}]
'''
from fmz import *                                                  # 引用 发明者量化 库
task = VCtx(__doc__) # initialize backtest engine from __doc__     # 调用 VCtx 函数 根据 __doc__初始化。
print exchange.GetAccount()                                        # 测试 GetAccount 函数,并打印 回测系统测试交易所账户信息
print exchange.GetTicker()                                         # 测试 GetTicker 函数,并打印 回测系统 行情信息
print task.Join() # print backtest result                          # 调用 初始化后的 task 对象 显示回测结果
  • _doc_

    是两个下划线。__doc__用来访问模块,类声明或者函数的声明中第一个未被赋值的字符串,
    可以是被""" ""","" "",' ',括起来的,作用就是把 代码中 '''backtest   ...  ''' 的回测配置信息  传入 VCtx 类构造函数构造对象。
    
  • Sau đó, hãy thay đổi mã thử nghiệm để xem các hàm Log, GetTicker được gọi như thế nào.

    # coding=UTF-8
    
    '''backtest
    start: 2018-02-19 00:00:00
    end: 2018-03-22 12:00:00
    period: 15m
    exchanges: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}]
    '''
    
    from fmz import *                                                # 引用 发明者量化 库
    task = VCtx(__doc__) # initialize backtest engine from __doc__     # 调用 VCtx 函数 根据 __doc__初始化。
    print exchange.GetAccount()                                        # 测试 GetAccount 函数,并打印 回测系统测试交易所账户信息
    Log("\n 调用Log")
    Log("调用 exchange.GetTicker() : ", exchange.GetTicker())
    print task.Join() # print backtest result                          # 调用 初始化后的 task 对象 显示回测结果
    
    • Print exchange.GetAccount () sẽ hiển thị các nội dung sau:
    {'Balance': 3.0, 'Stocks': 0.0, 'FrozenBalance': 0.0, 'FrozenStocks': 0.0}
    
    • Log (("\nCall Log") 、 Log (("Call exchange.GetTicker() ":), exchange.GetTicker())

    Các nội dung được xuất ra trong cấu trúc xuất dữ liệu print task.Join:

    {
        "Chart": {
     	   "Cfg": "",
     	   "Datas": []
        },
        "Elapsed": 42000000,
        "Finished": true,
        "Indicators": {},
        "LoadBytes": 441845,
        "LoadElapsed": 24000000,
        "LogsCount": 2,
        "Profit": 0.0,
        "ProfitLogs": [],
        "Progress": 100.0,
        "RuntimeLogs": [                                                  # 调用输出内容在此处
     	   [1, 1518969600200, 5, "", 0, 0.0, 0.0, "\n 调用Log", "", ""],
     	   [2, 1518969600400, 5, "", 0, 0.0, 0.0, "调用 exchange.GetTicker() :  {'Sell': 0.02113476, 'Volume': 519.6953, 'Buy': 0.02113474, 'Last': 0.02113475, 'High': 0.02113476, 'Time': 1518969600000L, 'Low': 0.02113474}", "", ""]
        ],
        "Snapshort": [{
     	   "Balance": 3.0,
     	   "BaseCurrency": "LTC",
     	   "Commission": 0.0,
     	   "FrozenBalance": 0.0,
     	   "FrozenStocks": 0.0,
     	   "Id": "OKEX",
     	   "QuoteCurrency": "BTC",
     	   "Stocks": 0.0,
     	   "Symbols": {
     		   "LTC_BTC_OKEX": {
     			   "Last": 0.01893785
     		   }
     	   },
     	   "TradeStatus": {}
        }],
        "Status": "",
        "Task": {
     	   "Args": null,
     	   "Exchanges": [{
     		   "Balance": 3,
     		   "BaseCurrency": "LTC",
     		   "BasePeriod": 300000,
     		   "BasePrecision": 4,
     		   "DepthDeep": 5,
     		   "FaultTolerant": 0,
     		   "FeeDenominator": 5,
     		   "FeeMaker": 75,
     		   "FeeMin": 0,
     		   "FeeTaker": 80,
     		   "Id": "OKEX",
     		   "Label": "OKEX",
     		   "PriceTick": 1e-08,
     		   "QuoteCurrency": "BTC",
     		   "QuotePrecision": 8,
     		   "SlipPoint": 0,
     		   "Stocks": 0
     	   }],
     	   "Options": {
     		   "DataServer": "q.botvs.net",
     		   "MaxChartLogs": 800,
     		   "MaxProfitLogs": 800,
     		   "MaxRuntimeLogs": 800,
     		   "NetDelay": 200,
     		   "Period": 900000,
     		   "RetFlags": 189,
     		   "SnapshortPeriod": 300000,
     		   "TimeBegin": 1518969600,
     		   "TimeEnd": 1521691200,
     		   "UpdatePeriod": 5000
     	   }
        },
        "TaskStatus": 1,
        "Time": 1521691200000
    }
    
  • Làm thế nào để sử dụng một chính sách trong một công cụ tìm kiếm nội bộ

# !/usr/local/bin/python
# -*- coding: UTF-8 -*-
'''backtest
start: 2018-02-19 00:00:00
end: 2018-03-22 12:00:00
period: 15m
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD","balance":10000,"stocks":3}]
'''
import sys
sys.path.append("/usr/local/lib/python2.7/site-packages")    # 测试时添加了路径,如不需要可以删除

from fmz import *
import math
import talib

task = VCtx(__doc__) # initialize backtest engine from __doc__

# ------------------------------ 策略部分开始 --------------------------
print exchange.GetAccount()     # 调用一些接口,打印其返回值。
print exchange.GetTicker()

def adjustFloat(v):             # 策略中自定义的函数
    v = math.floor(v * 1000)
    return v / 1000

def onTick(e):
    Log("onTick")
    # ....

#
# ...
# 
# 此处省略 自定义函数实现等代码。

def main():
    InitAccount = GetAccount()
    
    while True:
        onTick(exchange)
        Sleep(1000)
# ------------------------------ 策略部分结束 --------------------------

try:
    main()                     # 回测结束时会 raise EOFError() 抛出异常,来停止回测的循环。所以要对这个异常处理,在检测到抛出的异常后调用 task.Join() 打印回测结果。
except:
    print task.Join()          # print backtest result  , 打印回测结果。

Thêm nữa

alextao/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py:793: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. warnings.warn ((FSADeprecationWarning)) Traceback (most recent call last): File "/Users/taoxing/Desktop/quant/trading_api_study/fmz/fmz_extend_api_demo/app.py", line 152, in db.create_all ((() File "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 963, in create_all self._execute_for_all_tables ((app, bind, 'create_all') File "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 955, in _execute_for_all_tables op ((bind=self.get_engine ((app, bind), **extra) File "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 896, in get_engine return connector.get_engine File "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 556, in get_engine self._sa.apply_driver_hacks ((self._app, info, options)) File "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 861, in apply_driver_hacks info.database = os.path.join ((app.root_path, info.database) AttributeError: can't set attribute Không thể đặt thuộc tính Xin hãy tìm sự hướng dẫn của Thiên Chúa!!!

guanyuwanglei 我想运行实盘机器人,添加Wex.app交易所相当于实盘模拟交易是吧?谢谢

guanyuwangleiNhưng chỉ có một chút dữ liệu được kiểm tra trên đĩa thực, những thiết lập nào có thể được tối ưu hóa để có được nhiều dữ liệu đĩa thực hơn? /upload/asset/105f604eaceb0d3928a90.png /upload/asset/1066714d9a32c82eab7f1.png

guanyuwangleiXin chào, tôi muốn sử dụng cặp giao dịch token cash husd/usdt, tôi đã thử exchange.IO (("currency", "HUSD_USDT"), exchange.IO (("currency", "HUSD/USDT"), exchange.IO (("currency", "HUSDUSDT"), không chạy xuất hoặc đăng ký khác nhau thất bại, xin vui lòng viết đúng là gì?

Mỗi ngày một mô hình mỏngNhững người tham gia cuộc thi đã được hỏi: "Bạn có thể nhìn thấy kết quả của cuộc thi không?"

guanyuwangleiXin vui lòng, trên hệ thống windows, exchange không thể tìm ra cách giải quyết, cảm ơn.

wohiyituoshiHiện tại, các giao dịch được hỗ trợ bởi hệ thống kiểm tra lại rất ít, dự án nguồn mở này cho phép các nhà phát triển của mình thêm một số giao dịch?

1058715329Khi nào bạn có thể hỗ trợ tối ưu hóa tham số tại địa phương?

Một lá biếtTôi đã tải về thư viện của fmz, nhưng khi sử dụng, tôi nhận được lỗi và không thể tìm thấy gói ở đâu. /upload/asset/1042a0deeb6624376f8fb.png

weisLàm thế nào để thiết lập chế độ Tick? Theo mặc định, có vẻ như sử dụng Tick cấp analog, cách chuyển sang Tick cấp thực

xiaojianVà nếu bạn không sử dụng, thì bạn sẽ không biết hàm main của một chính sách nên được đặt ở đâu trong ví dụ này.

xiaojianCó phải chỉ có thể kiểm tra lại bằng BTC? Tôi đã chuyển sang chương trình BTC_USDT và nó đã báo lỗi.

Teddyprint exchange.GetTicker (()) trong python3 có nên viết print (exchange.GetTicker (()) không?

yxybyqKhông có vấn đề trong việc quay lại trên nền tảng, nhưng việc quay lại tại địa phương thường có lỗi.

liputTrong fmz, bạn tự viết hàm main, thấy hầu hết các chính sách đều tự viết while True, sau đó liên tục gọi chính sách vòng lặp. Nhưng khi sử dụng công cụ truy xuất bản địa của python, while True sẽ luôn cho chương trình chạy, không thể ngừng chạy trong thời gian bắt đầu và kết thúc được chỉ định bởi __doc__ và đưa ra đầu ra Log. Ngoài ra, tôi thấy trên các nền tảng định lượng khác thường chỉ viết các hàm được chỉ định bởi các nhà phát triển và sau đó được gọi lại bởi nền tảng. fmz cho phép viết trực tiếp các đầu vào chính, có lợi thế hoặc cân nhắc về thiết kế hoặc kiến trúc không?

liputCác biến nhập tương tác trong mã, làm thế nào để viết trong __doc__, hoặc nhập như một tham số?

liputMã đã được thay đổi thành fmz, ví dụ mã trong tài liệu cần thay đổi tên package.

Vâng Vângmain (()) là bình thường Trong class, call exchange sẽ báo lỗi, vì sao? File "D:/workspace/strategy/strategy_001.py", line 101, in main account = self._exchange.GetAccount (()) File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botvs.py", line 716, in GetAccount EOF File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botvs.py", line 569, in EOF raise EOFError ((()

topscienCái này làm gì? Không hiểu.

Lizza.Không rõ làm thế nào để sử dụng nó, liệu việc kiểm tra cục bộ này có cần phải giao tiếp với nền tảng botvs?

Giấc mơ nhỏHãy thử với gói fmz mới nhất nhé.

Giấc mơ nhỏTrình quản lý được sử dụng miễn phí, nhưng việc triển khai một phím là thuê máy chủ của Ali Cloud tự động, chi phí này là chi phí của máy chủ.

guanyuwangleiĐiều này rõ ràng là người quản lý trả tiền, người chạy robot có thể chọn WexApp để thử nghiệm hoặc bạn có thể chọn giao dịch thực tại trên sàn giao dịch thực sự, đúng không?

Giấc mơ nhỏMột deployer host được triển khai trên máy chủ đám mây Ali, được trả tiền và sẽ được tính phí từ số dư tài khoản của bạn. Robot chạy, chỉ vận hành ổ đĩa wexApp, phí bot không tính phí, không liên quan đến phí máy chủ deployer host.

guanyuwangleiĐiều đó có nghĩa là, chỉ cần một cú bấm, bạn có thể triển khai một máy chủ, bạn có thể chọn WexApp, một robot và một sàn giao dịch tương tự, và thử nghiệm hiệu ứng tương tự, đúng không?

Giấc mơ nhỏĐiều quan trọng là việc triển khai máy chủ cho thuê là một khoản phí bổ sung khác. Không liên quan đến chi phí thực tế của robot, sử dụng WexApp Analog chỉ nói rằng robot chạy miễn phí (tạm dịch: robot tiền kỹ thuật số sẽ tính phí cho bất kỳ đối tượng giao dịch không phải WexApp Analog nào được thêm vào).

guanyuwanglei/upload/asset/1066e4b56fa103356dbc1.png

Giấc mơ nhỏWexApp là bản sao của FMZ, miễn phí.

Giấc mơ nhỏKhông lịch sự.

Giấc mơ nhỏSố lượng dữ liệu đo lường lại ở cấp độ thực tương đối lớn, và các thiết lập trên biểu đồ đã được tối ưu.

guanyuwangleiThay vào đó, để có khoảng thời gian gần đây, hãy đặt cho cặp giao dịch ok, exchange.SetCurrency (("BTC_USDT"), có thể thực hiện, cảm ơn rất nhiều.

Giấc mơ nhỏHãy thử thay đổi khoảng thời gian gần đây nhé.

guanyuwanglei/upload/asset/1063627010637fee333ad.png Trong mã, bạn có thể thiết lập exchange.SetCurrency (("BTC_USDT") như sau: Tuy nhiên, tất cả các gợi ý về các loại đăng ký thất bại BTC_USDT_OKEX hoặc không hiển thị bất cứ điều gì, bỏ ngay lập tức

guanyuwangleiCảm ơn.

Giấc mơ nhỏKhả năng thực tế, các máy đo lường trên nền tảng và các công cụ đo lường trên địa phương đều sử dụng dữ liệu từ trung tâm dữ liệu FMZ, cung cấp một số lượng dữ liệu giao dịch hạn chế, không phải tất cả các cặp giao dịch đều có.

guanyuwangleiCó phải giao dịch thực sự có thể nhận được giao dịch này không?

Giấc mơ nhỏHệ thống kiểm tra lại hiện không có dữ liệu về cặp giao dịch này.

Giấc mơ nhỏKết quả kiểm tra là một dạng dữ liệu, nếu muốn hình dung, bạn nên viết mã phân tích của riêng bạn. Nếu không, bạn có thể sử dụng hệ thống kiểm tra trực tuyến.

guanyuwangleiA5: = MA ((C,5); A10: = MA (C,10); góc: IF (CROSS) (A5, A10), ATAN (A5/REF) (A5, 1) -1) *100) - ATAN (A10/REF) (A10, 1) -1) *100), 0*180/3.1416; Và nếu bạn tìm ra công thức này, bạn không biết làm thế nào để thực hiện REF.

Giấc mơ nhỏĐiều này được tính toán theo nhu cầu, trong chiến lược, và công thức có thể được tìm kiếm trên Baidu.

guanyuwangleiXin hỏi cách tính góc Macd Golden Fork/Dead Fork, có công thức nào không?

guanyuwangleiTôi có thể nhập trong pycharm, nhưng làm thế nào để nhập trong trình soạn thảo?

Giấc mơ nhỏĐây là thời gian bắt đầu của đường K cố định, nếu cần đường K ngày bắt đầu từ điểm không, bạn có thể tổng hợp tính toán bằng đường K một giờ.

guanyuwangleiXin hỏi, thời gian đóng cửa trong mã và thời gian đóng cửa trong bài kiểm tra là lúc 8 giờ sáng giờ Bắc Kinh? Nếu thời gian đóng cửa không phải lúc 8:00, xin vui lòng thiết lập, cảm ơn /upload/asset/1067eabe09e92d1610d71.png

Giấc mơ nhỏBạn có thể tìm thấy một số ví dụ về chiến lược trên quảng trường chiến lược, và nếu bạn hiểu tất cả, bạn có thể bắt đầu viết một số chiến lược đơn giản.

guanyuwangleiXin vui lòng, tôi đã đọc hết các tài liệu giảng dạy cơ sở, cách sử dụng FMZ, tài liệu API, tôi nên xem kiến thức tiếp theo?

Giấc mơ nhỏKhông lịch sự.

guanyuwangleiCảm ơn.

Giấc mơ nhỏĐiều này có thể được thực hiện trực tiếp trên dòng lệnh.

guanyuwangleiMã này tôi cần nhập vào ccxt khi chạy trong tệp.py, nếu không Exchange sẽ không nhận ra nó. Trong Python Consle, bạn có thể chỉnh sửa nó.

Giấc mơ nhỏKhông sử dụng, chương trình python bình thường có thể chạy. Mã trên của tôi là lệnh chạy trực tiếp.

guanyuwanglei/upload/asset/106d6ff1919bdac419875.png Bạn có thấy không? Có lẽ bạn đã thấy rằng bạn có thể sử dụng file ccxt trong fmz.

Giấc mơ nhỏMột số người cho rằng: Tên tập tin testBackTest `` from fmz import * task = VCtx (('''backtest start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 khoảng thời gian: 15m [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] ''') # create backtest print ((exchange.GetAccount)) print ((exchange.GetTicker)) `` /upload/asset/16bea6055e58a9ef7d5c.png

Giấc mơ nhỏHãy thử bản cập nhật mới nhất của gói python fmz, mà tôi vừa tải xuống.

guanyuwanglei/upload/asset/1068d63bc6203599fc1c8.png Thay đổi khởi động, nhưng không nhận ra Exchange, Log

Giấc mơ nhỏ`` from fmz import * task = VCtx (('''backtest start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 khoảng thời gian: 15m [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] ''') # Tạo môi trường kiểm tra lại `` Nếu bạn bắt đầu như vậy, nó sẽ giống như việc cấu hình thông tin giao dịch, cặp giao dịch, v.v. khi xem lại trực tuyến.

guanyuwanglei/upload/asset/106581e23604bb2d701d8.jpg Exchange không nhận ra, đã cài đặt gói fmz trong python

Giấc mơ nhỏNhững người tham gia cuộc họp này đã từng bị cáo buộc là có liên quan đến việc sử dụng mạng xã hội.

Giấc mơ nhỏHiện tại không thể, vì dữ liệu kiểm tra lại được lấy từ FMZ. Tuy nhiên, mã là nguồn mở, bạn có thể thay đổi và thay thế nguồn dữ liệu bất cứ khi nào bạn muốn.

Giấc mơ nhỏ`` /*Backtest start: 2019-09-21 00:00:00 end: 2019-10-20 00:00:00 Thời gian: 1h [{"eid:"Bitfinex","currency":"BTC_USD"}] mode: 1 */ `` Thông qua cài đặt, ``mode`` trong thông tin cấu hình, bạn có thể đặt trên trang truy cập lại, sau đó lưu cài đặt truy cập lại trực tiếp vào chuỗi thông tin cấu hình trên trang chỉnh sửa chính sách.

Sau đóCâu hỏi tương tự?

chujiuĐúng vậy.

xenitđỉnh

Giấc mơ nhỏĐược rồi, tài liệu này hiện không được hỗ trợ.

Một lá biếtTốt, cảm ơn.

Giấc mơ nhỏCác bạn đã tìm thấy vấn đề và đang xử lý.

Một lá biếtCó, mac os 10.14.4

Giấc mơ nhỏHệ điều hành của bạn là Mac OSX?

Một lá biếtTôi đang sử dụng conda để quản lý phiên bản python, tôi xác nhận đã tải xuống phiên bản python của fmz, bản địa cũng có. Nhưng xem trang web viết hỗ trợ python3, nhưng vấn đề này xuất hiện khi tôi cố gắng. Có phải tôi viết sai mã không?

Giấc mơ nhỏNếu bạn có nhiều phiên bản Python, hãy kiểm tra xem gói này được cài đặt ở đâu.

Giấc mơ nhỏBài viết đã được cập nhật, bạn có thể xem ví dụ ở cuối bài.

Giấc mơ nhỏChức năng main đã được viết, gọi trực tiếp là được.

xiaojian https://github.com/fmzquant/backtest_python/issues/4,看看这个有没有帮助

Giấc mơ nhỏNhững thông tin sai, cụ thể, có thể xem hình ảnh dưới đây.

xiaojianCó thể bạn sẽ thấy một số lỗi khi thay đổi mã mẫu thành BTC_USDT.

Giấc mơ nhỏĐiều quan trọng là lựa chọn sàn giao dịch nào sẽ được đánh giá.

Giấc mơ nhỏĐể xem cụ thể hơn, hãy xem thông tin báo lỗi ở vị trí sai.

Giấc mơ nhỏFMZ sử dụng kiến trúc tư vấn để có quyền kiểm soát quy trình một cách mạnh mẽ hơn và có nhiều tính linh hoạt hơn trong việc viết chính sách.

Giấc mơ nhỏ'' 'Backtest start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 khoảng thời gian: 15m [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] '' Đây là

Giấc mơ nhỏCó một vài thay đổi.

Giấc mơ nhỏCác tập tin bắt đầu được tải. Các cấu hình tài khoản giả định này, nếu được viết trong lớp là không tải được.

Vâng VângCó lẽ cấu hình này là đúng. Tại sao không thể viết tham chiếu vào class

Vâng VângBạn có muốn tìm hiểu thông tin tài khoản của bạn, những dòng dưới đây? Có một hàm có thể được dùng trong hàm global main. Nhưng trong lớp học, bạn đã sai. '' 'Backtest start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 khoảng thời gian: 15m [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] '' from botvs import * (từ botvs nhập *) task = VCtx ((__doc__) # initialize backtest engine from __doc__

Giấc mơ nhỏ`` def GetAccount ((self): r = _ACCOUNT ret = self.lib.api_Exchange_GetAccount ((self.ctx, self.idx, ctypes.byref))) if ret == API_ERR_SUCCESS: return r.toObj (()) elif ret == API_ERR_FAILED: return None Không có EOF ((() `` Nhìn vào mã dưới đây, có vẻ như API_Exchange_GetAccount là một giao diện DLL, bạn sẽ nhận được thông báo lỗi trên đó cho thấy không quay lại, cuộc gọi thành công và không quay lại cuộc gọi thất bại, sau đó thực hiện EOF.

Giấc mơ nhỏMột cách đơn giản là gói hệ thống kiểm tra lại thành một thư viện Python để Python có thể thực hiện các chính sách kiểm tra lại.

Giấc mơ nhỏCó thể có giao tiếp, có yêu cầu dữ liệu khi kiểm tra lại, nhưng chạy trên hệ thống kiểm tra chạy tại địa phương. `` '' 'Backtest start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 khoảng thời gian: 15m [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] '' from botvs import * (từ botvs nhập *) task = VCtx ((__doc__) # initialize backtest engine from __doc__ print exchange.GetAccount ((() print exchange.GetTicker print task.Join ((() # print backtest result `` Phần mã này giống như một chính sách, hệ thống kiểm tra được đóng gói thành một thư viện, thử nghiệm và gọi chức năng của hệ thống kiểm tra khi chạy. '' 'Backtest... '' bên trong là cài đặt tham số kiểm tra lại, có thể được tạo trong trang kiểm tra lại chính sách BotVS.