
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.
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)
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.
Thời gian kiểm tra ngược là khoảng một năm.

Kết quả hoạt độ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.