PyAlgoTradeの日本語解説ブログ

PyAlgoTrade の勝手に日本語解説ブログ。日本語の内容に関して保証はいたしておりません。必ず本家のサイトをご確認ください。

2015年11月24日火曜日

PyAlgoTrade トレードシミュレーションのやり方をチュートリアルから復習

以前にチュートリアルの直訳を行ってトレードシミュレーションを行った。



うまくいったように見えるが、正直、英文を丸写ししただけの訳なので意味がよくわかっていない。

そこで、自分なりのシミュレーションができるように細かく調べていくことにする。
まず、1日ごとに呼ばれるonBarsにコメントを入れてみた

    def onBars(self, bars):
        # Wait for enough bars to be available to calculate SMA and RSI.
        # 各種指標が出るまで待つ
        if self.__exitSMA[-1] is None or self.__entrySMA[-1] is None or self.__rsi[-1] is None:
            return

        bar = bars[self.__instrument]
        if self.__longPos is not None:#買いポジがないとき
            if self.exitLongSignal():#終了シグナルあり
                self.__longPos.exitMarket()#買いポジ全決済
        elif self.__shortPos is not None:#売りポジないとき
            if self.exitShortSignal():#終了シグナルあり
                self.__shortPos.exitMarket()#売りポジ全決済
        else:#ノーポジのとき
            if self.enterLongSignal(bar):#買い条件成立時
                #全予算の90%で買う
                shares = int(self.getBroker().getCash() * 0.9 / bars[self.__instrument].getPrice())#
                self.__longPos = self.enterLong(self.__instrument, shares, True)
            elif self.enterShortSignal(bar):#売り条件成立時
                #全予算の90%を使って売る
                shares = int(self.getBroker().getCash() * 0.9 / bars[self.__instrument].getPrice())
                self.__shortPos = self.enterShort(self.__instrument, shares, True)


このケースでは、売り買いどちらからでも入ることができるが両建てはしない。持っている現金の90%で買えるだけ買って、決済注文も全決済と潔いケースである。
マーケットインおよびマーケットアウトの指標、購入売却のところは関数になっているので、トリガーと資金マネジメントは別で考えることができる。

 何が用意された関数で、どれが自分で用意した関数なのかよくわからなくなるので整理する。

まず Brokerさんは取引に必要なお金を管理しており、getBrokerで呼び出すことができる。
Brokerクラスにはたくさんの関数があるが、getCashしか使っていない

enterLongとenerShortはstrategyクラスの関数だ。価格はいらない、数量だけでいい。後ろのTrueはセッションクローズ時に自動的にポジションクローズしない設定らしい。セッションが何を指すのかよくわからないのでTrueにしておけばよさそう。
それにしてもたくさんの機能があるが、深入りするよりはサンプルの戦略を言調べるほうがよさそう。


0 件のコメント:

コメントを投稿