FMZ veröffentlicht die Python-Einheimische Retrieval Engine

Schriftsteller:Kleine Träume, Erstellt: 2018-04-13 09:48:31, Aktualisiert: 2019-08-19 16:30:05

FMZ veröffentlicht die Python-Einheimische Retrieval Engine

FMZ backtest engine python Paket FMZ Retesting Engine Python-Bibliothek Unterstützung für Python 2 und Python 3, Unterstützung für Windows, Linux, Mac Unterstützt Python 2 und Python 3, unterstützt Windows, Linux, Apple Mac OS

installieren

Installation In der Befehlszeile geben Sie folgende Befehle ein:

pip install https://github.com/fmzquant/backtest_python/archive/master.zip
  • Bitte beachten: Bei der Installation des Apple Mac-Systems wird bei Sicherheitsbeschränkungen der Sudo-Befehl vor dem Pip-Befehl hinzugefügt. Der gesamte Installationsbefehl erfordert die Eingabe eines Systemcodes.

Ein einfaches Beispiel

Ein einfaches Beispiel

'''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. Der Konfigurationsstring kann automatisch generiert werden, indem die Backtest-Konfiguration in der Strategie-Edit-Seite gespeichert wird. Die Konfigurationsstring kann automatisch generiert werden, indem die Retrieval-Konfiguration in der Policy-Editing-Interface gespeichert wird.

meta

Dokumentation

API-Dokumentation: (d.h. Dokumentation, die Funktionen wie GetAccount im Beispiel aufruft)

Ein einfacher Überblick über den Python-Code:

'''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 对象 显示回测结果
  • - Das ist nicht nötig.

    是两个下划线。__doc__用来访问模块,类声明或者函数的声明中第一个未被赋值的字符串,
    可以是被""" ""","" "",' ',括起来的,作用就是把 代码中 '''backtest   ...  ''' 的回测配置信息  传入 VCtx 类构造函数构造对象。
    
  • Die Funktion Log, GetTicker und GetTicker werden von den Benutzern der App verwendet.

    # 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 (() zeigt folgende Code-Ausgabe an:
    {'Balance': 3.0, 'Stocks': 0.0, 'FrozenBalance': 0.0, 'FrozenStocks': 0.0}
    
    • Log (("\n" Aufruf Log") 、 Log (("Aufruf exchange.GetTicker() ":", exchange.GetTicker())

    Der Inhalt der Ausgabe ist in der Struktur print task.Join ((() output data:

    {
        "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
    }
    
  • Wie man eine Strategie verwendet, um in einer lokalen Retargeting-Engine zu retargeten

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

Mehr

- Was ist los?/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py:793: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS fügt signifikanten Overhead hinzu und wird in Zukunft standardmäßig deaktiviert. Set it to True or False to suppress this warning. Warnings.warn ((FSADeprecationWarning)) Traceback (letzter letzter Anruf): File "/Users/taoxing/Desktop/quant/trading_api_study/fmz/fmz_extend_api_demo/app.py", Linie 152, in db.create_all (() Datei "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python 3.8/site-packages/flask_sqlalchemy/__init__.py", Linie 963, in create_all Selbst._execute_for_all_tables (app, bind, 'create_all') Die Datei "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", Linie 955, in _execute_for_all_tables Op (bind=self.get_engine) (app, bind), **extra) Datei "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python 3.8/site-packages/flask_sqlalchemy/__init__.py", Linie 896, in get_engine return connector.get_engine (() Datei "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python 3.8/site-packages/flask_sqlalchemy/__init__.py", Linie 556, in get_engine Selbst._app, Info, Optionen Datei "/Users/taoxing/opt/anaconda3/envs/ai4f/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", Linie 861, in apply_driver_hacks Info.database = os.path.join ((app.root_path, info.database) ist eine App, die für die Verwendung in der App verwendet wird. AttributeError: kann Attribut nicht setzen Was ist falsch, bitte Gott um Führung!

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

GwandungleiAber es gibt nur einen kleinen Teil der Daten, die auf der Festplatte wiedergegeben werden, und welche Einstellungen können optimiert werden, um mehr Daten auf der Festplatte zu erhalten? /upload/asset/105f604eaceb0d3928a90.png /upload/asset/1066714d9a32c82eab7f1.png

GwandungleiHallo, ich möchte ein Token-Handelspaar husd/usdt verwenden, und ich habe es mit exchange.IO (currency, HUSD_USDT) ausprobiert.

Jeden Tag eine schlanke ModeDie Ergebnisse dieser Tests sind unbegreiflich, wie kann man sie visualisieren?

GwandungleiBitte, Exchange kann das nicht auf Windows lösen. Danke.

- Was ist los?Wenn es nur wenige Paare gibt, die das Retesting-System unterstützt, erlaubt das Open-Source-Projekt es den Entwicklern, einige zu integrieren?

1058715329Wann kann die lokale Parameteroptimierung unterstützt werden?

Ein Blatt WissenIch habe die Bibliothek von fmz heruntergeladen, aber beim Benutzen einen Fehler erlitten und konnte nicht finden, wo das Paket ist. /upload/asset/1042a0deeb6624376f8fb.png

WeisWie setzt man den Tick-Modus ein? Die Standardfunktion sieht so aus, als würde man den Tick auf der Analogplatte verwenden. Wie wechselt man zum Tick auf der echten Platte?

SchieferOder nicht, wo in diesem Beispiel die Main-Funktion einer Strategie stehen sollte.

SchieferKann ich nur mit LTC_BTC überprüfen? Ich habe den BTC_USDT-Prozess geändert und er gab einen Fehler.

- Ich weiß.Soll print exchange.GetTicker in Python 3 als print (exchange.GetTicker))) geschrieben werden?

YxybyqDie Plattform-Rückmeldung ist in Ordnung, die lokale Wiedermeldung ist häufig fehlerhaft

SchleimIn fmz wird die main-Funktion selbst geschrieben, wobei man sieht, dass die meisten Strategien die while True-Funktion selbst schreiben und dann immer wieder aufrufen. Aber wenn man die native Retrieval-Engine von Python verwendet, lässt die while True-Funktion das Programm laufen und kann nicht innerhalb der von __doc__ angegebenen Start- und Endzeiten aufhören und die Log-Ausgabe geben. Außerdem sehe ich auf anderen Quantitative Plattformen, dass es im Allgemeinen nur darum geht, dass bestimmte Funktionen vom Entwickler geschrieben und von der Plattform zurückgerufen werden. fmz erlaubt es, die Main-Input direkt zu schreiben.

SchleimWie schreibt man die Interaktions-Eingabe-Variablen im Code in _doc__ oder als Parameter?

SchleimDer Code wurde in fmz geändert, und der Beispielcode in der Dokumentation wurde umbenannt.

Ja, ja.Das ist normal. Wenn man in einer Klasse einen Fehler macht, dann gibt es einen Fehler. Datei "D:/workspace/strategy/strategy_001.py", Linie 101, in main account = self._exchange.GetAccount (() Datei "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botvs.py", Linie 716, in GetAccount EOF ((() File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botvs.py", line 569, in EOF Erhöhen EOFError

ObersteWas ist das für ein Ding?

Lizza, bitte.Ich bin mir nicht sicher, wie das funktioniert, aber muss die lokale Wiederholung auch mit der botvs-Plattform kommunizieren?

Kleine TräumeVersuchen Sie es mit dem neuesten fmz-Paket.

Kleine TräumeDer Host ist kostenlos, aber die Ein-Key-Deployment ist die automatische Vermietung von Ali Cloud-Servern, die Kosten für den Server sind. Eine Ein-Key-Deployment ist gut, egal ob für die reale oder die simulierte Festplatte.

GwandungleiDas ist klar, es ist der Betreuer, der bezahlt, der Roboter kann wählen, ob er WexApp für Tests betreibt oder ob er an einer echten Börse in der Praxis handelt, richtig?

Kleine TräumeEin Deployment Host, der auf einem Ali Cloud-Server bereitgestellt wird, ist kostenpflichtig und wird aus Ihrem Kontostand berechnet. Der Roboter läuft nur mit der WexApp-Disk, die Kosten für den Roboter sind nicht berechnet und die Kosten für einen Deployment Host Server sind unabhängig.

GwandungleiDas heißt, mit einer Taste können Sie einen Server installieren, wählen Sie WexApp, Roboter und eine Analogie-Börse aus und testen Sie die Analogie, oder?

Kleine TräumeDer Schlüssel zur Bereitstellung eines Mietservers ist eine andere zusätzliche Gebühr. Die Kosten für die Roboter sind unabhängig von der tatsächlichen Kosten, die mit der WexApp-Disk verbunden sind.

GwandungleiEine Taste Mietverwalter, kostenlos für die WexApp-Börse? /upload/asset/1066e4b56fa103356dbc1.png

Kleine TräumeWexApp ist eine kostenlose FMZ-Analogie.

Kleine TräumeDas ist unhöflich.

Kleine TräumeDie Daten auf dem Datentellerniveau sind relativ groß, und die Einstellungen auf dem Diagramm sind optimal.

GwandungleiFür die jüngsten Zeiträume ist es jetzt ok, exchange.SetCurrency (BTC_USDT) zu installieren.

Kleine TräumeVersuchen Sie es mit dem jüngsten Zeitfenster.

GwandungleiIch bin der Meinung, dass es eine gute Idee ist, das zu tun, aber es ist nicht einfach. In der Code-Einstellung ist die Exchange.SetCurrency (("BTC_USDT") Aber die Anweisungen für die Abonnementart scheiterten BTC_USDT_OKEX Anzeige oder nichts, sofort abmelden

GwandungleiIch danke Ihnen.

Kleine TräumeDie Daten des FMZ-Datenzentrums, die für Plattform-Linien-Rückmessungen und lokale Rückmessungen verwendet werden, bieten eine begrenzte Anzahl von Transaktionspaaren, nicht aber alle Transaktionspaare.

GwandungleiWerden wir diese Transaktionen mit echten Transaktionen machen?

Kleine TräumeDas Retesting-System verfügt derzeit nicht über Daten zu diesem Transaktionspaar.

Kleine TräumeDie Re-test-Ergebnisse sind in Datenform, wenn man sie visualisieren möchte, muss man selbst die Code-Auswertung schreiben. Wenn nicht, kann man ein Online-Re-test-System verwenden.

GwandungleiA5: = MA ((C,5); A10: = MA (C,10); Winkel: IF (CROSS) (A5, A10), ATAN (A5/REF) (A5, 1) -1) * 100) - ATAN (A10/REF) (A10, 1) -1) * 100), 0*180/3.1416; Und wenn wir diese Formel gefunden haben, dann wissen wir nicht, wie REF funktioniert.

Kleine TräumeDas ist nach Bedarf, in der Strategie berechnet, und die Formel kann in Baidu gesucht werden.

GwandungleiWie berechnen Sie bitte Macd Goldfork\Todfork-Winkel? Gibt es eine Berechnungsformel?

GwandungleiKann ich in pycharm importieren, aber wie kann ich im Editor importieren?

Kleine TräumeDies ist eine feste K-Linienbeginnszeit, die mit einer K-Linien-Synthese von einer Stunde berechnet werden kann, wenn eine Tages-K-Line, die von Null beginnt, benötigt wird.

GwandungleiKann ich fragen, ob die Code-Schließzeit und die Wiederholungszeit gleich 8:00 Uhr Peking-Zeit sind? Wenn die Schließzeit nicht um 8:00 Uhr ist, bitte fragen Sie mich, wie man das einstellt, danke /upload/asset/1067eabe09e92d1610d71.png

Kleine TräumeEinige Beispiele für Strategien finden Sie im Strategie-Platz, und wenn Sie alles verstehen, können Sie sich einfach mit einfachen Strategien beschäftigen.

GwandungleiBitte, ich habe mein Grundlagenmaterial, die FMZ-Anwendungsmethoden und die API-Dokumentation gelesen.

Kleine TräumeDas ist unhöflich.

GwandungleiIch danke Ihnen.

Kleine TräumeDas kann direkt auf der Befehlszeile ausgeführt werden.

GwandungleiDer Code, den ich in einer.py-Datei ausgeführt habe, muss in Cccxt eingefügt werden, sonst kann Exchange ihn nicht erkennen. Das Programm kann in Python Consle editiert werden.

Kleine TräumeIch habe den Code, der direkt den Befehl ausführt.

Gwandunglei/upload/asset/106d6ff1919bdac419875.png Ich habe das Problem, dass ich nicht in der Lage bin, die Exchange zu importieren, die Ccxt verwendet, und die Fmz benutzt Ccxt?

Kleine TräumeIch habe es gerade getestet: Der Dateiname ist testBackTest Ich weiß nicht. Von fmz importieren * Task = VCtx (('''Backtest Start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 Periode: 15 m [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] Das ist nicht wahr. #createbacktest Print (exchange.GetAccount) Print (exchange.GetTicker) ist eine Website, die sich mit der Veröffentlichung von GetTicker beschäftigt. Das ist nicht wahr. /upload/asset/16bea6055e58a9ef7d5c.png

Kleine TräumeIch habe gerade einen Test heruntergeladen und ich möchte das neueste Fmz Python Paket ausprobieren.

Gwandunglei/upload/asset/1068d63bc6203599fc1c8.png Die Initialization wurde geändert, aber exchange, Log und so weiter nicht erkannt

Kleine TräumeIch weiß nicht. Von fmz importieren * Task = VCtx (('''Backtest Start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 Periode: 15 m [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] Das ist nicht wahr. # Erstellen eines Umfeldes für Rückmeldungen Ich weiß nicht. Das ist ein einfaches Verfahren, um die Informationen zu installieren, wie sie beim Online-Review konfiguriert sind.

GwandungleiIch bin der Meinung, dass es eine gute Idee ist, das zu tun, aber es ist nicht möglich. Exchange ist nicht erkannt, fmz ist bereits in Python installiert.

Kleine TräumeSiehe hier ein Screenshot der Fehlermeldung.

Kleine TräumeDas ist vorübergehend nicht möglich, da die Rückmessdaten von FMZ stammen. Allerdings ist der Code open source und kann beliebig geändert und ersetzt werden.

Kleine TräumeIch weiß nicht. /* Backtest Start: 2019-09-21 00:00:00 end: 2019-10-20 00:00:00 Periode: 1h Es gibt auch eine Reihe von anderen Anwendungen, bei denen es sich um die Verwendung von Bitfinex handelt. Modus: 1 */ Ich weiß nicht. Über die Einstellung ``mode `` in der Konfigurationsinformationen, die auf der Rückholseite gesetzt werden kann, und dann direkt auf der Politikeditorseite gespeichert wird, um die Rückholseinstellung auf die Konfigurationsinformationsstring zu erhalten.

NachträglichWas ist das für eine Frage?

ZweiJa, das stimmt.

XenidDie Spitze

Kleine TräumeNun, diese Aufzeichnung ist momentan nicht unterstützt.

Ein Blatt WissenDas ist gut, danke.

Kleine TräumeDas Problem wurde gefunden und wird bearbeitet.

Ein Blatt WissenJa, Mac OS 10.14.4

Kleine TräumeIst Ihr Betriebssystem Mac OSX?

Ein Blatt WissenIch bin mit conda für die python-Version verantwortlich, ich bestätige, dass ich die python-Version von fmz heruntergeladen habe, die vor Ort auch verfügbar ist. Aber ich habe auf der Website gesehen, dass sie die Unterstützung für python3 unterstützt, aber ich habe das Problem, als ich es versuchte.

Kleine TräumeWenn Sie mehrere Python-Versionen haben, überprüfen Sie, wo das Paket installiert ist.

Kleine TräumeDer Beitrag wurde aktualisiert und Sie können sich das Beispiel am Ende des Artikels ansehen.

Kleine TräumeDie main-Funktion ist geschrieben und direkt aufgerufen.

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

Kleine TräumeDie falsche Information, zum Beispiel, ist in der Screenshot zu sehen.

SchieferDas ist der Fall, wenn man den Beispielcode in BTC_USDT umwandelt, dann ist es falsch.

Kleine TräumeDie Frage ist nur, welche Börse sich entscheidet.

Kleine TräumeWenn man sich die Fehlermeldung genau ansieht, sieht man, dass sie falsch ist.

Kleine TräumeFMZ verwendet eine Beratungsarchitektur, die eine stärkere Kontrolle der Prozesse und eine größere Flexibilität bei der Erstellung von Strategien bietet.

Kleine Träume'' 'Backtest Start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 Periode: 15 m [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] Das ist '' Das sind:

Kleine TräumeIch habe es geändert.

Kleine TräumeDie Simulations-Konto-Konfiguration wird angezeigt, wenn sie in der Klasse "Nicht geladen" steht.

Ja, ja.Das sollte die richtige Konfiguration sein. Warum kann ich keine Class-Referenzen schreiben?

Ja, ja.Ich habe das Konto überprüft, die folgenden Zeilen? Es gibt eine normale Referenz in der globalen Funktion main. Aber in der Klasse macht man einen Fehler. '' 'Backtest Start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 Periode: 15 m [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] Ich habe es nicht gesagt. von botvs import * Task = VCtx ((__doc__) # initialize backtest engine from __doc__

Kleine TräumeIch weiß nicht. Def GetAccount ((selbst): r = _ACCOUNT Ret = self.lib.api_Exchange_GetAccount ((self.ctx, self.idx, ctypes.byref(r)) Wenn ret == API_ERR_SUCCESS: zurück r.toObj Elif ret == API_ERR_FAILED: Keine Rückkehr EOF ((() Ich weiß nicht. Wenn man sich den folgenden Code anschaut, sieht es so aus, als wäre dies eine DLL-Interface, die eine Fehlermeldung enthält, die zeigt, dass weder ein Anruf erfolgreich noch ein Anruf fehlgeschlagen zurückgegeben wurde, und dann EOF ausführt.

Kleine TräumeDas bedeutet, dass man das Retweet-System in eine Python-Bibliothek einpackt, in der die native Python die Retweet-Richtlinien durchführen kann.

Kleine TräumeEs gibt eine Kommunikation, bei der die Daten angefordert werden, aber die Anmeldungssystemen, die vor Ort ausgeführt werden, werden ausgeführt. Ich weiß nicht. '' 'Backtest Start: 2018-02-19 00:00:00 end: 2018-03-22 12:00:00 Periode: 15 m [{"eid":"OKEX","currency":"LTC_BTC","balance":3,"stocks":0}] Das ist '' von botvs import * Task = VCtx ((__doc__) # initialize backtest engine from __doc__ Print exchange.GetAccount ist ein Print exchange.GetTicker (englisch) print task.Join ((() # print backtest result Die Ergebnisse der Print-Tasks werden im Folgenden angezeigt. Ich weiß nicht. Dieser Code ist ähnlich wie eine Strategie, bei der das Retestsystem in eine Bibliothek gepackt wird, die beim Ausführen von Tests die Funktionen des Retestsystems aufruft. Das oben genannte '' 'Backtest... '' ist die Wiederholungsparameter-Einstellung, die in der BotVS-Politik für die Wiederholungsseite generiert werden kann.