avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Phiên bản Python của chiến lược theo đuổi và bán xuống

Được tạo ra trong: 2020-01-11 14:49:08, cập nhật trên: 2024-12-12 20:57:43
comments   6
hits   7100

Phiên bản Python của chiến lược theo đuổi và bán xuống

Phiên bản Python của chiến lược theo đuổi và bán xuống

Các chiến lược xu hướng thường sử dụng nhiều chỉ báo khác nhau để xác định hướng thị trường và sử dụng kết quả so sánh số liệu của nhiều chỉ báo khác nhau làm tín hiệu giao dịch. Điều này tất yếu sẽ dẫn đến việc sử dụng các tham số và tính toán các chỉ số. Vì các tham số được sử dụng nên sẽ có sự phù hợp. Chiến lược này hoạt động rất tốt trong một số điều kiện thị trường nhất định, nhưng nếu bạn không may mắn và xu hướng thị trường không mấy thuận lợi với các thông số hiện tại, chiến lược này có thể hoạt động rất kém. Do đó, theo tôi, việc thiết kế chiến lược phải càng đơn giản càng tốt và chiến lược như vậy sẽ hiệu quả hơn. Hôm nay chúng tôi sẽ chia sẻ một chiến lược xu hướng không sử dụng chỉ báo. Mã chiến lược rất đơn giản, chỉ có 40 dòng.

Mã chiến lược:

import time

basePrice = -1
ratio = 0.05
acc = _C(exchange.GetAccount)
lastCancelAll = 0
minStocks = 0.01

def CancelAll():
    while True : 
        orders = _C(exchange.GetOrders)
        for i in range(len(orders)) :
            exchange.CancelOrder(orders[i]["Id"], orders[i])
        if len(orders) == 0 :
            break
        Sleep(1000)

def main():
    global basePrice, acc, lastCancelAll
    exchange.SetPrecision(2, 3)
    while True:
        ticker = _C(exchange.GetTicker)
        if basePrice == -1 :
            basePrice = ticker.Last
        if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio :
            acc = _C(exchange.GetAccount)
            if acc.Balance * ratio / ticker.Last > minStocks :
                exchange.Buy(ticker.Last, acc.Balance * ratio / ticker.Last)
                basePrice = ticker.Last
        if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio : 
            acc = _C(exchange.GetAccount)
            if acc.Stocks * ratio > minStocks :
                exchange.Sell(ticker.Last, acc.Stocks * ratio)
                basePrice = ticker.Last
        ts = time.time()
        if ts - lastCancelAll > 60 * 5 :
            CancelAll()
            lastCancelAll = ts 
        LogStatus(_D(), "\n", "行情信息:", ticker, "\n", "账户信息:", acc)
        Sleep(500)

Phân tích chiến lược đơn giản

Nguyên lý của chiến lược này rất đơn giản. Nó không sử dụng bất kỳ chỉ báo nào, mà chỉ sử dụng giá hiện tại làm cơ sở cho các yếu tố kích hoạt giao dịch và chỉ có một tham số chínhratioKiểm soát việc kích hoạt mở vị thế.

Cò dài:

if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio

Sử dụng giá hiện tại để so sánh với giá cơ sở. Khi giá hiện tại lớn hơn giá cơ sở và giá vượt quáratio * 100 %, lệnh chờ được kích hoạt và một lệnh mua được đặt. Sau khi đặt lệnh, giá cơ sở sẽ được cập nhật thành giá hiện tại.

Lệnh kích hoạt ngắn:

if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio

Nguyên lý bán khống cũng giống như vậy. Sử dụng giá hiện tại để so sánh với giá cơ sở. Khi giá hiện tại thấp hơn giá cơ sở và giá vượt quáratio * 100 %, lệnh chờ được kích hoạt và một lệnh bán được đặt. Sau khi đặt lệnh, giá cơ sở sẽ được cập nhật thành giá hiện tại.

Khối lượng lệnh của mỗi lệnh là giá trị của nguồn tiền khả dụng.ratio * 100 %。 Trừ khi khối lượng lệnh được tính toán nhỏ hơn khối lượng giao dịch tối thiểu được đặt trong các tham sốminStocks, nếu không hãy đặt hàng.

Điều này cho phép chiến lược theo dõi những thay đổi về giá và theo đuổi mức cao và bán mức thấp.

Kiểm tra ngược

Thời gian kiểm tra ngược là khoảng một năm. Phiên bản Python của chiến lược theo đuổi và bán xuống

Kết quả hoạt động: Phiên bản Python của chiến lược theo đuổi và bán xuống

Phiên bản Python của chiến lược theo đuổi và bán xuống

Gần đây, một số người dùng cho biết có khá ít chiến lược Python. Tôi sẽ chia sẻ thêm nhiều chiến lược được viết bằng Python trong tương lai. Mã chiến lược cũng rất đơn giản, rất phù hợp cho người mới bắt đầu học. Địa chỉ chiến lược: https://www.fmz.com/strategy/181185

Chiến lược này chỉ mang tính tham khảo, kiểm tra ngược và thử nghiệm. Nếu bạn quan tâm, bạn có thể tối ưu hóa và nâng cấp.