FMZでネット上で取引の回帰機能を作りました.

作者: リン・ハーン永続的な量化-1作成日:2020年10月18日 23:56:01 更新日:

元の場所に戻る

Vnpyのインターフェースの変更は大変な問題だと感じました. この記事へのトラックバック一覧です. 半年後に,私たちは,その機能を実現できる,と発見し,それを利用し,半年後に皆さんと探求します. ちなみに,fmzの記事はあまりないので,新手向けガイドで使えますが,その時は投稿で尋ねてみて理解しました.

まず,ユーザが開始時と終了時を自由に選択できます.我们用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
        }

格子配置パラメータ:最小値,最大値,格子配分間隔,リハング間隔.

ユーザが入力したパラメータです.

基本bus関数は

      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 を伝達しないので,元の解析されていない復習結果が返されます.

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

計算した値の値です.

    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

恐らくそうで,最初はちょっと変だと思うだろう.

この時,私がお伝えしたいのは,FMZの 14 日間の回転速度が,ユーザがフロントエンドで待った時間を基本的には満たすことができる,長くなれば少し遅くなる,という表現です.

そう,今度はまた取引の波を宣伝するために戻ってきました. 私たちの永勝量化チームは取引の波を企画し,無料で参加します. 問い合わせAPIを提供する限り,皆さんが成功して登録できます. 2週間のコンテストとして,私たちの賞金も良いです. 連絡先を残してください. fengye607.


もっと見る

小草リアルタイムで取引を入手し,復習結果をシミュレートする必要があります. これは少し問題になりますが,単一の取引対であれば,復習エンジンを自分で書くこともできます.