FMZ выпустила Python, нативный поисковик

Автор:Маленькие мечты, Создано: 2018-04-13 09:48:31, Обновлено: 2019-08-19 16:30:05

FMZ выпустила Python, нативный поисковик

FMZ backtest engine python пакет ФМЗ рекурсионный двигатель Python поддержка python2 и python3, поддержка Windows, Linux, Mac Поддержка python2 и python3, поддержка Windows, Linux, Apple Mac OS

установить

Установка В командной строке введите следующую команду:

pip install https://github.com/fmzquant/backtest_python/archive/master.zip
  • Обратите внимание: При установке системы Apple Mac, если есть ограничения безопасности, необходимо добавить команду sudo перед командой pip, и вся установка потребует ввода пароля системы перед выполнением команды.

простой пример

Простой пример

'''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. Конфигурационные строки могут быть автоматически созданы с помощью сохранения ретроспективных конфигураций в интерфейсе редактирования политики

meta

документация

API-документы: (т.е. документы, в которых вызваны функции, такие как GetAccount в примере)

Простой комментарий к коду Python:

'''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__用来访问模块,类声明或者函数的声明中第一个未被赋值的字符串,
    可以是被""" ""","" "",' ',括起来的,作用就是把 代码中 '''backtest   ...  ''' 的回测配置信息  传入 VCtx 类构造函数构造对象。
    
  • Под изменением тестируйте код, чтобы увидеть, как конкретные функции Log и GetTicker будут вызваны.

    # 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 ((() вывод кода показывает следующее:
    {'Balance': 3.0, 'Stocks': 0.0, 'FrozenBalance': 0.0, 'FrozenStocks': 0.0}
    
    • Log (("\nпризыв Log") 、 Log (("призыв exchange.GetTicker() ":), exchange.GetTicker())

    В структуре выполнения задания print.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
    }
    
  • Как использовать политику для повторного поиска в локальной поисковой системе

# !/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  , 打印回测结果。

Больше

