1
ध्यान केंद्रित करना
6
समर्थक

हमने ऑनलाइन ग्रिड ट्रेडिंग बैकटेस्टिंग फ़ंक्शन करने के लिए fmz का उपयोग किया

में बनाया: 2020-10-18 23:56:01, को अपडेट:
comments   2
hits   4457

मूल बिंदु पर वापस

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

सबसे पहले, यह उपयोगकर्ता के लिए स्वतंत्र रूप से शुरू और समाप्त होने का समय चुनने के लिए है, तो हमने ऑनलाइन ग्रिड ट्रेडिंग बैकटेस्टिंग फ़ंक्शन करने के लिए fmz का उपयोग किया

और यह सब कुछ एक पैरामीटर के साथ किया जाना चाहिएः

हमने ऑनलाइन ग्रिड ट्रेडिंग बैकटेस्टिंग फ़ंक्शन करने के लिए fmz का उपयोग किया और यह एक अजीब तरीका है, मैं नहीं जानता कि क्या कोई फ़ंक्शन है जिसे मैं आरंभ कर सकता हूं।

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

JOIN () को कॉल करने से रिटर्निंग टास्क समाप्त हो जाएगा और नेटवर्थ डेटा वापस आ जाएगा। JOIN पैरामीटर को TRUE नहीं भेजा जाता है। TRUE का अर्थ है कि रिटर्निंग परिणाम को वापस करना है, जिसे पहले से ही विश्लेषण नहीं किया गया है।

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

एफएमजेड वापसी के साथ प्राप्ति डेटा के लिए कोड की गणना

  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 दिनों में एफएमजेड की गति का जवाब देना लगभग उपयोगकर्ताओं के लिए फ्रंट-एंड प्रतीक्षा समय को पूरा करने के लिए पर्याप्त है, और लंबे समय तक यह थोड़ा धीमा हो जाता है, यह एक अच्छा उपकरण है जो एक इंटरफेस के रूप में मात्रात्मक प्रतिक्रिया देता है, धन्यवाद!

ठीक है, इस बार फिर से एक व्यापार प्रतियोगिता की लहर को बढ़ावा देने के लिए, हम कभी नहीं जीतने की मात्रा टीम एक व्यापार प्रतियोगिता का आयोजन किया है, निः शुल्क भाग लेने. जब तक आप पूछताछ एपीआई प्रदान करने के लिए पंजीकरण कर सकते हैं सफल, एक द्वि-सप्ताह प्रतियोगिता के रूप में, हमारे पुरस्कार के लिए अंक भी अच्छा है.