Type/to search
8
Follow
1364
Followers
60 dòng mã để thực hiện một ý tưởng - chiến lược chọn đáy hợp đồng
Original
Created 2022-03-19 14:37:08  Updated 2024-12-02 21:32:02
 14
 3759

img

Các chiến lược ưa chuộng thị trường biến động, chẳng hạn như chiến lược lưới và chiến lược Martingale, có những nhược điểm cố hữu. Các chiến lược tương tự đã được thử nghiệm trên thị trường hợp đồng ETH trong một thời gian. Tôi cũng thường trò chuyện và chia sẻ kinh nghiệm với những người chơi mới và cũ trên FMZ.COM. Về loại chiến lược này, có một điểm mà tôi rất đồng ý với những gì một người bạn đã nói. Nghĩa là, khi thực hiện các hợp đồng trong lĩnh vực tiền điện tử, rủi ro khi mua vào sẽ thấp hơn một chút so với rủi ro khi bán ra. Hay nói một cách đơn giản, mức giảm tệ nhất có thể là 0, nhưng lợi ích thì là vô hạn.

Vậy, liệu các chiến lược như Martingale và grid chỉ đi theo hướng dài hạn chứ không phải ngắn hạn, và phân bổ rủi ro bắt đáy trong phạm vi dài hạn có tốt hơn so với giao dịch song phương không? Ý tưởng này nghe có vẻ hay, nhưng không ai biết liệu nó có khả thi trong thực tế hay không. Nhưng ít nhất chúng ta có thể kiểm tra lại ý tưởng này. Vậy là chúng ta có chủ đề của bài viết hôm nay - thiết kế chiến lược chọn đáy hợp đồng.

Phát triển nhanh chóng dựa trên FMZ.COM

Mã để triển khai ý tưởng này thực sự rất đơn giản, nhờ vào tính linh hoạt của nền tảng, đóng gói giao diện, hệ thống kiểm tra ngược mạnh mẽ, v.v. Toàn bộ mã chỉ mất 60 dòng (vì tiêu chuẩn viết mã, nhiều chữ viết tắt không được sử dụng).

Thiết kế chiến lược rất đơn giản. Theo giá ban đầu khi bắt đầu logic, các lệnh mua được đặt theo các khoảng thời gian giảm dần. Nếu giá tiếp tục giảm, hãy tiếp tục đặt lệnh mua để tiếp tục câu đáy. Sau đó, đặt lệnh đóng dựa trên giá vị thế cộng với một khoản lợi nhuận chênh lệch nhất định và chờ vị thế được đóng. Nếu vị thế bị đóng, logic trên sẽ được lặp lại với giá hiện tại làm giá ban đầu. Chiến lược này không giữ vị thế bán khống mà chỉ giữ vị thế mua.

Mã nguồn chiến lược:

javascript
function cancelAll() { while (true) { var orders = _C(exchange.GetOrders) if (orders.length == 0) { break } for (var i = 0 ; i < orders.length ; i++) { exchange.CancelOrder(orders[i].Id, orders[i]) Sleep(interval) } } } function getLong(arr, kind) { var ret = null for (var i = 0 ; i < arr.length ; i++) { if (arr[i].Type == (kind == "pos" ? PD_LONG : ORDER_TYPE_BUY)) { ret = arr[i] } } return ret } function pendingBidOrders(firstPrice) { var index = 0 var amount = baseAmount while (true) { var pos = _C(exchange.GetPosition) var price = firstPrice - index * baseSpacing amount *= ratio index++ exchange.SetDirection("buy") exchange.Buy(price, amount) if (pos.length != 0) { var longPos = getLong(pos, "pos") if (longPos) { exchange.SetDirection("closebuy") exchange.Sell(longPos.Price + profitTarget, longPos.Amount) } } while (true) { Sleep(interval) if (!getLong(_C(exchange.GetOrders), "orders")) { cancelAll() break } if (!getLong(_C(exchange.GetPosition), "pos")) { cancelAll() return } } } } function main() { exchange.SetContractType(symbol) while (true) { pendingBidOrders(_C(exchange.GetTicker).Last) } }

Thiết kế tham số cũng rất đơn giản:

img

Chỉ có một vài thông số này.

Hãy xem hiệu ứng kiểm tra ngược của hàng chục dòng mã này

Chỉ cần thiết lập phạm vi thời gian kiểm tra ngược:

img

Chạy thử nghiệm ngược:

img

img

Nó trông rất giống chiến lược lưới hoặc chiến lược kiểu Martin~. Những học viên mới bắt đầu học có sợ những chiến lược dài dòng và dễ nản lòng không? Một phần giới thiệu ngắn gọn và súc tích về các chiến lược sẽ phù hợp hơn, giúp bạn dễ dàng tiếp thu các ý tưởng chiến lược và học cách thiết kế logic.

Mã chiến lược chỉ dành cho mục đích học tập và nghiên cứu.

Related Recommendations
Comment
All comments (14)

    img
    运行之后会报错然后一直在挂单,撤单无限循环,要如何解决

    4 years ago

    您好,这个是个教学策略,主要是讲解思路,可以在币安永续合约跑,跑OK需要对策略修改一下。上面问题的原因是下单量为小数了,OKX是要求下单量为合约整张数的。币安期货USDT本位永续合约可以是小数

    4 years ago

    好的谢谢我知道了

    4 years ago

    不客气,刚写支持FMZ量化。

    4 years ago

    这个策略只能在币安上跑吗?

    4 years ago

    都可以跑,就是参数调整下就行。

    4 years ago

    仓位增长系数是什么意思?

    4 years ago

    设置2就是2倍加仓。

    4 years ago

    怎么没有策略地址啊?复制策略源码不能用

    4 years ago

    这个策略只是一个教学策略,切勿实盘,回测研究学习可以。复制策略源码,还要加上策略参数,参数如文章上的截图。

    4 years ago

    img
    现在币安不能支持麦语言策略使用么,会提示用web什么的方式进行实时更新避免api封禁

    4 years ago

    您好,这个和策略无关的,您可以设置一下麦语言模版参数上的轮询间隔,设置大一些。如果您一个服务器上跑多个实盘,都访问一个交易所的接口,那么频率是会翻倍的,很容易就超频超限了。

    4 years ago

    img
    按道理我这个参数两个轮训一分钟最多120次,并没有超过币安限制每分钟1200次访问呀,有点不理解

    4 years ago

    是不是运行了多个实盘,如果一个服务器上运行2个实盘,频率就翻倍,以此类推的。

    4 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)