悩んだこと書いていきます。
特にcurrentとportfolio.positionsで悩みました。
利確と損切りのロジック重要なんでね。
#自己紹介
この度Smart Tradeでインターンすることになったゴンです。
ゴンについて、知りたい方はこちら。
初めての記事はこちら(QuantXを初めてみて)
https://qiita.com/investor-gon/items/2b1952ae5c2c88334c74
#まずQuantXのコードをざっくりと分けるとこの3つ
- def initialize(ctx)
まず、読み込む株を指定する。自分で使いたい変数も指定できるよ!
(証券コードだったり、終値だったり...)
- def _my_signal(data)
売買シグナルを設定する。テクニカルなどなど
- def handle_signals(ctx, date, current)
日ごとに呼び出される関数で、ここでは基本的に、利確損切りなどを設定します。
#TAlibとは
テクニカル指標などを簡単に実装できるライブラリです。
実装できるテクニカル指標はこちらをみてね。
#def initialize(ctx)編
変数とかはこんな感じに設定できます
ctx.変数名 = ●
例
ctx.target = 0.1
ここは銘柄選ぶが大事なので、プログラムで悩むことはあんまり個人的にはなかったです。
銘柄選びなら、
などを個人的には使用してます。
#def _my_signal(data)編
シグナルによる売買を考えていきます。
シグナル登録は忘れずに
# シグナル登録
ctx.シグナル関数名("シグナル関数名", シグナル関数名)
例
ctx.regist_signal("my_MACD", _my_MACD)
returnに自分のシグナルを入れておくとこんな感じに見れて見やすいですよ。
チェックもしやすくていいです。
#def handle_signals(ctx, date, current)編
##●currentの中身
各日付ごとのデータがこの中には入っています。具体的には、
- def initialize(ctx)で読み込んだ株価など
split_ratio 、high_price_adj 、 close_price_adj 、 close_price とかとか
- def _my_signal(data)でreturnに入れたもの
MACD 、MACDHist、 MACDSignal 、buy:sig 、sell:sig
##●portfolio.positionsの中身
リターンなんかはよく使えるので、いいですね。
"amount": asset.amount, # 保有株数
"total_buy_price": asset.total_buy_price, # 今までの総購入額
"total_sell_price": asset.total_sell_price, # 今までの総売却額
"buy_price": bp, # 現在のポジションの総購入額(amountが0になると0にリセットされる)
"sell_price": sp, # 現在のポジションの総売却額(amountが0になると0にリセットされる)
"value": value, # 現在の評価額
"position_ratio": position_ratio, # 保有銘柄の中での割合,
"portfolio_ratio": portfolio_ratio, # 資産全体での割合
"pnl": value - (bp - sp), # 損益額
"returns": returns # 損益率
なんかまたあったら追記します。
ちゃお