FMZ melancarkan enjin pengesanan asli python

Penulis:Mimpi kecil, Dicipta: 2018-04-13 09:48:31, Dikemas kini: 2019-08-19 16:30:05

FMZ melancarkan enjin pengesanan asli python

FMZ backtest engine python package Perpustakaan python enjin pengukuran FMZ support python2 and python3, support Windows, Linux, Mac Menyokong python2 dan python3, menyokong sistem windows, sistem Linux, sistem Mac OS Apple

memasang

Pemasangan Dalam bar arahan, masukkan arahan berikut:

pip install https://github.com/fmzquant/backtest_python/archive/master.zip
  • Perhatikan: Apabila memasang sistem Apple Mac, jika terdapat sekatan keselamatan, anda perlu menambahkan perintah sudo sebelum perintah pip, dan perintah pemasangan keseluruhan akan diminta memasukkan kata laluan sistem sebelum dijalankan.

contoh mudah

Contoh mudah

'''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. String konfigurasi boleh dihasilkan secara automatik melalui penyusunan semula konfigurasi yang disimpan dalam antara muka penyuntingan dasar

meta

dokumentasi

Dokumen API: (iaitu dokumen yang memanggil fungsi seperti GetAccount dalam contoh)

Di sini, anda boleh melihat gambar di bawah.

'''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 类构造函数构造对象。
    
  • Mengubah kod ujian, lihat bagaimana fungsi Log, GetTicker tertentu dipanggil.

    # 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 (()) output kod yang dipaparkan adalah:
    {'Balance': 3.0, 'Stocks': 0.0, 'FrozenBalance': 0.0, 'FrozenStocks': 0.0}
    
    • Log (("\nLog dipanggil") 、 Log (("Log dipanggil exchange.GetTicker))) ":", exchange.GetTicker)))

    Kandungan output adalah dalam struktur output data 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
    }
    
  • Cara menggunakan dasar untuk mengulang semula dalam enjin pengulangan tempatan

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

Lebih lanjut

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. Set it to True or False to suppress this warning. Warnings.warn ((FSADeprecationWarning)) Traceback (terakhir panggilan terkini): File "/Users/taoxing/Desktop/quant/trading_api_study/fmz/fmz_extend_api_demo/app.py", baris 152, dalam db.create_all ((() File "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", baris 963, dalam 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", baris 955, dalam _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", baris 896, dalam get_engine return connector.get_engine (dalam bahasa Inggeris) File "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", baris 556, dalam 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", baris 861, dalam apply_driver_hacks info.database = os.path.join ((app.root_path, info.database) AttributeError: tidak boleh menetapkan attribute Di mana yang salah, mohon bimbingan Tuhan!!!

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

GuanyuwangleiTetapi hanya ada sedikit data yang diuji semula pada cakera sebenar, apakah tetapan yang boleh dioptimumkan untuk mendapatkan lebih banyak data cakera sebenar? /upload/asset/105f604eaceb0d3928a90.png /upload/asset/1066714d9a32c82eab7f1.png

GuanyuwangleiHai, saya ingin menggunakan pasangan dagangan token cash husd/usdt, saya telah mencuba exchange.IO (("currency", "HUSD_USDT"), exchange.IO (("currency", "HUSD/USDT"), exchange.IO (("currency", "HUSDUSDT"), bukan menjalankan keluar atau jenis langganan gagal, sila tanyakan penulisan yang betul? terima kasih

Hari demi hari.Hasil ujian ini tidak dapat difahami, bagaimana untuk dilihat?

GuanyuwangleiTolong, saya tidak dapat mencari penyelesaian di sistem windows, terima kasih.

koshiyituoshiAdakah projek sumber terbuka ini membenarkan pemaju untuk menambah beberapa pasangan transaksi?

1058715329Bilakah anda boleh menyokong pengoptimuman parameter tempatan?

Berjaya@cilokcilom. terima kasih. adakah anda mempunyai templat python3? saya telah memuat turun perpustakaan fmz, tetapi ketika menggunakannya, saya mendapat kesilapan dan tidak dapat mencari di mana pakej tersebut terletak. /upload/asset/1042a0deeb6624376f8fb.png

kamiBagaimana untuk menetapkan mod Tick? Secara lalai kelihatan seperti menggunakan Tick peringkat analog, bagaimana untuk beralih ke Tick peringkat cakera sebenar

XiaojianJika tidak, di mana fungsi utama untuk satu strategi harus diletakkan dalam contoh ini?

XiaojianAdakah ujian semula hanya boleh dilakukan dengan LTC_BTC?

teddyAdakah print exchange.GetTicker ()) harus ditulis sebagai print (exchange.GetTicker ()) dalam Python 3?

yxybyqTidak ada masalah dengan penyesuaian platform, penyesuaian tempatan sering membuat kesilapan.

liputDalam fmz adalah menulis sendiri fungsi utama, melihat kebanyakan dasar adalah menulis sendiri sementara True, dan kemudian terus berputar memanggil dasar. Tetapi apabila menggunakan enjin semula semula asli Python, sementara True akan membiarkan program berjalan sepanjang masa, tidak dapat berhenti berjalan pada masa permulaan dan akhir yang ditetapkan oleh __doc__, dan memberikan output Log. Apa yang harus dilakukan? Di samping itu, saya melihat pada platform kuantiti yang lain yang biasanya hanya menulis fungsi yang ditetapkan oleh pembangun dan ditarik balik oleh platform. fmz membenarkan penulisan masuk utama secara langsung, adakah ada kelebihan atau pertimbangan reka bentuk atau seni bina?

liputVariabel input interaktif dalam kod, bagaimana ia ditulis dalam __doc__, atau input sebagai parameter?

liputKod telah ditukar kepada fmz, contoh kod dalam dokumen perlu ditukar kepada nama pakej.

YaYamain (() adalah normal Jika anda ingin membuat pertukaran panggilan dalam kelas, anda perlu membuat pertukaran panggilan dalam kelas. File "D:/workspace/strategy/strategy_001.py", baris 101, dalam utama account = self._exchange.GetAccount ((() File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botvs.py", baris 716, dalam GetAccount EOF ((() File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botvs.py", baris 569, dalam EOF raise EOFError ((()

topscienApakah fungsi benda ini? Saya tidak faham.

LizzaSaya tidak faham bagaimana ia digunakan, adakah penyesuaian tempatan ini juga memerlukan komunikasi dengan platform botvs?

Mimpi kecilCuba gunakan pakej fmz terkini.

Mimpi kecilHost adalah percuma untuk digunakan, tetapi penyebaran satu butang adalah penyewaan automatik pelayan Ali Cloud, dengan bayaran yang dikenakan oleh pelayan. Satu butang adalah baik untuk digunakan, sama ada untuk membuat cakera sebenar atau cakera analog.

GuanyuwangleiYang jelas, adalah bahawa pengurus membayar, robot yang menjalankan wexapp boleh memilih untuk menguji, atau anda boleh memilih untuk berdagang secara langsung di bursa sebenar, betul?

Mimpi kecilSeorang hos yang digunakan, yang digunakan di pelayan awan Ali, adalah berbayar dan akan dikenakan bayaran dari baki akaun anda. Bot yang dijalankan hanya menggunakan wexApp analog, kos bot tidak dikenakan, dan kos pelayan hos yang digunakan tidak berkaitan.

GuanyuwangleiIni bermakna, dengan satu butang, anda boleh menggunakan pelayan, pilih WexApp, bot dan pertukaran analog, dan menguji kesan analog, bukan?

Mimpi kecilIni adalah satu lagi bayaran tambahan. Tidak ada kaitan dengan kos sebenar bot, menggunakan wexApp Analog hanya mengatakan bahawa bot berjalan secara percuma (robot mata wang digital akan dikenakan sebarang objek pertukaran bukan WexApp Analog yang ditambahkan).

GuanyuwangleiSatu butang sewa pengurus, menggunakan bursa wexApp percuma? /upload/asset/1066e4b56fa103356dbc1.png

Mimpi kecilWexApp adalah sebuah aplikasi analog FMZ, percuma.

Mimpi kecilTidak sopan.

Mimpi kecilPengukuran semula data pada tahap rak sebenar adalah lebih besar, dan tetapan di atas sudah menjadi yang terbaik.

GuanyuwangleiUntuk jangka masa yang lebih baru, seting untuk pasangan perdagangan ok, exchange.SetCurrency (("BTC_USDT"), boleh berdagang secara langsung, terima kasih banyak.

Mimpi kecilCuba tukar tempoh masa terkini.

Guanyuwanglei/upload/asset/1063627010637fee333ad.png Setup exchange.SetCurrency dalam kod seperti ini (("BTC_USDT") Tetapi isyarat biasa untuk langganan jenis gagal BTC_USDT_OKEX langganan atau tidak ada yang ditunjukkan, keluar terus

GuanyuwangleiTerima kasih.

Mimpi kecilData dari pusat data FMZ yang digunakan oleh mesin pemindaian talian platform dan mesin pemindaian tempatan, yang boleh digunakan pada cakera sebenar, menyediakan data pasangan transaksi yang terhad, tetapi tidak semua pasangan transaksi tersedia.

GuanyuwangleiAdakah transaksi sebenar boleh mendapatkan transaksi ini?

Mimpi kecilSistem pengesanan tidak mempunyai data untuk pasangan transaksi ini buat masa ini.

Mimpi kecilHasil pengesanan adalah bentuk data, jika anda ingin memvisualisasikan, anda perlu menulis kod sendiri untuk menguraikan. Jika tidak, anda boleh menggunakan sistem pengesanan dalam talian.

GuanyuwangleiA5: = MA ((C,5); A10: = MA (C,10); sudut: IF (CROSS) (A5, A10), ATAN (A5/REF) (A5, 1) -1) * 100) - ATAN (A10/REF) (A10, 1) -1) * 100),0) * 180/3.1416; Dan saya tidak tahu bagaimana REF boleh melakukannya.

Mimpi kecilRumus ini dikira mengikut keperluan, dalam strategi, dan formula boleh dicari di Baidu.

GuanyuwangleiSaya ingin tahu bagaimana untuk mengira macd golden fork / mati garpu sudut, adakah ada formula untuk mengira? terima kasih

GuanyuwangleiTolong, import statsmodels dalam editor dasar tidak sah, bolehkah saya mengimport perpustakaan pihak ketiga di mana? Saya boleh mengimport di pycharm, tetapi bagaimana saya mengimport di editor?

Mimpi kecilIni adalah masa permulaan garis K yang tetap, dan jika anda memerlukan garis K hari yang bermula dari titik sifar, anda boleh menggunakan gabungan garis K satu jam.

GuanyuwangleiBoleh saya tanya, apakah waktu penutupan di dalam kod dan waktu penutupan di dalam ulasan adalah 8:00 pagi waktu Beijing? Jika waktu penutupan bukan jam 8:00, sila setkan, terima kasih /upload/asset/1067eabe09e92d1610d71.png

Mimpi kecilContoh strategi boleh didapati di Strategy Square, dan jika anda dapat memahami semuanya, anda boleh menulis beberapa strategi mudah dengan tangan anda.

GuanyuwangleiSaya sudah membaca semua bahan ajar, kaedah FMZ, dan dokumen api, bolehkah saya melihat pengetahuan seterusnya? terima kasih

Mimpi kecilTidak sopan.

GuanyuwangleiTerima kasih.

Mimpi kecilIni boleh dijalankan secara langsung di barisan arahan.

GuanyuwangleiKod ini perlu diimport ke dalam ccxt apabila saya menjalankan fail.py, jika tidak, pertukaran tidak dapat mengenalinya. Dalam penyuntingan Python Consle, ia boleh berjalan dengan baik.

Mimpi kecilTidak perlu, program Python biasa boleh dijalankan. Kod di atas saya adalah perintah langsung untuk menjalankan.

Guanyuwanglei/upload/asset/106d6ff1919bdac419875.png Jika anda ingin mengimport ccxt ke Exchange, anda boleh menggunakan ccxt di dalam fmz?

Mimpi kecilSaya baru sahaja menguji: Nama fail: testBackTest `` dari fmz import * task = VCtx (('''backtest mula: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 tempoh: 15m exchanges: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] ''') # create backtest print ((exchange.GetAccount)) print ((exchange.GetTicker)) `` /upload/asset/16bea6055e58a9ef7d5c.png

Mimpi kecilSaya telah memuat turun versi terbaru dari fmz python package dan cubalah, saya baru sahaja memuat turun versi ujian.

Guanyuwanglei/upload/asset/1068d63bc6203599fc1c8.png Ubah initialization, tetapi exchange, log masih tidak dapat dikenali

Mimpi kecil`` dari fmz import * task = VCtx (('''backtest mula: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 tempoh: 15m exchanges: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] ''') # Mencipta persekitaran untuk mengulas semula `` Dengan cara ini, anda akan dapat menghidupkan semula maklumat seperti yang telah dikonfigurasi semasa mengulas semula secara dalam talian.

Guanyuwanglei/upload/asset/106581e23604bb2d701d8.jpg Exchange tidak dapat diiktiraf, telah memasang pakej fmz di dalam python

Mimpi kecilDi bawah ini adalah rakaman skrin laporan kesalahan.

Mimpi kecilUntuk sementara tidak boleh, kerana data pengukuran semula diperoleh dari FMZ. Walau bagaimanapun, kodnya adalah sumber terbuka, dan anda boleh mengubah atau menggantikan sumber data sesuka hati.

Mimpi kecil`` /* backtest mula: 2019-09-21 00:00:00 end: 2019-10-20 00:00:00 tempoh: 1h Pertukaran: [{"eid:"Bitfinex","currency:"BTC_USD"}] mod: 1 */ `` Dengan menggunakan tetapan, ``mode`` dalam maklumat konfigurasi, anda boleh menetapkannya di halaman retargeting dan kemudian menyimpan tetapan retargeting secara langsung di halaman penyuntingan dasar untuk mendapatkan rentetan maklumat konfigurasi.

SelepasAdakah saya boleh bertanya?

ChujiuYa, betul.

XenidaPuncak

Mimpi kecilBaiklah, catatan ini tidak disokong buat masa ini.

BerjayaBaiklah, terima kasih.

Mimpi kecilKami telah menemui masalah dan sedang mengatasinya.

BerjayaYa, Mac OS 10.14.4

Mimpi kecilAdakah sistem operasi anda Mac OSX?

BerjayaSaya menggunakan conda untuk menguruskan versi python, dan saya mengesahkan bahawa saya telah memuat turun versi python fmz, dan ia juga terdapat di dalam negara. Tetapi saya melihat di laman web bahawa ia menyokong python3, tetapi masalah ini muncul ketika saya cuba. Adakah saya menulis kod yang salah?

Mimpi kecilJika anda mempunyai lebih daripada satu versi python, lihat di mana pakej ini dipasang.

Mimpi kecilPosting ini telah dikemas kini, anda boleh lihat contoh di akhir post.

Mimpi kecilFungsi main ditulis dengan baik, langsung dipanggil dan selesai.

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

Mimpi kecilBerita yang salah, boleh dilihat di bawah ini.

XiaojianIni adalah contoh kod yang berubah menjadi BTC_USDT yang salah.

Mimpi kecilIni bergantung kepada mana bursa yang dipilih untuk mengulas semula.

Mimpi kecilUntuk melihat secara lebih spesifik, lihat di mana mesej kesalahan itu berada.

Mimpi kecilFMZ menggunakan struktur rundingan, yang memberikan sedikit kawalan yang lebih kuat terhadap proses program dan lebih fleksibel dalam menulis strategi.

Mimpi kecil''Backtest mula: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 tempoh: 15m exchanges: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] '' Ini adalah:

Mimpi kecilDi sini, anda boleh melihat beberapa gambar yang berbeza.

Mimpi kecilFile mula dimuat Konfigurasikan akaun simulasi ini, jika ditulis di dalam kelas apakah tidak dapat dimuat.

YaYaPerancangan ini sepatutnya betul. Kenapa tidak boleh menulis rujukan ke dalam kelas?

YaYaPeriksa data akaun anda, apakah beberapa baris di bawah? Ada, ia adalah rujukan normal dalam fungsi global utama. Tetapi anda membuat kesilapan dalam kelas. ''Backtest mula: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 tempoh: 15m exchanges: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] '' daripada botvs import * task = VCtx ((__doc__) # initialize backtest engine from __doc__

Mimpi kecil`` 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 Tiada EOF ((() `` Dengan melihat kod di bawah ini, ia kelihatan seperti API_Exchange_GetAccount ini adalah antara muka DLL, anda akan mendapat mesej ralat yang menunjukkan tiada panggilan yang berjaya atau gagal, kemudian anda akan menjalankan EOF.

Mimpi kecilIni adalah untuk membungkus sistem ulangan ke dalam perpustakaan Python, yang membolehkan Python tempatan menjalankan strategi ulangan.

Mimpi kecilTerdapat komunikasi, permintaan data yang dibuat pada masa ulangan, tetapi sistem ulangan berjalan di tempat. `` ''Backtest mula: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 tempoh: 15m exchanges: [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] '' daripada botvs import * task = VCtx ((__doc__) # initialize backtest engine from __doc__ print exchange.GetAccount (dalam bahasa Inggeris) print exchange.GetTicker (dalam bahasa Inggeris) print task.Join ((() # print backtest result `` Perenggan kod ini menyerupai satu strategi, di mana sistem penyesuaian dibungkus ke dalam sebuah perpustakaan, ujian, dan panggilan fungsi sistem penyesuaian semasa berjalan. ''Backtest... '' di atas adalah tetapan parameter backtest yang boleh dihasilkan pada halaman backtest dasar BotVS.