Địa chỉ chiến lược:https://www.fmz.com/strategy/345
Trong bài viết này, chúng ta cùng thực hành việc chuyển một chính sách JavaScript đơn giản. Bằng cách chuyển chính sách, các nhà phát minh đã làm quen hơn với việc gọi giao diện giao dịch định lượng nền tảng giao dịch, và hiểu được sự khác biệt nhỏ giữa các ngôn ngữ khác nhau khi phát triển chính sách nền tảng, trong thực tế các chính sách phiên bản JavaScript và chính sách phiên bản Python rất khác nhau, vì các cuộc gọi giao diện về cơ bản đều giống nhau.
Có một số người đã sử dụng JavaScript để viết bài viết này.
Điều này đòi hỏi phải xây dựng kho, ví dụ như tài khoản có 5.000 đô la, và một đồng xu, nếu giá trị của đồng xu lớn hơn số dư trong tài khoản là 5.000 và chênh lệch giá trị vượt quá mức định giá, ví dụ như đồng xu bây giờ có giá trị 6.000 đô la, bạn sẽ bán nó.
Các chiến lược rất đơn giản, các phiên bản JavaScript của mã cũng không dài, chỉ hơn 70 dòng; chuyển sang ngữ pháp đơn giản hơn các chiến lược ngôn ngữ Python, mã ngắn hơn, rất phù hợp với người mới bắt đầu học, trên nền tảng giao dịch định lượng của nhà phát minh có rất nhiều mã được chia sẻ bởi các nhà phát triển, hỗ trợ ngôn ngữ.JavaScript
/C++
/Python
Vì vậy, việc nắm vững nhiều hơn một ngôn ngữ phát triển không chỉ hữu ích cho chiến lược học tập, nghiên cứu và phát triển mà còn giúp bạn hiểu rõ hơn về các giao diện API của nền tảng.
'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''
InitAccount = None
def CancelPendingOrders():
ret = False
while True:
orders = _C(exchange.GetOrders)
if len(orders) == 0 :
return ret
for j in range(len(orders)):
exchange.CancelOrder(orders[j].Id)
ret = True
if j < len(orders) - 1:
Sleep(Interval)
return ret
def onTick():
acc = _C(exchange.GetAccount)
ticker = _C(exchange.GetTicker)
spread = ticker.Sell - ticker.Buy
diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2
ratio = diffAsset / acc.Balance
LogStatus("ratio:", ratio, _D())
if abs(ratio) < threshold:
return False
if ratio > 0 :
buyPrice = _N(ticker.Sell + spread, ZPrecision)
buyAmount = _N(diffAsset / buyPrice, XPrecision)
if buyAmount < MinStock:
return False
exchange.Buy(buyPrice, buyAmount, diffAsset, ratio)
else :
sellPrice = _N(ticker.Buy - spread, ZPrecision)
sellAmount = _N(-diffAsset / sellPrice, XPrecision)
if sellAmount < MinStock:
return False
exchange.Sell(sellPrice, sellAmount, diffAsset, ratio)
return True
def main():
global InitAccount, LoopInterval
InitAccount = _C(exchange.GetAccount)
LoopInterval = max(LoopInterval, 1)
while True:
if onTick():
Sleep(1000)
CancelPendingOrders()
Log(_C(exchange.GetAccount))
Sleep(LoopInterval * 1000)
Mã bắt đầu
'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''
Đây là cấu hình kiểm tra lại, nghĩa là cấu hình kiểm tra lại (setting) được lưu dưới dạng mã, tự động được cấu hình theo cài đặt này khi kiểm tra lại. Phần này có thể được xóa, xóa, khi kiểm tra lại, bạn cần phải tự đặt thông tin cấu hình kiểm tra lại trên trang kiểm tra lại. Dữ liệu tham khảo:https://www.fmz.com/bbs-topic/859
Các tham số của chính sách này hoàn toàn phù hợp với phiên bản JavaScript, mã chính sách cũng được chuyển từng câu, cấu trúc chương trình không thay đổi và có thể so sánh từng câu, xem sự khác biệt giữa các chính sách được viết trong các ngôn ngữ khác nhau.
Cấu hình tham số
Số liệu thống kê
Địa chỉ chiến lược:https://www.fmz.com/strategy/183374
Các chiến lược chỉ dành cho tham khảo học tập, thử nghiệm kiểm tra lại, có thể tối ưu hóa nâng cấp.
Thiên đàng và tài sảnCon bò tốt đấy.