量化跟單/秒合約/原始碼系統開發/永續合約量化交易開發技術分析

I76制2o72開發9II9發表於2023-04-03

該程式碼使用BitMEX API獲取行情資料,基於均線策略的Python示例程式碼。


# 初始化BitMEX API客戶端

client = bitmex.bitmex(api_key=api_key, api_secret=api_secret)


# 定義獲取K線資料的函式

def get_kline(symbol, interval):

    klines = client.Trade.Trade_getBucketed(

        symbol=symbol,

        binSize=interval,

        count=200,

        reverse=True

    ).result()[0]


    prices = [kline['close'] for kline in klines]

    return prices[::-1]


# 初始化BitMEX API客戶端

client = bitmex.bitmex(api_key=api_key, api_secret=api_secret)


# 定義獲取K線資料的函式

def get_kline(symbol, interval):

    klines = client.Trade.Trade_getBucketed(

        symbol=symbol,

        binSize=interval,

        count=200,

        reverse=True

    ).result()[0]


# 定義計算移動平均值的函式

def moving_average(prices, window):

    weights = np.repeat(1.0, window) / window

    smas = np.convolve(prices, weights, 'valid')

    return smas


# 獲取交易品種的K線資料

symbol = 'XBTUSD'

interval = '1h'

prices = get_kline(symbol, interval)


# 計算10日和20日移動平均值

ma10 = moving_average(prices, 10)

ma20 = moving_average(prices, 20)


# 獲取最新價格

last_price = client.Instrument.Instrument_get(symbol=symbol).result()[0][0]['lastPrice']


# 判斷交易訊號

if ma10[-1] > ma20[-1] and last_price < ma10[-1]:

    order = {

        'symbol': symbol,

        'side': 'Buy',

        'orderQty': 1000,

        'price': last_price

    }

    client.Order.Order_new(order).result()

elif ma10[-1] < ma20[-1] and last_price > ma10[-1]:

    order = {

        'symbol': symbol,

        'side': 'Sell',

        'orderQty': 1000,

        'price': last_price

    }

    client.Order.Order_new(order).result()


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70028069/viewspace-2943498/,如需轉載,請註明出處,否則將追究法律責任。

相關文章