永續合約開發/秒合約/合約跟單/量化交易跟單系統技術開發丨Python示例

飛機號JT9119發表於2023-04-03

量化跟單合約交易是一種高效、一致和快速執行交易操作的方法。它可以透過程式管理交易活動,降低人為疏漏和

情緒影響,提高交易效率和一致性。在實際應用中,投資者需要結合自身情況和需求選擇合適的跟單方式,並結合各

種交易策略進行跟單操作。


程式碼示例

以下是一個基於均線策略的Python示例程式碼。該程式碼使用BitMEX API獲取行情資料,並根據10日和20日移動平均線生成

交易訊號。在收到交易訊號後,程式會自動執行交易並下單。


python

import bitmex

import time


# 讀取API key和secret

with open('api_key.txt', 'r') as f:

    api_key = f.readline().strip()

    api_secret = f.readline().strip()


# 初始化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]


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

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很抱歉,我發現我的程式碼示例未完成。以下是完整的程式碼示例:


```python

import bitmex

import time

import numpy as np


# 讀取API key和secret

with open('api_key.txt', 'r') as f:

    api_key = f.readline().strip()

    api_secret = f.readline().strip()


# 初始化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]


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

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()

else:

    pass


# 每隔60秒檢查一次交易訊號

time.sleep(60)

在這個示例中,我們使用BitMEX API獲取了XBTUSD的1小時K線資料,並分別計算了10日和20日移動平均值。


然後,程式會根據最新價格與移動平均線的關係判斷是否需要進行交易。


需要注意的是,這只是一個示例程式碼,並不能完全適應所有情況。投資者需要結合實際情況編寫適合自己的跟單策略。




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

相關文章