Type/to search
8
Follow
1364
Followers
Версия Python стратегии равновесия одной платформы
Discussions
Created 2020-02-05 10:02:03  Updated 2023-10-12 21:20:47
 1
 2965

img

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

JavaScript-версия

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

В этой статье давайте попрактикуемся в портировании простой стратегии JavaScript. Трансплантируя стратегии, вы лучше познакомитесь с вызовами интерфейса Inventor Quantitative Trading Platform и поймете небольшие различия между разными языками при разработке стратегий на платформе. Фактически, разница между версией JavaScript и версией Python Стратегия очень мала, поскольку вызовы интерфейса в основном одинаковы.

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

Цитата из JavaScript-версии инструкции:

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

Принцип стратегии очень прост, а версия кода JavaScript невелика, всего более 70 строк. Перевод на язык Python с более лаконичным синтаксисом, код короче и очень подходит для новичков. Разработчики делятся множеством кодов на Inventor Quantitative Trading Platform, и язык поддерживает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

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

Related Recommendations
Comment
All comments (1)

    好牛啊

    4 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)