kabusapiで自動売買する話 part 21 | ぼったーうさぎのブログ

ぼったーうさぎのブログ

ゆるく株の話など
アイコンもゆるいうさぎにしてます
リニューアルして、ぼったーの話を中心にします。
ぼったーってのは、Botでトレードする人って意味でしょうか

last modified 2022.10.21

今回で21回目です

最近、冷える。

 

pythonでトレードスクリプト作るときになんとも面倒なことがありました。

それは変数型です。

 

pythonには変数型は明示されないけれど、変数型はあります。

自動変換されて計算されるので、あまり意識しなくてよいだけの話です。

 

例えば

dd='20221021110515'

というデータがあります。これ年月日時分秒の日時データのストリングです。

これを

print( float( dd))

とすると

20221021110515.0

と表示される。'.0'ってのが追加されてしまう。

print( int( dd))

とすると

20221021110515

 

ちなみに

print( int( '123456.123'))

とすると、エラーがでます。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '123456.123'

 

print( int( float( '123456.123'))) 

これだと

123456

こうなる

 

だから何だよって話ですが、pythonで時間計算するときのデータ型の変換でバグったりします。'.0'がついていたり、ついていなかったり。

 

トレードボットで使う変数を考えてみるとこんな感じでしょうか

date,openPrice,highPrice,lowPrice,closePrice,tradingVolume,5ma,15ma

date: 日時

openPrice: 始値

highPrice: 高値

lowPrice: 安値

closePrice: 終値

tradingVolume: 売買高

5ma: 5日移動平均

15ma: 15日移動平均

 

こんな感じでしょうか

日時はfloatでもintでもstrでもいいと思いますが、バグが出やすいのでstr型でいいのかな

日時の比較の時はint型に変換する。

始値、高値、安値、終値はintでもいいかもしれませんが、株価で546.3円とか小数点が付くものがあります。たしか、topix100銘柄は小数点が付く、なのでfloat型で持つのがいいと思います。

出来高は小数点がでないのでintでもfloatでもいいと思いますが、ほかの数値を合わせてfloat型にしとく

5maや15maはどんなテクニカル分析するかで変わってくるでしょうが、ボリンジャーバンドでもストキャスティクスでも少数点が出てきます。つまりfloat型

 

ファイルにデータを読み書きするときはこれを意識するといいのかも