資源の読み込みに... 荷物...

パイトン版板の平衡戦略

作者: リン・ハーン発明者 量化 - 微かな夢, 作成日: 2020-02-05 10:02:03, 更新日: 2023-10-12 21:20:47

img

パイトン版板の平衡戦略

JavaScript版

戦略アドレスは:https://www.fmz.com/strategy/345

この記事では,シンプルなJavaScriptのポリシーの移植を練習します. 移植策によって,発明者が取引プラットフォームインターフェースの呼び出しを定量化し,プラットフォーム開発策に異なる言語のわずかな違いを理解する. 実際,JavaScript版のポリシーはPython版のポリシーの違いがほとんどありません. インターフェース呼び出しは基本的に同じです.

戦略説明

この記事へのトラックバック一覧です.

口座に5000ドルと1コインがあるとします. そのコインの価値が口座の余分量5000ドルよりも大きく,値差が値を超えるとします. 例えば,コインの価値は6000ドルです. 売りましょう. 通貨が値すると,それを交換します.

策略原理は非常にシンプルで,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

この戦略は,学習,復習テスト,アップグレードの最適化に関心のある人のための参照のみです.


関連性

もっと

天降りの富いい牛だ