FMZ định lượng nền tảng chiến lược viết hướng dẫn cho người mới bắt đầu (cần xem)

Tác giả:Cỏ nhỏ, Tạo: 2019-08-13 17:47:27, Cập nhật: 2021-08-06 10:29:46

Thông tin đường K lịch sử. Nhược điểm của cơ chế này là rõ ràng: trên một đường K, chỉ có thể tạo ra một lần mua bán, thường dựa trên giá là giá đóng cửa của đường K. Và một đường K chỉ có thể truy cập đến bốn giá cao và thấp, về cách thay đổi giá trong một đường K, không có thông tin nào được lấy. Ví dụ như đường K 1 giờ, trong thời gian thực chắc chắn nhận được thông tin tình trạng mỗi vài giây, chỉ thị giao dịch cũng sẽ được phát hành trên đĩa thay vì chờ kết thúc đường K. Cơ chế trả lại onbar rất dễ hiểu, trả lại rất nhanh.

FMZ nền tảng tái tính phân chia hai loại tái tính cấp analog và tái tính cấp đĩa thực.Trong khi đó, các loại đĩa thực là các tick thực được thu thập, khoảng một lần mỗi vài giây, hiện nay một phần hỗ trợ độ sâu thực (bao gồm 20 file), giao dịch đơn lẻ thực.Số lượng dữ liệu rất lớn và tốc độ lặp lại chậm, do đó không thể lặp lại trong thời gian đặc biệt dài. Phương pháp lặp lại của FMZ có thể làm cho chiến lược giao dịch nhiều lần trên một đường K, tránh tình huống chỉ có thể đóng giao dịch giá bán, chính xác hơn và tính đến tốc độ lặp lại.https://www.fmz.com/digest-topic/4009

Khung chính sách lặp lại giống như ổ đĩa thực, đều là một vòng chết. Vì lặp lại nhảy vào các điểm lặp lại khác nhau, tại thời điểm này bạn có thể không sử dụng Sleep và tự động nhảy vào thời điểm tiếp theo khi kết thúc một vòng lặp.Sleep(10)Những người bị thương là những người đã chết.

Ảnh chụp lại

Động cơ trả lời sẽ chụp theo giá đặt hàng của người dùng và giá khai thác tại thời điểm trả lời, nếu giá mua cao hơn giá bán, để bán một giao dịch. Nếu không có giao dịch, sẽ tạo ra một danh sách bị treo. Để đảm bảo giao dịch cần điểm trượt.

Thiết lập trang kiểm tra

img

  • 1.回测页面的选择,左侧是策略编辑页面。
  • 2.回测起始结束时间,由于数据不完整,回测可能直接从有数据的时间开始。
  • 3.回测GetRecords()Các chu kỳ mặc định của hàm cũng có thể được chỉ định trong mã.
  • 4.回测机制的选择。
  • 5.展示或隐藏跟多回测设置。
  • 6.最大日志数、收益数据数、图表数据数等,为了防止数据量过大导致浏览器卡死。
  • 6.底层tick生成依据K线周期。
  • 7.交易滑点。
  • 7.容错,会模拟API请求出错情况,检查策略容错能力。
  • 8.是否绘制行情图标,回测中如果使用了TA指标函数,会自展示在图标上,买卖也会标记。
  • 9.手续费设置
  • 10. Thêm sàn giao dịch - cặp giao dịch và tài sản.
  • 11.回测参数设置,如果参数是数字还支持一键优化参数,自动按照一定范围遍历参数回测。

Khác với đĩa thật

  • 1.回测时有效的行情只有GetTicker和GetRecords,其它如获深度、成交历史都不是真实的(因为数据量太大,实盘级回测目前已经支持这些数据,但只有最近数据)。
  • 2.回测添加的交易所都是独立账户,目前不支持切换交易对。因此无法在一个账户里操作两个交易对。
  • 3.回测中无法使用网络请求。
  • 4.回测无法使用IO扩展,只能操作最基础的API。
  • 5.回测只能获取标准的数据,像Info之类的牵扯到实盘的数据不存在。
  • 6.回测中也有可能不成交,注意冻结订单情况。
  • 7.商品期货回测不支持市价单。

Chiến lược chấp nhận sai lầm và những sai lầm phổ biến

Như đã nói trước đây, có thể truy cập thất bại và quay trở lại khi sử dụng API trên ổ đĩa thực.nullKhi sử dụng dữ liệu trong đó, nó sẽ báo cáo lỗi và dẫn đến ổ đĩa thực dừng lại, vì vậy chiến lược phải được chấp nhận lỗi.

Phương pháp thông thường