Алекс, пожалуйста./Users/taoxing/opt/anaconda3/envs/ai4f/lib/python 3.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. /Users/taoxing/opt/anaconda3/envs/ai4f/lib/python 3.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 (последний последний звонок): Файл "/Users/taoxing/Desktop/quant/trading_api_study/fmz/fmz_extend_api_demo/app.py", строка 152, в db.create_all ((() Файл "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", строка 963, в создании_всех self._execute_for_all_tables ((app, bind, create_all)) Файл "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", строка 955, в _execute_for_all_tables op ((bind=self.get_engine ((app, bind), **extra) Файл "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", строка 896, в get_engine return connector.get_engine ((() Файл "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", строка 556, в get_engine self._sa.apply_driver_hacks ((self._app, info, options)) Файл "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", строка 861, в приложении info.database = os.path.join ((app.root_path, info.database) - приложение, используемое для установки маршрута в системе). AttributeError: не может установить атрибут Если вы ошибаетесь, просите Бога о руководстве!

Гуаньюванглей 我想运行实盘机器人,添加Wex.app交易所相当于实盘模拟交易是吧?谢谢

ГуаньюванглейНо данные, которые просматриваются на реальном диске, немного, и какие настройки можно оптимизировать, чтобы получить больше данных на реальном диске? /upload/asset/105f604eaceb0d3928a90.png /upload/asset/1066714d9a32c82eab7f1.png

ГуаньюванглейЗдравствуйте, я хочу использовать токены на наличных husd/usdt торговые пары, я попробовал exchange.IO (("currency", "HUSD_USDT"), exchange.IO (("currency", "HUSD/USDT"), exchange.IO (("currency", "HUSDUSDT"), не работает выход или разновидность подписки не удалось, пожалуйста, как правильно написать? спасибо

Каждый день.Как же можно визуализировать результаты этого повторного тестирования?

ГуаньюванглейПрошу, на Windows Exchange не может найти решение, спасибо.

ВошитуошиВ настоящее время в системе рецензирования поддерживается относительно небольшое количество транзакций, но позволяет ли этот открытый проект разработчикам добавлять некоторые транзакции?

1058715329Когда можно поддерживать локальную оптимизацию параметров?

Однозначно.@ маленький маленький сон. Спасибо. Есть ли шаблон для python3? Я загрузил библиотеку fmz, но при использовании я получил ошибку, не могу найти пакет.

МысКак настроить режим Tick? По умолчанию кажется, что используется Tick аналогового уровня, как переключиться на Tick реального уровня

СкиаоцянИли нет, где в этом примере должна быть главная функция стратегии?

СкиаоцянЯ перехожу на программу BTC_USDT и получаю ошибку.

Тедди.print exchange.GetTicker (()) в python3 следует писать как print (exchange.GetTicker (())?

yxybyqНа платформе нет проблем, локальное повторение часто дает ошибки.

липутВ fmz пишется собственная main функция, видишь большинство стратегий пишется собственным while True, а затем все время циркулирует призыв стратегии. Но при использовании натурного ретровизионного двигателя python, while True всегда запускает программу, не может остановиться в течение указанного времени начала и окончания __doc__, и дает выход Log. Что делать? Кроме того, я вижу, что на других платформах количественного измерения обычно только определенные функции, написанные разработчиком, и затем отозванные платформой. fmz позволяет прямо писать главный вход, есть ли какие-либо конструктивные или архитектурные преимущества или соображения?

липутКак вводить интерактивные входные переменные в код, как их записывать в _doc__ или как параметры?

липутКод был переименован в fmz, и примерный код в документации должен быть переименован в package name.

Да, да.В main (()) это нормально Почему в классе call exchange возвращает ошибки? Файл "D:/workspace/strategy/strategy_001.py", строка 101, в основном account = self._exchange.GetAccount ((() Файл "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botvs.py", строка 716, в GetAccount EOF ((() Файл "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botvs.py", строка 569, в EOF raise EOFError (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

ТопсьенЧто это за штука?

Лиза.Не совсем понятно, как это сделать, но местный реверс также должен взаимодействовать с платформой botvs?

Маленькие мечтыПопробуйте с помощью последнего пакета fmz.

Маленькие мечтыХостинг бесплатный, однако настройка с одной клавиатурой автоматически арендует сервер Ali Cloud за счет платы за сервер.

ГуаньюванглейЭто понятно, потому что хозяин платит, и робот может использовать WexApp для тестирования, или он может использовать реальные биржи для торговли, верно?

Маленькие мечтыРазвертывающий хост, развертываемый на сервере Ali Cloud, является платным и будет взиматься с баланса вашего аккаунта.

ГуаньюванглейЭто означает, что с помощью одной клавиши вы можете развернуть сервер, выбрать WexApp, бота и аналогичную биржу, чтобы проверить аналогию, верно?

Маленькие мечтыЭтот ключ для развертывания сервера для аренды является другой дополнительной платой. Не имеет отношения к плате за реальный диск робота, а использование wexApp-диска просто говорит о том, что робот работает бесплатно (цифровой валютный робот будет взимать плату за любой объект не-WexApp-диска).

ГуаньюванглейОдин ключ для аренды хранителя, использование wexApp биржи бесплатно? /upload/asset/1066e4b56fa103356dbc1.png

Маленькие мечтыWexApp - это бесплатный анимационный диск FMZ.

Маленькие мечтыНепристойность.

Маленькие мечтыНа самом деле, если вы хотите, чтобы вы были в состоянии получить больше данных, то вы должны использовать эти параметры, чтобы получить больше данных.

ГуаньюванглейДля более поздних периодов времени настройка на пары OK, exchange.SetCurrency (("BTC_USDT"), может быть реализована, спасибо большое.

Маленькие мечтыПопробуйте перейти на более поздний период времени.

Гуаньюванглей/upload/asset/1063627010637fee333ad.png В коде установлено следующее: exchange.SetCurrency (("BTC_USDT") Но все подсказки для подписки на разновидности не удалось BTC_USDT_OKEX подсказки или ничего не показывают, сразу выйти

ГуаньюванглейСпасибо.

Маленькие мечтыНа физическом диске, платформенном реместе и локальном реместе используются данные FMZ Data Center, которые предоставляют ограниченное количество данных о парах сделок, но не все пары сделок.

ГуаньюванглейА что, если реальная сделка принесет сделку?

Маленькие мечтыВ настоящее время в системе обратной связи нет данных об этой транзакционной паре.

Маленькие мечтыРезультаты рецензирования являются формой данных, и если вы хотите визуализировать их, вам нужно написать свой собственный код. Если нет, вы можете использовать онлайн-рецензирование.

ГуаньюванглейA5: = MA ((C,5); A10:=MA(C,10); угол:IF(CROSS(A5,A10),ATAN((A5/REF(A5,1)-1) *100) -ATAN((A10/REF(A10,1)-1) *100),0) *180/3.1416; Если вы нашли эту формулу, вы не знаете, как REF работает.

Маленькие мечтыЭта формула рассчитывается в соответствии с потребностями, в стратегии, и ее можно найти в поиске на Baidu.

ГуаньюванглейПрошу, как вычислить угол macd золотого вилка \ мертвого вилка, есть ли формула для вычисления?

ГуаньюванглейСпросите, import statsmodels в редакторе политики недействителен, где можно импортировать сторонние библиотеки?

Маленькие мечтыЭто фиксированное время начала K-линии, если требуется дневная K-линия, начинающаяся с нуля, можно вычислить с синтезом K-линии в час.

ГуаньюванглейСпросите, время закрытия в коде и время закрытия в обратном сообщении - 8:00 утра по Пекинскому времени? Если время закрытия не 8:00 утра, пожалуйста, расскажите, как это сделать.

Маленькие мечтыЕсли вы можете найти примеры стратегий на площади стратегий, и если вы понимаете все, вы можете написать несколько простых стратегий.

ГуаньюванглейПожалуйста, я прочитал начальные учебные материалы, методы использования FMZ и документацию API, а теперь я должен посмотреть на эти знания?

Маленькие мечтыНепристойность.

ГуаньюванглейСпасибо.

Маленькие мечтыЭто может быть выполнено прямо с командной строки.

ГуаньюванглейЭтот код, когда я работаю в файле.py, требует ввода ccxt, иначе exchange не сможет его распознать. В Python Consle это работает нормально.

Маленькие мечтыНе используется, обычные программы Python могут работать.

Гуаньюванглей/upload/asset/106d6ff1919bdac419875.png Как получилось, что в fmz используется ccxt?

Маленькие мечтыЯ только что проверил: Файл testBackTest `` import * из fmz task = VCtx (('''backtest start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 Период: 15 м exchange: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] ''') # создать backtest print ((exchange.GetAccount)) print ((exchange.GetTicker)) `` /upload/asset/16bea6055e58a9ef7d5c.png

Маленькие мечтыПопробуйте обновленную версию пакета fmz python, которую я только что загрузил.

Гуаньюванглей/upload/asset/1068d63bc6203599fc1c8.png Изменения в инициализации, но Exchange, Log все еще не распознают

Маленькие мечты`` import * из fmz task = VCtx (('''backtest start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 Период: 15 м exchange: [{"eid:"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] ''') # Создание среды для рецензирования `` В этом случае, если вы хотите, чтобы ваш сайт был доступен для всех пользователей, вы должны установить его, как это делается в Интернете, чтобы получить доступ к информации об обмене, паре сделок и т.д.

Гуаньюванглей/upload/asset/106581e23604bb2d701d8.jpg /upload/asset/106581e23604bb2d701d8.jpg /upload/asset/106581e23604bb2d701d8.jpg Exchange не может быть идентифицирован, в Python уже установлен пакет FMZ

Маленькие мечтыПосмотрите скриншот с конкретными сообщениями об ошибках.

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

Маленькие мечты`` /* backtest start: 2019-09-21 00:00:00 end: 2019-10-20 00:00:00 Период: 1h [{"eid:"Bitfinex","currency":"BTC_USD"}] режим: 1 */ `` С помощью настройки ```mode `` в конфигурационной информации, которая может быть установлена на странице обратной проверки, а затем сохранена непосредственно на странице редактирования политики для получения строки конфигурационной информации.

ПозжеСпросите?

ЧжуцзюДа, это так.

ксенидВершина

Маленькие мечтыХорошо, но эта запись пока не поддерживается.

Однозначно.Хорошо, спасибо.

Маленькие мечтыМы нашли проблему, и мы ее исправляем.

Однозначно.Да, для mac os 10.14.4

Маленькие мечтыВаша операционная система Mac OSX?

Однозначно.Я управляю версией python с помощью conda, я подтвердил, что загрузил версию python fmz, которая есть на месте. Но я посмотрел на веб-сайт, где написано, что поддерживает python3, но когда я попытался, это вызвало проблему.

Маленькие мечтыЕсли у вас есть несколько версий Python, проверьте, где этот пакет установлен.

Маленькие мечтыПост был обновлен, вы можете посмотреть пример в конце сообщения.

Маленькие мечтыmain-функция написана, прямой вызов выполнен.

Скиаоцян https://github.com/fmzquant/backtest_python/issues/4,看看这个有没有帮助

Маленькие мечтыПозже, в апреле, в Twitter появилась публикация, в которой сообщалось, что в Twitter появилась информация о том, что в Facebook написано неправдоподобное сообщение.

СкиаоцянЭто пример кода, который ошибается, когда его переводят в BTC_USDT.

Маленькие мечтыЭто зависит от того, какая биржа выберет для повторного тестирования.

Маленькие мечтыЕсли посмотреть на информацию об ошибке, то это неправильное местоположение.

Маленькие мечтыFMZ использует архитектуру консультаций, что дает более сильный контроль над процессом и гибкость в написании стратегии.

Маленькие мечты'' 'Backtest start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 Период: 15 м exchange: [{"eid:"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] '' Это

Маленькие мечтыВ этом случае мы не будем делать никаких ошибок.

Маленькие мечтыФайлы начинают загружаться Эта конфигурация симуляторной учетной записи, если она написана в классе, не может быть загружена.

Да, да.Эта конфигурация должна быть правильной. Почему я не могу написать в класс ссылки?

Да, да.Проверьте данные с аккаунта, это несколько строк? Есть, но это нормальное ссылка в глобальной функции main. Но в классе ошибки. '' 'Backtest start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 Период: 15 м exchange: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] '' Из botvs import * task = VCtx ((__doc__) # initialize backtest engine from __doc__

Маленькие мечты`` 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 Ничего EOF ((() `` Посмотрите на код, который выглядит как API_Exchange_GetAccount. Это интерфейс для DLL, и вы получите сообщение об ошибке, которое показывает, что не было возвращения, вызов был успешным и не было возвращения, вызов не был успешным, и вы выполните EOF.

Маленькие мечтыЭто означает, что вы можете упаковать систему повторного тестирования в библиотеку Python, чтобы Python мог выполнять свои собственные стратегии повторного тестирования.

Маленькие мечтыЕсть коммуникация, когда запрос на данные выполняется, но он работает на локальной системе. `` '' 'Backtest start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 Период: 15 м exchange: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] '' Из botvs import * task = VCtx ((__doc__) # initialize backtest engine from __doc__ print exchange.GetAccount (англ.) русск.) print exchange.GetTicker (англ.) русский print task.Join ((() # print backtest result Выполнение задания `` Этот фрагмент кода похож на политику, в которой система рецензирования упакована в библиотеку, тестируется и приводится в действие при вызове функции системы рецензирования. Выше '' 'backtest... '' входит в параметры рецензирования, которые могут быть сгенерированы на странице рецензирования политики BotVS.