Политический адрес:https://www.fmz.com/strategy/345
В этом выпуске мы вместе проведем упражнения по переносу простой стратегии JavaScript. С помощью стратегии переноса мы станем более знакомыми с вызовами к интерфейсам для квантовых торговых платформ, и узнаем о незначительных различиях между различными языками при разработке стратегии платформы.
Ссылаясь на описание из JavaScript:
Это требует создания хранилища, например, 5000 долларов в счете, и 1 монета, и если стоимость монеты больше, чем баланс в счете, 5000, и разница превышает порог, например, монета сейчас стоит 6000 долларов, продать, чтобы показать, что монета выросла, обменять деньги обратно, если она обесценилась, например, 4000 долларов, купить, купить, если она упала, купить еще, если она упала, продать, как будто это нечто вроде нефтяного баланса, так что я называю это балансирующей стратегией.
Принципы стратегии очень просты, и код версии 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, код стратегии также переносится словом, структура программы не изменяется, и можно сравнить словом, посмотрев на различия в стратегии, написанной в разных языках.
Конфигурация параметров
Статистика
Политический адрес:https://www.fmz.com/strategy/183374
Стратегия предназначена только для учебы ссылки, повторного тестирования, заинтересованных в оптимизации обновления.
Небо и земляХорошая корова.