Trong các bài viết trước, chúng tôi đã học được các khái niệm cơ bản của rất nhiều tiền điện tử, lập trình và giao dịch định lượng. Cuối cùng, chúng tôi có thể chuyển sang chủ đề và nói về chính chiến lược. Trong bài viết này, chúng tôi sẽ học cách thực hiện một chiến lược đơn giản cùng nhau.
Đối với
Vào thời điểm này, có thể ai đó đã nói:
Đó là sự thật. Nó thực sự khá khó khăn cho một người không chuyên về phần mềm máy tính hoặc không tham gia vào công việc lập trình để tự phát triển một chiến lược giao dịch hoàn chỉnh. Bởi vì bạn phải làm một loạt các công việc trước từ đầu khi kết nối giao diện trao đổi (có thể chương trình logic giao dịch của bạn chỉ có 100 dòng, nhưng công việc mã hóa khác phải làm là khá nhiều, và nó khó hơn so với việc viết logic giao dịch.)
Vào thời điểm này, nếu bạn có một công cụ tiện dụng, nó khá đơn giản, ít nhất khó khăn được giảm 70%. Bạn có thể tưởng tượng nó thuận tiện và nhanh như thế nào nếu bạn chỉ viết chính logic giao dịch, và tất cả các kết nối giao diện trao đổi khác, xác minh chữ ký, tệp cấu hình, xây dựng môi trường hoạt động, viết giao diện UI, viết tương tác và vân vân đều đã sẵn sàng.
Không tin sao? Hãy thử đi!
Công cụ chúng tôi sử dụng là: FMZ Quant Trading Platform (FMZ.COMNền tảng của thiết kế chiến lược lưới điện thực sự là logic của việc mua và bán lưới điện, vì vậy đây là điều phải được làm rõ trước khi thiết kế chiến lược. Mục tiêu của chúng tôi là làm cho thiết kế chiến lược đơn giản và dễ hiểu, vì vậy càng ít tham số và logic đơn giản, càng tốt.
Sau đây là dòng chảy cơ bản của việc thiết kế một chiến lược:
Nói một cách đơn giản, đó là những gì, làm thế nào, và các chức năng chiến lược của bạn sẽ làm. Thông tin này có thể được viết trong một tài liệu (bảng ghi chép hoặc một cái gì đó) trước khi bạn viết mã chiến lược. Nó rất đơn giản để phát triển các chiến lược trên FMZ, Nền tảng đã chuẩn bị các giải pháp cho các yêu cầu này cho bạn, và tôi không cần phải viết các yêu cầu này vào một sổ ghi chép (không phải là rất thuận tiện để quản lý). Tôi viết các yêu cầu chiến lược trong các ghi chú chiến lược trực tiếp.
Chỉ cần nhớ để lưu chiến lược sau khi hoàn thành, và sau đó chúng tôi sẽ viết các yêu cầu chiến lược (các yêu cầu chiến lược không phải là tĩnh, và nó cũng có thể ghi lại trong khi phát triển).
XXX_USDT
, nhưBTC_USDT
.Đối với những ý tưởng không rõ ràng, chúng ta có thể vẽ và phân tích ngay từ đầu.
Một lưới có thể được xây dựng theo cả hai hướng lên và xuống từ giá khởi điểm như một điểm cơ sở. lưới là một đường mua và bán từng lớp. Nhìn vào biểu đồ, chúng ta có thể thấy rằng mỗi đường có hai khả năng:
Viết một hàm xây dựng cấu trúc dữ liệu lưới:
function createNet(begin, diff) { // begin, diff are parameters, begin is the initial price, diff is the grid spacing (the spacing of the equal difference grid is the price)
var oneSideNums = 10 // The grid generates 10 bars on the upward and downward sides. The above chart is a side of the generation of 2 bars (AB side, CD side) and the generation of 10 bars, you can imagine them by yourself.
var up = [] // Used to store the upward "grid line" data structure
var down = [] // Used to store the downward "grid line" data structure
for (var i = 0 ; i < oneSideNums ; i++) { // Determine the number of times according to the size of oneSideNums, and construct the "grid line" data structure cyclically
var upObj = { // Construct an upward "gridline" data structure
buy : false, // Buy marker, initial marker is false, meaning no buy
sell : false, // Sell marker ...
price : begin + diff / 2 + i * diff, // The price level represented by this "grid line" can be observed according to the cycle, and the price level is rising in turn.
}
up.push(upObj) // The constructed "gridline" data structure is placed into the up array
var j = (oneSideNums - 1) - i // The change in j during the loop is: 9 ~ 0
var downObj = {
buy : false,
sell : false,
price : begin - diff / 2 - j * diff,
}
if (downObj.price <= 0) { // The price cannot be less than or equal to 0
continue
}
down.push(downObj) // The constructed "gridline" data structure is placed in down array
}
return down.concat(up) // Add up after down to form a grid array structure with grid line prices from small to large
}
Bạn có thể chạy chức năng này một cách riêng biệt để xem hiệu ứng. [Debugging Tools] hoặc [Backtesting System] trên FMZ rất thuận tiện để gỡ lỗi các mã nhỏ như vậy.
Dữ liệu được xây dựng có thể được quan sát.
[
{"buy":false,"sell":false,"price":5},
{"buy":false,"sell":false,"price":15},
{"buy":false,"sell":false,"price":25},
{"buy":false,"sell":false,"price":35},
{"buy":false,"sell":false,"price":45},
{"buy":false,"sell":false,"price":55},
{"buy":false,"sell":false,"price":65},
{"buy":false,"sell":false,"price":75},
{"buy":false,"sell":false,"price":85},
{"buy":false,"sell":false,"price":95},
{"buy":false,"sell":false,"price":105}, // 100 is the starting price, starting from 105 and going up the first line, with an interval of 10
{"buy":false,"sell":false,"price":115}, // ...
{"buy":false,"sell":false,"price":125},
{"buy":false,"sell":false,"price":135},
{"buy":false,"sell":false,"price":145},
{"buy":false,"sell":false,"price":155},
{"buy":false,"sell":false,"price":165},
{"buy":false,"sell":false,"price":175},
{"buy":false,"sell":false,"price":185},
{"buy":false,"sell":false,"price":195}
]
Sau khi phân tích cấu trúc dữ liệu của lưới, chúng ta cần xem xét logic giao dịch cụ thể của chiến lược lưới. Trên thực tế, logic mua và bán rất đơn giản. Chúng ta đã vẽ nó trong biểu đồ trên, mua có nghĩa là vượt qua một đường nhất định bên dưới, và bán có nghĩa là vượt qua một đường nhất định bên trên. Vậy làm thế nào để bạn hiển thị sự vượt qua trên và dưới? Nó cũng rất đơn giản, chúng ta chỉ có thể đánh giá bằng cách so sánh các vị trí giá của hai khoảnh khắc.
Vẫn sử dụng biểu đồ trước.
T1 là một khoảnh khắc, t2 là một khoảnh khắc sau khi t1, để đánh giá các đường chéo trên C, chúng ta chỉ cần đánh giáP1 < C
vàP2 > C
.
Tương tự như vậy, để đánh giá đường B bên dưới, chúng ta chỉ cần xác địnhP1 > B
vàP3 < B
.
Tại thời điểm đó, chúng ta chỉ cần đi qua (đi qua thường được gọi làNhìn từng cái một.) mỗi đường thẳng trong mảng lưới, và quyết định liệu phải vượt qua nó trên hoặc dưới.
Sau khi bắt được giá vượt qua trên và dưới, có thể đặt lệnh khi các hành động này được kích hoạt không?
Rõ ràng là không thể. Nếu giá vượt qua trên và dưới nhiều lần trên một đường, nó sẽ không lãng phí phí cho việc giao dịch lặp đi lặp lại ở cùng một mức giá? Do đó, vẫn còn một loạt các điều kiện phán đoán để kích hoạt giá vượt qua trên và dưới, đòi hỏi phải sử dụng các dấu hiệu mua / bán trong cấu trúc dữ liệu đường lưới mà chúng tôi vừa xây dựng (ví dụ: {
Cảm ơn bạn đã đọc, chúng tôi sẽ tiếp tục giải thích và học hỏi trong số tiếp theo.