높은 주파수 연장율 전략

저자:맙소사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)

더 많은

취수자당신은 반대라고 말하는가, 지속가능한 가격은 현장 가격과 거의 같고, 가격이 더 높습니다. 확실히 분기 높은 가격입니다.