Стратегия баланса единой платформы Python

Автор:Лидия., Создан: 2022-12-02 21:38:52, Обновлено: 2023-09-20 11:14:48

img

Версия JavaScript

Адрес стратегии:https://www.fmz.com/strategy/345

В этой статье мы будем практиковать перенос простой стратегии JavaScript. Благодаря переносу стратегии мы сможем лучше ознакомиться с вызовом интерфейса FMZ Quant Trading Platform и понять незначительные различия между различными языками в стратегии разработки платформы. На самом деле, разница между версией JavaScript и версией Python очень мала, потому что вызовы интерфейса в основном одинаковы.

Описание стратегии

Описание приведено из версии JavaScript:

Это требует открытия позиции. Например, если на счете есть 5000 юаней и одна валюта, если стоимость валюты больше, чем баланс на счете 5000 юаней, и разница в цене превышает пороговое значение, например, если валюта сейчас стоит 6000 юаней, то продавайте (6000-5000)/6000/2 валюты, что указывает на то, что валюта подорожала, и мы можем конвертировать деньги обратно. Если валюта обесценилась, например, 4000 юаней, то мы покупаем (5000-4000)/4000/2 валюты. Если валюта снижается, покупайте некоторые. Если она снова растет, снова продавайте, как и баланс, у двух сторон разные хеджировки, поэтому я называю это стратегией равновесия.

Принцип стратегии очень прост. Код версии JavaScript не длинный, всего более 70 строк. Стратегия языка Python с более лаконичной грамматикой трансплантируется, а код намного короче, что очень подходит для обучения новичков.JavaScript/C++/PythonТаким образом, освоение большего количества языков разработки не только полезно для обучения, исследований и стратегий разработки, но и знакомо с различными интерфейсами API платформы.

Кодекс стратегии

'''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)

Код начинается с:

'''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}]
'''

Это относится к конфигурации бэкстестинга, что означает, что конфигурация бэкстестинга (настройки) сохраняется в виде кода и настраивается автоматически в соответствии с настройкой во время бэкстестинга. Эта часть может быть удалена. Если она удалена, нам нужно установить информацию конфигурации бэкстестинга на странице бэкстестинга вручную. Ссылка:https://www.fmz.com/bbs-topic/859

Параметры этой стратегии полностью согласуются с версией JavaScript. Код стратегии также трансплантируется предложение за предложением. Структура программы не изменилась. Вы можете сравнить стратегии, написанные на разных языках предложение за предложением.

Обратное тестирование

Конфигурация параметров

img

Статистика

img img

Адрес стратегии:https://www.fmz.com/strategy/183374

Стратегия предназначена только для ссылки, обучения и обратного тестирования.


Связанные

Больше