हम FMZ के साथ एक ऑनलाइन ग्रिड लेनदेन retargeting सुविधा बनाया है

लेखक:अनंत जीत मात्रा -1, बनाया गयाः 2020-10-18 23:56:01, अद्यतन किया गयाः

लौटें

पहले मैं एक उपकरण की तलाश में था जो वास्तविक समय में पुनः परीक्षण कर सकता है, और कुछ समय के लिए मैंने vnpy पर शोध किया, लेकिन मुझे लगता है कि इंटरफ़ेस को बदलना बहुत मुश्किल है। आखिरकार, मैं एफएमजेड के नए गाइड में दस्तावेजों पर वापस चला गया। एक बार जब हम एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से एक बार फिर से वैसे, एफएमजेड पर बहुत कम लेख हैं, इसलिए यह उपयोगी है कि यह एक नौसिखिया गाइड में है, जब मैंने पोस्ट के माध्यम से पूछा था।

सबसे पहले यह कि उपयोगकर्ता अपने स्वयं के शुरू करने और समाप्त करने के समय का चयन कर सकते हैं, तोimg

इस चीज़ को पैरामीटर बनाने की जरूरत है:

imgयह एक अजीब तरीका लगता है, पता नहीं क्या कोई फ़ंक्शन है जिसे आरंभ किया जा सकता है।

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
      }

ग्रिड कॉन्फ़िगरेशन पैरामीटरः न्यूनतम, अधिकतम मूल्य, ग्रिड का वितरण अंतराल और पुनः सूचीबद्ध करने का अंतराल।

ये सभी उपयोगकर्ता द्वारा प्रस्तुत पैरामीटर हैं।

मुख्य बस फ़ंक्शन है

    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
  • अभी gen_params फ़ंक्शन का उपयोग करके fmz के लिए रीसेट सेटिंग प्राप्त करें
  • चलाने के लिए प्रशिक्षण कार्य
  • एफएमजेड द्वारा लौटाए गए डेटा संरचना के आधार पर रिटर्न की गणना और लेनदेन रिकॉर्ड प्रदर्शित करना

जॉइन () कॉल करने से पुनः परीक्षण कार्य समाप्त हो जाता है और शुद्ध डेटा वापस आ जाता है। जोइन पैरामीटर True नहीं देता है। जोइन मूल अनप्लस किए गए पुनः परीक्षण परिणामों को लौटाता है और लेनदेन या बाजार से संबंधित फ़ंक्शन को समाप्त करने के बाद नहीं बुला सकता है।

मैं दस्तावेजों के माध्यम से अनुमान लगा रहा हूं कि रणनीतिक परिणामों का क्या मतलब है।

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

ठीक है, थोड़ा भ्रमित महसूस कर रहा हूं, लेकिन पहले मैं आपको हमारे ग्रिड के बारे में बताता हूंः

यह एक बहुत ही दिलचस्प लेख है।

  • सबसे पहले, उपयोगकर्ता के पैरामीटर के आधार पर ग्रिड को आरंभ करें
  • पहली सूची
  • समय-समय पर चेक करें कि बुकिंग की स्थिति क्या है, और खरीद और बिक्री के अनुसार फिर से बुकिंग करें
          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

यह शायद ऐसा है, शायद पहली नज़र में थोड़ा अजीब लग रहा है।

इस बार मैं मुख्य रूप से साझा करना चाहता हूं कि एफएमजेड की 14 दिनों की रिज़ॉल्यूशन गति मूल रूप से उपयोगकर्ताओं के लिए फ्रंट-एंड प्रतीक्षा समय को पूरा कर सकती है, लंबे समय तक थोड़ा धीमा हो जाता है, एक क्वांटिफाइड रिज़ॉल्यूशन के रूप में इंटरफ़ेस का एक अच्छा उपकरण है, वाह एक!

हाँ, इस बार भी एक व्यापार प्रतियोगिता का प्रचार करने के लिए वापस आ गया है, हमारी अनंत जीत क्वांटिफाइंग टीम ने एक व्यापार प्रतियोगिता आयोजित की है, जिसमें भाग लेने के लिए निः शुल्क है । जब तक आप पूछताछ एपीआई प्रदान करते हैं, तो आप सफल पंजीकरण कर सकते हैं, एक दो सप्ताह का प्रतियोगिता के रूप में, हमारे पुरस्कारों को चिह्नित करना भी अच्छा है । एक संपर्क फ़ॉर्म छोड़ दें fengye607। पता नहीं है कि ऐसा नहीं कहा जा सकता है, छोटी घास मुझे हटाओ मत, मैं मंच का पता भी नहीं भेज रहा हूं, (( ^ )


अधिक

घासआपको वास्तविक समय में ट्रेडों को प्राप्त करने की आवश्यकता है और फिर रीट्रीट के परिणामों का अनुकरण करना है। यह कुछ परेशानी पैदा कर सकता है, यदि केवल एक लेनदेन जोड़ी है तो आप अपने स्वयं के रीट्रीट इंजन को लिखने का प्रयास कर सकते हैं, यह जटिल नहीं है।