Những nguyên nhân gây ra sai lầm:

  • API truy cập mạng lỗi, giao diện truy cập quá trễ sẽ trả về null, khi sử dụng sẽ báo cáo lỗi.
  • Các sàn giao dịch hạn chế các lỗi, chẳng hạn như hạn chế IP, độ chính xác đặt hàng, tần suất truy cập, lỗi tham số, thiếu tài sản, thị trường không thể giao dịch, hủy các đơn đặt hàng đã được thực hiện, v.v.; có thể truy vấn tài liệu API cụ thể theo mã lỗi.
  • Các sàn giao dịch trả lại các lỗi dữ liệu, đôi khi xảy ra, chẳng hạn như độ sâu không, thông tin tài khoản bị trì hoãn, trạng thái đơn đặt hàng bị trì hoãn.
  • Có một lỗi logic trong chương trình.

Trước khi sử dụng API để trả lại dữ liệu, bạn phải phán xét liệu nó có phải là null hay không. Dưới đây là các phương pháp tập trung phổ biến:

//1.判断为null进行处理
var ticker = exchange.GetTicker();
while(ticker == null){
     Log('ticker 获取出错');
     ticker = exchange.GetTicker();
 }
 Log(ticker.Last);
 // 2.判断不为null再进行引用
 var ticker = exchange.GetTicker();
 if(!ticker){
     Log(ticker.Last);
 }
 // 3._C()函数重试
 var ticker = _C(exchange.GetTicker);
 Log(ticker.Last);
 // 4. try catch容错
 try{
     var ticker = exchange.GetTicker();
     Log(ticker.Last);
 }
 catch(err){
     Log('ticker 获取出错');
 } 

Nếu bạn muốn lấy thông tin sai, bạn có thể sử dụngGetLastError(), sẽ trả về chuỗi thông tin lỗi cuối cùng, có thể xử lý khác nhau cho lỗi.

Câu hỏi thường gặp

Những bài viết trên các diễn đàn được tổng hợp một cách sai thường xuyên:https://www.fmz.com/bbs-topic/1427Các bạn có thể tìm Ctrl + F để tìm kiếm các vấn đề.

Làm thế nào để đặt người quản lý?

Thêm quản trị viên để biết thêm chi tiết

Bạn có thể tìm ra chiến lược viết đại từ không?

https://www.fmz.com/marketsMột số người cung cấp dịch vụ viết lách hoặc tư vấn trong nhóm, cần liên hệ với chính mình, chịu rủi ro của mình.

Truy cập tất cả các giao diện báo hiệu thời gian hết

Điều này có nghĩa là truy cập giao diện giao dịch quá giờ, nếu không có vấn đề, nếu liên tục nhắc nhở rằng mạng của bạn không thể truy cập, bạn cần sử dụng máy chủ nước ngoài.

Lỗi ERR_INVALID_POSITION

Hệ thống báo cáo lỗi, thường là một lỗi được viết ra cho chiến lược, cố gắng đặt hàng không có hoặc không đủ số lượng cổ phiếu sẽ gây ra lỗi này.

biểu tượng không được thiết lập

Các sàn giao dịch tương lai được kiểm tra lại, không có hợp đồng được thiết lập trong mã, xem hàm exchange.SetContractType

BITMEX 429 lỗi, {error:{message:Rate limit exceeded retry in 1 seconds......}}

Các giao dịch trên mạng xã hội cũng có thể bị ảnh hưởng bởi các giao dịch khác nhau.

{status:6004,msg:timestampisoutofrange}

Lưu ý: Lưu ý rằng bạn có thể sử dụng một số tính năng khác nhau.

