高周波跨期配当戦略

作者: リン・ハーンほら 魔女よ, 2020-05-12 21:55:43 日付
タグ:

戦略説明

ビットコイン (BTC)

価格差データ:BTC持続性 - BTC四半期 (共性検査を省略)

取引周期: 1分

头寸匹配:1:1

取引の種類:同品種間

格差値開設条件:当日口座に保有がない場合,格差値 < (長期格差値 - 値) の場合,格差値開設.つまり: BTCを永続的に購入し,BTCを四半期に販売する.

持分開設条件:当日口座に保有がない場合,持分が > (長期値差レベル + 値) である場合,持分開設します.つまり,BTCを恒久的に売却し,BTCを四半期に購入します.

超差平衡条件:当口座が BTCの永続多注文を保有し,BTCの四半期空注文を保有し,差は>長期差のレベルである場合,超差平衡である.すなわち: BTCを永続販売し,BTCを四半期購入する.

格差平衡条件:当口座が BTCの永続的な格差を保持し,BTCを四半期にわたって保有し,格差が <長期格差レベル>である場合,格差平衡です.つまり: BTCを永続的に購入し, BTCを四半期にわたって販売します.

例えば長期的に見ると,BTCの恒久値とBTCの季節差は約35で維持される.もしある日の価格差が50に達すると,我々は将来的に35以下に戻ると予想する.それでは, BTCを恒久値で売却し,同時期にBTCを買い,この差を空くすることができます.また,逆に,BTCの恒久値と BTCの季節差は常に0近くに戻ることを注意してください (期限配達),したがって,差が正の時に優先,空の価格差,負の価格差,高価格差を優先します.

連絡先

:point_right: この戦略に興味がある方は+V:Irene11229 (私のホームページをクリックすると,より多くの戦略を更新し,いくつかの主要取引所の市場分析データも入手できます)


#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import json
import time

from kumex.client import Trade, Market


class Hf(object):

    def __init__(self):
        # read configuration from json file
        with open('config.json', 'r') as file:
            config = json.load(file)

        self.api_key = config['api_key']
        self.api_secret = config['api_secret']
        self.api_passphrase = config['api_passphrase']
        self.sandbox = config['is_sandbox']
        self.symbol_a = config['symbol_a']
        self.symbol_b = config['symbol_b']
        self.spread_mean = float(config['spread_mean'])
        self.leverage = float(config['leverage'])
        self.size = int(config['size'])
        self.num_param = float(config['num_param'])
        self.trade = Trade(self.api_key, self.api_secret, self.api_passphrase, is_sandbox=self.sandbox)
        self.market = Market(self.api_key, self.api_secret, self.api_passphrase, is_sandbox=self.sandbox)

    def get_symbol_price(self, symbol):
        ticker = self.market.get_ticker(symbol)
        return float(ticker['price'])


if __name__ == '__main__':
    hf = Hf()
    while 1:
        # ticker of symbols
        price_af = hf.get_symbol_price(hf.symbol_a)
        price_bf = hf.get_symbol_price(hf.symbol_b)
        # position of symbols
        position_a = hf.trade.get_position_details(hf.symbol_a)
        position_a_qty = int(position_a['currentQty'])
        position_b = hf.trade.get_position_details(hf.symbol_b)
        position_b_qty = int(position_b['currentQty'])
        # interval of price
        new_spread = price_af - price_bf
        print('new_spread =', new_spread)

        if position_a_qty == position_b_qty == 0 and new_spread < (hf.spread_mean - hf.num_param):
            buy_order = hf.trade.create_limit_order(hf.symbol_a, 'buy', hf.leverage, hf.size, price_af + 1)
            print('buy %s,order id =%s' % (hf.symbol_a, buy_order['orderId']))
            sell_order = hf.trade.create_limit_order(hf.symbol_b, 'sell', hf.leverage, hf.size, price_bf - 1)
            print('sell %s,order id =%s' % (hf.symbol_b, sell_order['orderId']))
        elif position_a_qty == position_b_qty == 0 and new_spread > (hf.spread_mean + hf.num_param):
            buy_order = hf.trade.create_limit_order(hf.symbol_a, 'sell', hf.leverage, hf.size, price_af - 1)
            print('sell %s,order id =%s' % (hf.symbol_a, buy_order['orderId']))
            sell_order = hf.trade.create_limit_order(hf.symbol_b, 'buy', hf.leverage, hf.size, price_bf + 1)
            print('buy %s,order id =%s' % (hf.symbol_b, sell_order['orderId']))
        elif position_a_qty > 0 and position_b_qty < 0 and new_spread > hf.spread_mean:
            buy_order = hf.trade.create_limit_order(hf.symbol_a, 'sell', position_a['realLeverage'],
                                                    position_a_qty, price_af + 1)
            print('sell %s,order id =%s' % (hf.symbol_a, buy_order['orderId']))
            sell_order = hf.trade.create_limit_order(hf.symbol_b, 'buy', position_a['realLeverage'],
                                                     position_a_qty, price_bf - 1)
            print('buy %s,order id =%s' % (hf.symbol_b, sell_order['orderId']))
        elif position_a_qty < 0 and position_b_qty > 0 and new_spread < hf.spread_mean:
            buy_order = hf.trade.create_limit_order(hf.symbol_a, 'buy', position_a['realLeverage'],
                                                    position_a_qty, price_af - 1)
            print('buy %s,order id =%s' % (hf.symbol_a, buy_order['orderId']))
            sell_order = hf.trade.create_limit_order(hf.symbol_b, 'sell', position_a['realLeverage'],
                                                     position_a_qty, price_bf + 1)
            print('sell %s,order id =%s' % (hf.symbol_b, sell_order['orderId']))

        time.sleep(60)

もっと

取っ者恒久的な価格が現貨価格とほぼ同じで,価格が大きくなります. 間違いなく四半期価格が高いです.