La dirección de la estrategia:https://www.fmz.com/strategy/345
En este artículo, vamos a practicar una simple política de JavaScript. A través de la política de puesta en práctica, los inventores se familiarizan más con las llamadas de las interfaces de la plataforma de negociación cuantitativa y entienden las ligeras diferencias entre los diferentes idiomas en la política de desarrollo de la plataforma, en realidad, las políticas de la versión de JavaScript y las políticas de la versión de Python son muy pequeñas, ya que las llamadas de la interfaz son básicamente las mismas.
En la versión de JavaScript, se dice:
Esto requiere un almacenamiento, por ejemplo, si la cuenta tiene $ 5,000, y una moneda, si el valor de la moneda es mayor que el saldo de la cuenta de $ 5,000 y la diferencia es mayor que el valor de la moneda, por ejemplo, la moneda ahora vale $ 6,000, se vende, por ejemplo, $ 6,000-5000 / $ 6,000 / 2, lo que significa que la moneda ha subido de valor, cambiar el dinero de nuevo, si la moneda se devalúa, por ejemplo, $ 4,000, comprar $ 5,000-4000 / $ 4,000 / $ 2,000, comprar algo más cuando la moneda cae, si la moneda se desploma, volver a vender, como si fuera un punto de inflexión, una cobertura diferente en ambos lados, así que lo llamo estrategia de equilibrio.
La estrategia es muy simple, la versión de JavaScript del código no es larga, sólo más de 70 líneas. La estrategia del lenguaje Python, más breve, muy adecuada para el aprendizaje de los principiantes, tiene un gran número de desarrolladores de código compartido en la plataforma de comercio cuantitativo de los inventores, el lenguaje de apoyo.JavaScript
/C++
/Python
Por lo tanto, tener un mayor dominio de un lenguaje de desarrollo es útil no solo para aprender, investigar y desarrollar estrategias, sino también para familiarizarse con las interfaces de las 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 se inicia
'''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 de la revisión, lo que significa que la configuración de la revisión (configuración) se guarda en forma de código, y se configura automáticamente de acuerdo con esta configuración cuando se revisa. Fuente de información:https://www.fmz.com/bbs-topic/859
Los parámetros de esta política son perfectamente idénticos a los de la versión de JavaScript, el código de la política también se ha portado por oración, la estructura del programa no ha cambiado y se puede comparar por oración, observando las diferencias entre las políticas escritas en diferentes idiomas.
Configuración de parámetros
Las estadísticas
La dirección de la estrategia:https://www.fmz.com/strategy/183374
Las estrategias son solo para aprendizaje de referencia, pruebas de retrospección y interés para optimizar la actualización.
Las riquezas del cieloQué buena vaca.