FMZ バックテスト エンジン python パッケージ FMZ リサーチ エンジン python リバリー Python 2 と python 3 をサポートする Windows,Linux,Mac python2とpython3をサポートし,Windowsシステム,Linuxシステム,Apple Mac OSシステムをサポートする
設置 命令行に次のコマンドを入力します.
pip install https://github.com/fmzquant/backtest_python/archive/master.zip
簡単な例
'''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. このコンフィギュレーション文字列は,戦略編集ページにバックテストの設定を保存することによって自動的に生成されます. 設定文字列は,ポリシー編集インターフェイス内の保存回帰設定で自動的に生成できます.
APIドキュメント: (例ではGetAccountなどの関数を呼び出すドキュメントです)
'''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 类构造函数构造对象。
# 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 对象 显示回测结果
{'Balance': 3.0, 'Stocks': 0.0, 'FrozenBalance': 0.0, 'FrozenStocks': 0.0}
輸出内容は 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
}
# !/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/python3.8/site-packages/flask_sqlalchemy/__init__.py:793: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONSは,重大なオーバーヘッドを追加し,将来,デフォルトで無効にします.この警告を抑制するには,それを真または偽に設定します.
FSADeprecationWarning (FSAデプレケーション警告)
トレースバック (最近最後の電話)
ファイル "/Users/taoxing/Desktop/quant/trading_api_study/fmz/fmz_extend_api_demo/app.py", line 152, in
グアンユワングレー 我想运行实盘机器人,添加Wex.app交易所相当于实盘模拟交易是吧?谢谢
グアンユワングレーしかし,実力盤の復刻データはわずかですが,さらに多くの実力盤データを得るために最適化できる設定は何ですか? /upload/asset/105f604eaceb0d3928a90.png /upload/asset/1066714d9a32c82eab7f1.png
グアンユワングレーこんにちは,私はトークンの現金husd/usdt取引ペアを使用したいのですが,私はexchange.IO (("currency", "HUSD_USDT"),exchange.IO (("currency", "HUSDUSDT"),exchange.IO (("currency", "HUSDUSDT"),実行退出または種類サブスクリプションの失敗ではありません.
毎日 柔らかい模様このテストの結果は理解できませんが,どのように視覚化できますか?
グアンユワングレーWindows システムでは,Exchange で解決できない. ありがとうございました.
ウォシチュウシこのオープンソースプロジェクトでは,開発者が追加する取引ペアを許可していますか?
1058715329ローカルなパラメータ最適化はいつサポートされるのでしょうか?
片足で知ること@小小夢 ありがとう。python3のテンプレートがありますか?fmzのライブラリをダウンロードしましたが,使用時にエラーが発生し,パッケージがどこにあるかが見つかりませんでした。 /upload/asset/1042a0deeb6624376f8fb.png
ウェイスTick モードを設定する方法.デフォルトでは,模擬レベルTickを使用しているように見えます.
スキオジアンこの例では,この方法のメイン関数がどこに置かれるか
スキオジアンテストはLTC_BTCでしか行いませんか? 私はBTC_USDTプログラムに変更するとエラーが出ます.
テディprint exchange.GetTicker ((() は Python 3 で print (exchange.GetTicker ((()) と書くべきですか?
yxybyqプラットフォームの回路は問題なく,ローカル回路は頻繁にエラーを起こす.
リプートfmzでは main を自分で書き,ほとんどのポリシーが while True を自分で書き,その後ループで呼び出す.しかし,python のネイティブ回帰エンジンを使用すると,while True は常にプログラムを実行させ,__doc__ の指定された開始時間と終了時間内に実行を停止させず,Log の出力を与えます.このときはどうしたらよいですか? また,他の量化プラットフォームでは,開発者が指定した関数を記述して,プラットフォームから呼び戻すだけだと見ています. fmzは,メインインプットを直接記述することを許可します.
リプートインタラクティブな入力変数は__doc__で書き込むか,それとも参数で入力する?
リプートfmzに変更しました.ドキュメント内の例コードは package名を変更します.
そうそう基本的には,この文字が クラスの呼び出し交換がエラーになるのはなぜでしょう? ファイル"D:/workspace/strategy/strategy_001.py",ライン 101, in main account = self._exchange.GetAccount (アカウント取得) ファイル "C:\ Users\ User\ AppData\ Local\ Programs\ Python\ Python36-32\ lib\ site- packages\ botvs.py", line 716, in GetAccount ファイル ファイル "C:\ Users\ User\ AppData\ Local\ Programs\ Python\ Python36-32\ lib\ site- packages\ botvs.py", line 716, in GetAccount ファイル "C:\ Users\ User\ AppData\ Local\ Programs\ Python\ Python36-32\ lib\ site- packages\ botvs.py" ファイル "C:\ Users\ User\ AppData\ Local\ Programs\ Python\ Python36-32\ lib\ site- packages\ botvs.py", line 716, in GetAccount" ファイル "C:\ ユーザー\ ユーザー\ アプリデータ\ ロカルの\ プログラム\ パイソン\ パイソン\ パイソン\ パイソン" ファイル "C:\ サイト・ パイソン\ サイト- パイソン\ サイト\ サイト\ ボトボトvs.py", line 716, in GetAccount EOF (英語) ファイル "C:\ Users\ User\ AppData\ Local\ Programs\ Python\ Python36-32\ lib\ site- packages\ botvs.py", line 569, in EOF ファイル ファイル "C:\ Users\ User\ AppData\ Local\ Programs\ Python\ Python36-32\ lib\ site- packages\ botvs.py", line 569, in EOF ファイル "C:\ Users\ User\ AppData\ Local\ Programs\ Python\ Python36-32\ lib\ site- packages\ botvs.py", line 569, in EOF ファイル "C:\ ユーザー\ アプリデータ\ ロカルの\ プログラム\ パイソン\ パイソン36-32\ リブ\ サイト-パッケージ\ ボットvs.py", line 569, in EOF raise EOFError (エーオフエラー)
トップシエンこの装置は何のために使われますか?
リザこのローカル回検は,botvsプラットフォームと通信する必要があるのか?回検のどのポリシーがどこに設定されているのか?
発明者 量化 - 微かな夢更新されたfmzパッケージで試してみてください.
発明者 量化 - 微かな夢ホストは無料ですが,一鍵のデプロイは,自動レンタリングでアリクラウドのサーバーを,この費用はサーバーの費用です. 一鍵のデプロイは,リアルディスクやシミュレーションディスクの両方で行えます.
グアンユワングレー管理者が支払っているので,ロボットがWexAppをテストしたり,実際の取引所で取引したりできます.
発明者 量化 - 微かな夢アリクラウドサーバーに配置された,デプロイホストは有料で,あなたのアカウントの残高から請求されます. ロボットが実行され,wexAppの模板のみを操作します. ロボットの費用は,デプロイホストサーバーの費用とは関係ありません.
グアンユワングレーつまり,サーバーを1つのキーで展開し,WexApp,ロボット,アニメーションの交換を選択して,アニメーションをテストできますよね?
発明者 量化 - 微かな夢この鍵を配置したレンタルサーバーは,他の追加料金である. ロボットの実用ディスクの料金とは関係なく,wexAppの模擬ディスクを使用すると,ロボットが無料で動作する (デジタル通貨ロボットは,任意の非WexApp模擬ディスクの取引所オブジェクトを追加すると,すべての料金が請求されます).
グアンユワングレーワンキットレンタル管理者,wexApp取引所を利用する料金は無料ですか? /upload/asset/1066e4b56fa103356dbc1.png
発明者 量化 - 微かな夢WexAppはFMZの模擬版であり,無料です.
発明者 量化 - 微かな夢嫌なことをする.
発明者 量化 - 微かな夢リアルディスクレベルの回計データ量は比較的大きいので,図上の設定は既に最適です.
グアンユワングレー最近の時間帯のために,OKの取引ペアに設定します. exchange.SetCurrency (("BTC_USDT") はリアルになります. ありがとうございました.
発明者 量化 - 微かな夢この記事へのトラックバック一覧です.
グアンユワングレー/upload/asset/1063627010637fee333ad.png アップする
暗号でこれを設定します. exchange.SetCurrency (("BTC_USDT")
しかし,すべての提示
グアンユワングレーありがとうございました
発明者 量化 - 微かな夢リアルディスクは可能であり,プラットフォームライン再測定とローカル再測定エンジンはFMZデータセンターのデータを使用し,限られた取引対データを提供していますが,すべての取引対は利用できません.
グアンユワングレーリアルな取引は,この取引を手に入れるのか?
発明者 量化 - 微かな夢復習システムは,この取引対のデータを持っていない.
発明者 量化 - 微かな夢復習結果はデータ形式で,視覚化したい場合は自分でコードを書き解析します.そうでない場合は,オンライン復習システムでできます.
グアンユワングレー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がどのように実行されるかわからないことです.
発明者 量化 - 微かな夢この公式は,必要に応じて,戦略の中で計算され,百科事典で検索して見つけることができます.
グアンユワングレーMacd 金叉\死叉の角を計算する方法について教えてください. 公式はありますか? ありがとうございました.
グアンユワングレーパイチャームでインポートできますが,編集でどうやってインポートしますか?
発明者 量化 - 微かな夢これは固定K線開始時間であり,ゼロから始まる日K線が必要であれば,1時間K線合成で計算できます.
グアンユワングレー復習の終了時とコードの終了時間は北京時間午前8時ですか? 閉店時間は午前8時でない場合は,どのように設定するか教えてください. /upload/asset/1067eabe09e92d1610d71.png
発明者 量化 - 微かな夢戦略広場では,いくつかの戦略の例を見ることができます. すべてが理解できれば,簡単な戦略を手動で書くことができます.
グアンユワングレー私は初級教材,FMZの使い方,APIのドキュメントをすべて読み終えました.
発明者 量化 - 微かな夢嫌なことをする.
グアンユワングレーありがとうございました
発明者 量化 - 微かな夢命令行で直接実行できます.
グアンユワングレーこのコードは.py ファイルで実行するときに ccxt を輸入する必要があります. Python Consle の編集では,正常に動作できます.
発明者 量化 - 微かな夢Pythonのコードは,直接命令で実行されます.
グアンユワングレー/upload/asset/106d6ff1919bdac419875.png /upload/asset/106d6ff1919bdac419875.png /upload/asset/106d6ff1919bdac419875.png /upload/asset/106d6ff191919bdac419875.png /upload/asset/106d6ff191919bdac419875.png /upload/asset/106d6ff191919bdac419875.png /upload/asset/106d6ff191919bdac419875.png /upload/asset/106d6ff191919bdac419875.png 交換でccxtを輸入したところ,fmzでccxtを使っている?
発明者 量化 - 微かな夢テストしたところ: ファイル名 testBackTest `` fmzから輸入 * task = VCtx (('''バックテスト スタート: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 期間: 15m exchanges: [{"eid:"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] "ええええええ" # create backtest (バックテストを作成する) print ((exchange.GetAccount ((() している) print ((exchange.GetTicker)) は,このページを表示しています. `` /upload/asset/16bea6055e58a9ef7d5c.png /upload/asset/16bea6055e58a9ef7d5c.png /upload/asset/16bea6055e58a9ef7d5c.png /upload/asset/16bea6055e58a9ef7d5c.png /upload/asset/16bea6055e58a9ef7d5c.png /upload/asset/16bea6055e58a9ef7d5c.
発明者 量化 - 微かな夢更新された最新バージョンのfmz pythonパックを試してください.
グアンユワングレー/upload/asset/1068d63bc6203599fc1c8.png 初期化が修正されましたが,exchange,Log はまだ認識できません.
発明者 量化 - 微かな夢` ` fmzからインポート * task = VCtx (('''バックテスト スタート: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 期間: 15m exchanges: [{"eid:"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] "えええええ" # 復習環境を創造する ` ` 初期化すると,オンライン回顧の際に設定されているように,取引所,取引対等の情報が設定されます.
グアンユワングレー/upload/asset/106581e23604bb2d701d8.jpg /upload/asset/106581e23604bb2d701d8.jpg /upload/asset/106581e23604bb2d701d8.jpg /upload/asset/106581e23604bb2d701d8.jpg /upload/asset/106581e23604bb2d701d8.jpg /upload/asset/106581e23604bb2d701d8.jpg /upload/asset/106581e23604bb2d701d8.jpg /upload/asset/106581e23604bb2d701d8.jpg Exchange は認識できず,fmz パッケージが Python にインストールされています.
発明者 量化 - 微かな夢誤報のスクリーンショットを見てください.
発明者 量化 - 微かな夢FMZからの復習データなので,一時的にできません.しかし,コードはオープンソースで,任意の変更やデータソースの置き換えが可能です.
発明者 量化 - 微かな夢`` /*バックテスト スタート: 2019-09-21 00:00:00 end: 2019-10-20 00:00:00 エンド: 期間:1h 取引所: [{"eid:"Bitfinex","currency:"BTC_USD"}] モード: 1 */ `` 設定情報内の,```mode``設定によって,復習ページで設定し,その後,ポリシー編集ページで直接復習設定を保存して,設定情報文字列にアクセスできます.
後で疑問に思いました
チュージューそうだ
クセニドトップ
発明者 量化 - 微かな夢この記録は,現在サポートされていません.
片足で知ることありがとうございました.
発明者 量化 - 微かな夢問題を発見し,処理しています.
片足で知ることMacOS 10.14.4 では
発明者 量化 - 微かな夢Mac OSX を使っていますか?
片足で知ること私は conda でpython バージョンを管理しています.私はfmz のpython バージョンをダウンロードしていることを確認しました. ローカルにもあります. しかし,公式サイトでpython3 をサポートしていることが書かれていますが,試してみると問題が発生しました. 私はコードを間違えましたか?
発明者 量化 - 微かな夢Pythonのバージョンが複数ある場合は,このパッケージがインストールされている場所を確認してください.
発明者 量化 - 微かな夢投稿が更新されました. 投稿の最後に示した例を参照してください.
発明者 量化 - 微かな夢mainは書き直し,直接呼び出します.
スキオジアン https://github.com/fmzquant/backtest_python/issues/4,看看这个有没有帮助
発明者 量化 - 微かな夢誤った情報は,スクリーンショットで確認できます.
スキオジアンこの例のコードがBTC_USDTに変更された場合,エラーになります.
発明者 量化 - 微かな夢取引先の評価は,どの取引所が評価するかを決める.
発明者 量化 - 微かな夢誤った位置をチェックします. 誤った位置を見てください.
発明者 量化 - 微かな夢FMZは,協議構造を採用し,プログラム・プロセスの管理力を少し強め,策略を書くのに柔軟性がある.
発明者 量化 - 微かな夢'''バックテスト スタート: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 期間: 15m exchanges: [{"eid:"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] "と答えました これは
発明者 量化 - 微かな夢ブログのページを編集しました
発明者 量化 - 微かな夢この模擬アカウントの設定は,クラスに書かれている場合,読み込みができないかです.
そうそうこの配置は正しいはず. なぜ class に引用を書き込むことができないのか?
そうそう口座のデータを復元する,以下の何行ですか? グローバル関数 main で正規の引用があります. 授業で間違いを犯しました. '''バックテスト スタート: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 期間: 15m exchanges: [{"eid:"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] "と答えました botvsからインポート * task = VCtx ((__doc__) # initialize backtest engine from __doc__ バックテストエンジンの初期化
発明者 量化 - 微かな夢` ` ゲートアカウント ((self): r = _ACCOUNT (※) ret = self.lib.api_Exchange_GetAccount ((self.ctx, self.idx, ctypes.byref ((r)) について) if ret == API_ERR_SUCCESS: このページは, 返信 r.toObj ((() エリフ ret == API_ERR_FAILED: 返信する EOF (英語) ` ` API_Exchange_GetAccount のインターフェースのように,エラーメッセージが表示され,EOFを実行します. 復元エンジンを使用するときに設定された復元アカウントのデータがありますか?
発明者 量化 - 微かな夢Pythonのリバリーにパッケージ化して,ネイティブのPythonにリバリーを実行できるようにします.
発明者 量化 - 微かな夢通信は行われ,復習時にデータ要求があるが,ローカルで実行されている復習システムで実行される. ` ` '''バックテスト スタート: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 期間: 15m exchanges: [{"eid:"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] "と答えました botvsからインポート * task = VCtx ((__doc__) # initialize backtest engine from __doc__ バックテストエンジンの初期化 print exchange.GetAccount (プリント エクスチェンジ.ゲット アカウント) print exchange.GetTicker (プリント交換.ゲットティッカー) print task.Join ((() #print backtest result プリントタスク プリントタスク プリントタスク ` ` このコードの段落は,実行時に復習システムの機能を呼び出すために,復習システムがリバリーに包まれているようなポリシーのようなものです. 上記の '' 'backtest...'''の内にあるのは,BotVS ポリシーで生成される復習パラメータ設定である.