Type/to search
1
Follow
6
Followers
fmzを使用してオンライングリッド取引バックテスト機能を実行しました
FAQ
Created 2020-10-18 23:56:01  
 2
 5117

スタート地点に戻る

以前は,リアルタイムで反省できるツールを探していましたが,しばらくの間,vnpyがインターフェースに変換されるのは大変な作業でした.
fmzの初心者向けガイドブックに載っているドキュメントにたどり着きました.
半年ほどかけて,このプロジェクトについて,皆さんに話し合うことにしました.
この記事では,fmzの記事がほとんどないことに気づきましたが,初心者向けガイドで,その記事の内容を詳しく調べてみたところ,その記事の内容がわかりませんでした.

まず,ユーザは自主的に 開始と終了の時間を選択できます.
img

参数化が必要になる:

img
初期化できる関数があるかどうかわからない.

python
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 }

格子配置パラメータ:最小値,最大値,格子分布の間隔,再掲の間隔

ユーザーからの参数です.

この関数は,

python
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 関数で取得する
  • 実行訓練関数
  • fmzが返したデータ構造に基づいて,リターン率を計算し,取引記録を表示

呼び出しtask.Join() は反測タスクを終了し,純資産データを返します。Join参数不伝送Trueは,元の未分析の反測結果を返します.終了後,取引または行情関連関数を呼び出すことはできません。

文献を通して,私は,戦略の結果が返ってくるものについて推測しています。。

fmzが返した収益データに添付されたコードで計算された

python
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

ネットワークのアイデアを紹介しましょう. ネットワークのアイデアを紹介しましょう.

チェックリストのチェックを 採用する

  • まず,ユーザのパラメータに基づいてグリッドを初期化します.
  • 最初の登録
  • 定期的な取引状況のチェック,購入・販売の順に順番を更新
python
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

この記事の記事では,この写真が初めて見られるようになっている.

今回は,fmzが14日間で反省した速度は,基本的にユーザが前端で待たされる時間を満たすくらいで,長くなると少し遅い,インターフェースとして量子反省が良いツールである,ということを表したい.

そうだ,今度はまた取引競争の波を広めるために戻ってきた,私たちは永勝量化チームで取引競争を開催し,無料で参加する。皆さんが問い合わせAPIを提供すれば,登録が成功し,二週間の競技として,私たちの賞金も得られます。連絡先を fengye607に留めてください.

Related Recommendations
Comment
All comments (1)

    你是需要获取实时行情,然后模拟回测的结果。这样会有一些麻烦,如果只是单交易对可以试试自己写个回测引擎,也不复杂

    6 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)