Stratégie de négociation à haute fréquence

Auteur:C'est pas vrai., Date: 12 mai 2020 à 21h55
Les étiquettes:

Définition stratégique

Le Bitcoin (BTC) est une monnaie.

Les données sur les écarts de prix: BTC durable - BTC trimestriel (sauf vérification de l'intégrité)

Cycle de négociation: 1 minute

头寸匹配:1:1

Type de transaction: période transversale de la même variété

Conditions d'ouverture d'un déficit: si le compte actuel n'est pas détenu et que le déficit est < (niveau de déficit à long terme - seuil), un déficit est effectué.

Conditions d'ouverture de l'écart de prix: si le compte actuel n'est pas détenu et que l'écart est > (niveau d'écart à long terme + seuil), alors un écart de prix est effectué; c'est-à-dire: vendre BTC en permanence, acheter BTC trimestriellement.

Conditions d'équilibrage des écarts de prix: si le compte actuel détient plusieurs commandes de BTC permanentes et détient des commandes de BTC trimestrielles et que le décalage est supérieur au niveau des écarts de prix à long terme, il y a un décalage de prix équilibré.

Conditions de mise en place de l'écart de prix: si le compte actuel détient des BTC perpétuellement vides et détient plusieurs BTC trimestriels et que l'écart est < niveau d'écart de prix à long terme, il y a un écart de prix; c'est-à-dire: acheter des BTC perpétuellement vides et vendre des BTC trimestriels.

À titre d'exemple:Supposons que la différence de prix entre BTC permanent et BTC saisonnier reste à environ 35 pour la durée. Si une différence de prix atteint 50 un jour, nous prévoyons que la différence de prix reviendra à 35 ou moins à un moment donné dans le futur. Nous pouvons alors vendre BTC permanent et acheter BTC saisonnier pour effacer cette différence.

Les coordonnées

:point_right: Si vous êtes intéressé par cette stratégie, veuillez +V:Irene11229 (Cliquez sur ma page, je vais continuer à mettre à jour plus de stratégies, ainsi que des données d'analyse de marché de plusieurs des principaux échanges)


#!/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)

Plus de

le preneurVous voulez dire que c'est le contraire, les prix permanents sont presque les mêmes que les prix actuels, les prix sont plus élevés, c'est certainement le prix élevé du trimestre, comment peut-on acheter le trimestre, devrait-on acheter le trimestre, vendre le trimestre?