파이썬 게시판 평형 전략

저자:작은 꿈, 2020-02-05 10:02:03, 업데이트: 2023-10-12 21:20:47

img

파이썬 게시판 평형 전략

자바스크립트

그라운드:https://www.fmz.com/strategy/345

이 기사에서는 간단한 자바스크립트 정책을 모방하는 연습을 함께합니다. 이 방법을 통해 발명자가 거래 플랫폼 인터페이스 호출을 더 잘 알고, 플랫폼 개발 전략에서 다른 언어의 약간의 차이를 이해합니다.

전략 설명

자바스크립트 버전의 설명에서 인용:

이것은 저장소를 구축해야 합니다. 예를 들어, 계좌에 5,000달러가 있고, 동전 1개를 가지고 있습니다. 만약 동전의 가치는 계좌 잔액보다 5,000달러가 더 많고, 그 가격의 차이는 약점보다 높다면, 예를 들어, 동전이 현재 6,000달러가 될 때, 우리는 그것을 팔고,

전략의 원리는 매우 간단하며, 자바스크립트 버전의 코드는 길지 않으며, 70줄 이상입니다. 문법으로 포트하는 것은 더 간결한 파이썬 언어 전략이며, 코드는 더 짧아지고, 초보자 학습에 매우 적합하며, 발명자 양적 거래 플랫폼에는 많은 개발자가 공유하는 코드가 있으며, 언어 지원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

이 정책의 매개 변수는 자바스크립트 버전과 완벽하게 일치하고, 정책 코드는 문장별로 포트되기도 하며, 프로그램 구조는 변경되지 않고, 문장별로 비교할 수 있으며, 다른 언어로 작성된 정책의 차이점을 살펴볼 수 있다.

재검토

매개 변수 설정img

통계자료img

img

이 글은 이쪽에서 작성되었습니다.https://www.fmz.com/strategy/183374

이 전략은 레퍼런스 학습, 리테스트 테스트, 업그레이드를 최적화 할 수있는 관심사를 위한 것입니다.


관련

더 많은

천하의 재물좋은 소야