Tài nguyên đang được tải lên... tải...

Chúng tôi đã sử dụng FMZ để làm một mạng lưới giao dịch trên mạng có tính năng truy cập lại

Tác giả:Vô cùng thắng số lượng - 1, Tạo: 2020-10-18 23:56:01, Cập nhật:

Trở lại

Trước đây, tôi đã tìm kiếm một công cụ có thể kiểm tra lại trong thời gian thực, nghiên cứu một thời gian và cảm thấy rằng thay đổi giao diện là quá khó khăn. Cuối cùng, tôi đã quay lại tài liệu trong hướng dẫn mới của FMZ. Trong khi đó, một số nhà nghiên cứu đã phát hiện ra rằng nó có thể thực hiện các chức năng mà chúng tôi muốn, đưa ra một làn sóng và nghiên cứu với mọi người trong sáu tháng. Tuy nhiên, các bài viết trên fmz là rất ít, và nó rất hữu ích trong hướng dẫn người mới bắt đầu, nhưng tôi chỉ cần hỏi qua bài đăng để hiểu.

Điều đầu tiên là người dùng có thể tự chọn thời gian bắt đầu và thời gian kết thúc.img

Điều này cần được điều chỉnh:

imgTôi cảm thấy một cách rất khó khăn, không biết liệu có bất kỳ hàm nào có thể được khởi tạo.

self.grid_setting = {
          "min_price": min_price,
          "max_price": max_price,
          "grid_diff": grid_diff,
          "re_diff": grid_diff,
          "total_amount_B": total_amount_B
      }

Các tham số cấu hình lưới: giá tối thiểu, giá tối đa, khoảng cách phân bố lưới và khoảng cách đăng lại.

Các tham số trên đều được người dùng cung cấp.

Chức năng bus chính là

    def bus(self):
      params = gen_params(self.begin, self.end, self.currency, self.balance, self.stocks)
      task = VCtx(params)
      done = self.train()
      ret = task.Join(True)
      benefit_cal = self.cal_benefit(ret,done)
      result = {}
      result['done'] = done
      result['ret'] = benefit_cal
      return result
  • Lấy cấu hình truy cập lại của fmz bằng hàm gen_params vừa được cài đặt
  • Chức năng huấn luyện chạy
  • Tính toán lợi nhuận và hiển thị hồ sơ giao dịch dựa trên cấu trúc dữ liệu được trả về bởi fmz

Gọi task.Join () sẽ kết thúc nhiệm vụ kiểm tra lại và trả về dữ liệu giá trị ròng. Các tham số Join không truyền True trả về kết quả kiểm tra lại không phân tích ban đầu, và không thể gọi các hàm liên quan đến giao dịch hoặc thị trường sau khi kết thúc.

Thông qua tài liệu, tôi đang đoán những gì kết quả chiến lược sẽ trở lại.

Các mã tính toán với các dữ liệu thu nhập trả về fmz

  def cal_benefit(self,ret,done):
      #计算相隔多少天
      day_begin =  datetime.datetime.strptime(self.begin, '%Y-%m-%d %H:%M:%S')
      day_end =  datetime.datetime.strptime(self.end, '%Y-%m-%d %H:%M:%S')
      days = (day_end - day_begin).days
      begin = ret.iloc[0].net
      end = ret.iloc[-1].net
      fee = ret.iloc[-1].fee
      #计算一共多少次套利
      df = pd.DataFrame(done)
      #如果没有成交记录
      if len(done) == 0:
          benefit_cal = {}
          benefit_cal['benefit'] = 0
          benefit_cal['count'] = 0
          benefit_cal['fee'] = 0
          benefit_cal['benefit_p'] = 0
          return benefit_cal

      buy_count = len(df[df['type'] == 'buy'])
      sell_count = len(df[df['type'] == 'sell'])
      count = min(buy_count , sell_count)
      benefit = count * self.grid_diff * float(done[0]['amount'])
      benefit_cal = {}
      benefit_cal['benefit']= benefit
      benefit_cal['count']= count
      benefit_cal['fee']= fee
      print(benefit_cal)
      per = benefit / self.total_amount_B * 360 / days
      print(per)
      benefit_cal['benefit_p']= round( per , 4)
      return benefit_cal

Đúng rồi. Có vẻ hơi lộn xộn, nhưng trước tiên tôi sẽ nói về ý tưởng của mạng lưới của chúng tôi:

Những người tham gia cuộc thi đã có thể tham gia vào các cuộc thi.

  • Đầu tiên, khởi động lưới dựa trên các thông số của người dùng.
  • Đăng ký lần đầu tiên
  • Kiểm tra giao dịch theo thời gian và đặt lại theo đơn mua bán
          while True:
              Sleep(1000 * 60 * 5)
              if 'refreash_data_finish!' != mid.refreash_data():
                  continue
              # 初始化网格
              if not init_flag:
                  cur_price = mid.ticker['Last']
                  grid_list = grid.cal_grid_list(cur_price)
                  init_flag = True

              # 开始挂单
              if not place_flag:
                  grid.place_orders()
                  place_flag = True

              # 开始检查订单状态及时挂单
              grid.check_order_update()
              done = grid.done

Có lẽ đó là điều mà bạn có thể thấy hơi khó hiểu lúc đầu.

Điều tôi muốn chia sẻ lần này chính là muốn thể hiện tốc độ lặp lại của FMZ trong 14 ngày về cơ bản có thể đáp ứng thời gian chờ đợi của người dùng ở phía trước, lâu hơn thì chậm hơn một chút, là một công cụ tốt để định lượng lặp lại như một giao diện, cảm ơn một!

Đúng vậy, lần này chúng tôi đã trở lại quảng cáo một đợt thi đấu giao dịch, nhóm định lượng vĩnh cửu của chúng tôi đã tổ chức một cuộc thi giao dịch, tham gia miễn phí. Nếu bạn cung cấp API truy vấn, bạn có thể đăng ký thành công, và là một cuộc thi hai tuần, bạn cũng có thể thưởng cho chúng tôi.


Thêm nữa

Cỏ nhỏBạn cần phải có được các giao dịch trong thời gian thực và sau đó mô phỏng kết quả kiểm tra. Điều này có thể gây ra một số rắc rối, nếu chỉ là một cặp giao dịch, bạn có thể thử viết một công cụ kiểm tra của riêng bạn, cũng không phức tạp.