
Dirección de estrategia: https://www.fmz.com/strategy/345
En este artículo, practicaremos la portabilidad de una estrategia de JavaScript simple. Al trasplantar estrategias, se familiarizará más con las llamadas de la interfaz de la Plataforma de Comercio Cuantitativo de Inventor y comprenderá las ligeras diferencias entre los diferentes lenguajes al desarrollar estrategias en la plataforma. De hecho, la diferencia entre la estrategia de la versión de JavaScript y la versión de Python La estrategia es muy pequeña porque las llamadas de interfaz son básicamente las mismas.
Citando la versión en JavaScript de las instrucciones:
Para ello es necesario abrir una posición. Por ejemplo, si la cuenta tiene 5.000 yuanes y 1 moneda, si el valor de la moneda es mayor que el saldo de la cuenta de 5.000 y la diferencia de precio supera el umbral, por ejemplo, la moneda ahora vale 6.000 yuanes, luego venda (6.000-5.000)/6.000. /2 monedas, significa que la moneda se ha apreciado, cambie el dinero nuevamente, si la moneda se deprecia, por ejemplo, a 4000 yuanes, compre (5000-4000)/4000/2 monedas, volver a comprar algunas cuando la moneda caiga, si vuelve a subir, la venderé de nuevo, como un equilibrio, con diferentes coberturas en ambos lados, por eso lo llamé una estrategia equilibrada.
El principio de la estrategia es muy simple y la versión JavaScript del código no es larga, solo más de 70 líneas. Trasplantado a la estrategia del lenguaje Python con una sintaxis más concisa, el código es más corto y muy adecuado para que lo aprendan los principiantes. Hay muchos códigos compartidos por los desarrolladores en la plataforma de negociación cuantitativa de Inventor, y el lenguaje admiteJavaScript/C++/PythonEtc., por lo que dominar un lenguaje de desarrollo más no solo es útil para el aprendizaje, la investigación y las estrategias de desarrollo, sino que también le permite familiarizarse más con las distintas interfaces API de la plataforma.
'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''
InitAccount = None
def CancelPendingOrders():
ret = False
while True:
orders = _C(exchange.GetOrders)
if len(orders) == 0 :
return ret
for j in range(len(orders)):
exchange.CancelOrder(orders[j].Id)
ret = True
if j < len(orders) - 1:
Sleep(Interval)
return ret
def onTick():
acc = _C(exchange.GetAccount)
ticker = _C(exchange.GetTicker)
spread = ticker.Sell - ticker.Buy
diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2
ratio = diffAsset / acc.Balance
LogStatus("ratio:", ratio, _D())
if abs(ratio) < threshold:
return False
if ratio > 0 :
buyPrice = _N(ticker.Sell + spread, ZPrecision)
buyAmount = _N(diffAsset / buyPrice, XPrecision)
if buyAmount < MinStock:
return False
exchange.Buy(buyPrice, buyAmount, diffAsset, ratio)
else :
sellPrice = _N(ticker.Buy - spread, ZPrecision)
sellAmount = _N(-diffAsset / sellPrice, XPrecision)
if sellAmount < MinStock:
return False
exchange.Sell(sellPrice, sellAmount, diffAsset, ratio)
return True
def main():
global InitAccount, LoopInterval
InitAccount = _C(exchange.GetAccount)
LoopInterval = max(LoopInterval, 1)
while True:
if onTick():
Sleep(1000)
CancelPendingOrders()
Log(_C(exchange.GetAccount))
Sleep(LoopInterval * 1000)
El código comienza con
'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''
Es la configuración del backtest, lo que significa que la configuración del backtest (configuración) se guarda en forma de código y el backtest se configura automáticamente de acuerdo con esta configuración. Esta parte se puede eliminar. Si se elimina, deberá configurar manualmente la información de configuración de la prueba retrospectiva en la página de prueba retrospectiva durante la prueba retrospectiva. Referencia: https://www.fmz.com/bbs-topic/859
Los parámetros de esta estrategia son exactamente los mismos que los de la versión de JavaScript. El código de la estrategia también se trasplanta frase por frase y la estructura del programa no ha cambiado. Puedes compararlas frase por frase para ver las diferencias entre las estrategias escritas en diferentes idiomas.
Configuración de parámetros

Estadística


Dirección de estrategia: https://www.fmz.com/strategy/183374
La estrategia es solo de referencia, para realizar pruebas retrospectivas y pruebas. Si te interesa, puedes optimizarla y actualizarla.