거래 지표: 비트코인 (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)
취수자당신은 반대라고 말하는가, 지속가능한 가격은 현장 가격과 거의 같고, 가격이 더 높습니다. 확실히 분기 높은 가격입니다.