GetOrder ((455284455): Lỗi: ID đơn đặt hàng không hợp lệ hoặc đơn đặt hàng bị hủy.

Một số sàn giao dịch đã hủy lệnh và không thể truy cập thông tin lệnh nếu sàn giao dịch không duy trì thông tin này.

GetOrders: 400: {code:-1121,msg:Invalid symbol.}

Các cặp giao dịch không hợp lệ, kiểm tra xem các cặp giao dịch có đặt sai không.

Khởi khóa bí mật thất bại

API KEY giải quyết không thành công, nếu bạn đã cấu hình APIKEY sau khi thay đổi mật khẩu FMZ, hãy thử thêm trang giao dịch trong FMZ và cấu hình lại APIKEY giao dịch.

Signature not valid: Invalid submission time or incorrect time format (Hình chữ ký không hợp lệ: Thời gian gửi không hợp lệ hoặc định dạng thời gian không chính xác)

Chúng tôi khuyên bạn nên sử dụng máy chủ Linux hoặc cài đặt phần mềm đồng bộ thời gian trên các hệ thống windows có vấn đề này.

Tại sao lại thiết lập đại lý toàn cầu mà người quản lý không thể truy cập API của sàn giao dịch?

Trình đại diện toàn cầu không có cổng mạng của người quản lý đại diện, do vấn đề về độ trễ, người quản lý nên triển khai máy chủ nước ngoài

Làm thế nào để các chiến lược được duy trì tại địa phương thay vì trên các FMZ được tải lên?

Sử dụng Python, bạn có thể nhập các tập tin địa phương, lưu các chính sách được viết theo API FMZ bình thường thành các tập tin trên máy chủ của mình dưới đường thực thi và đọc trực tiếp thực thi.

#!python2.7

def run(runfile):
      with open(runfile,"r") as f:
            exec(f.read())
            
def main():
    run('my.py')

Cách sử dụng mạng thử nghiệm của sàn giao dịch hoặc thay đổi địa chỉ cơ sở API

Bạn có thể chuyển trực tiếp đến địa chỉ cơ sở API tương ứng bằng cách sử dụng exchange.SetBase (():

exchange.SetBase("https://www.okex.me")

Thêm nữa

gaoencheernấm

Khoa họcLàm thế nào để thực hiện chính sách hoạt động tại địa phương? Tôi đã viết một câu lệnh xuất bản Log đơn giản và làm theo các thao tác ở cuối câu. Bước đầu tiên là sử dụng máy tính xách tay làm máy chủ và chạy chương trình quản trị. Bước thứ hai là viết một chương trình test.py đơn giản để xuất thông tin Log (phương thức giao diện API của FMZ); Bước thứ ba, như ở cuối văn bản, viết một runfile và chạy bằng cách gọi test.py qua run.py. /upload/asset/1add39483ef82d45b3ce3.png

gyp9Tôi đã mua một khóa học định lượng giao dịch trên đám mây dễ dàng, và bây giờ tôi đang ở đâu?

MonuRajaknhiều

MonuRajakChào.

Anh trai tôiHọc tập

wqyCó một lỗi nhỏ trong văn bản, GetAccount lấy tài khoản. Trong giới thiệu, FrozenStocks nên là cân bằng đóng băng chứ không phải cân bằng có sẵn.

Trung úy Gia.getorder outtime, giao dịch của okx, làm thế nào

Khẩu thuật cao cấp của 12 cây gỗKhông có khả năng có được tỷ lệ tài sản bảo đảm, 0% sẽ bị buộc phải cân bằng tỷ lệ tài sản bảo đảm

Shifeng2020Tôi đang xem 1 phút k biểu đồ hoạt động, vì vậy thời gian ngủ của vòng chết Python có thể được thiết lập là 0.1s, đó là sleep ((100) Tôi thấy bạn đã viết một sleep ((10) trong đó, đó là 0.1s không vượt quá giới hạn API của huobi HM?

Đền Đông gióexchange.SetDirection (("closebuy"); // nếu là hợp đồng vĩnh viễn, hãy đặt trực tiếp exchange.SetDirection (("sell") Ở đây tôi đã thử OKex, một hợp đồng vĩnh cửu, nếu bạn đặt nó thành sell, nó sẽ mở ngay lập tức.

Đền Đông gióexchange.SetDirection (("closebuy"); // nếu là hợp đồng vĩnh viễn, hãy đặt trực tiếp exchange.SetDirection (("sell") Ở đây tôi đã thử OKex, một hợp đồng vĩnh cửu, nếu bạn đặt nó thành sell, nó sẽ mở ngay lập tức.

Đền Đông gióCó hai lỗi chính tả trong mã của GetOrders. Một là function được viết thành fuction, và một là trong điều kiện của vòng lặp for;

Đền Đông gióTôi đã sai rồi. exchange.Buy ((-1, 0.5), cặp giao dịch là ETH_BTC, đơn giá thị trường đại diện cho việc mua 0.5BTC ETH exchange.Buy ((price, 0.5)), nếu đó là danh sách giới hạn, đại diện cho việc mua 0.5ETH với giá của price

Đền Đông gióexchange.Buy ((-1, 0.5), cặp giao dịch là ETH_BTC, đại diện cho việc mua ETH với giá thị trường là 0.5BTC Đây nên là đồng xu đại diện cho giá thị trường mua 0.5ETH đồng xu.

gyp9Cảm ơn.

Cỏ nhỏCác bài học được đăng trên trang web của chúng tôi là: https://study.163.com/course/courseMain.htm?share=2&shareId=400000000602076&courseId=1006074239&_trace_c_p_k2_=c3f5d238efc3457d93c8b92c0398d2b2

Cỏ nhỏThêm WeChat vào trang chủ, kéo bạn vào nhóm.

wqyBạn có gặp vấn đề không biết phải hỏi ở đâu?

Cỏ nhỏThay đổi

Cỏ nhỏLấy lại

Cỏ nhỏBạn có thể sử dụng GetRawJSON hoặc xem thông tin trong trường thông tin.

Đền Đông gióTôi thấy rất nhiều lỗi chính tả trong mã, haha.

Cỏ nhỏỒ, đã sửa, cảm ơn đã chỉ ra lỗi.

Cỏ nhỏMột số hợp đồng vĩnh cửu cho phép giữ hai chiều, cần thiết để thiết lập ngang hàng. Tôi cập nhật, ban đầu chỉ có bitmex.