俺にも執筆活動させろボケ

SFD導入されたので本気出す7

注文IDを保存する

現物はIDもくそもないな、、、

まあいいやFXはともかく記憶する

と思ったけどIFOで注文することにした

f:id:nemui3900:20180212171335j:plain

注文通らないね

'data': None, 'error_message': 'Invalid signature', 'status': -500

これが糞サーバーってやつか、

ヘッドレスのブラウザで注文しろということか。

マジ糞すぎる。

SFD導入されたので本気出す6

0時から夕方までスプリクト叩いてもいいのだが一応自動で止まってもらう。

まず時間の取得

f:id:nemui3900:20180211211447j:plain

19時から24時までは止まっといてもらうか。

このへん綺麗に書くのは後で考えるとして。

あと思ったより乖離の平均は0に近いようなので平均をいちいち参照するのはやめよう。

なのでDBに問い合わせる必要がなくなった。

これは相当うれしい。

ポジション取ったら放置する感じにするとして

どのくらい許容するかをちゃんと決める必要があるのだが

とりあえず動かしたいのであとで考えないといけない。

注文部分はかなり難しい、何故ならAPIが糞だから。

注文が上手くいったかどうかの判定すら難しい何故ならAPIが糞だから。

その辺をちゃんと書いてあるのをどっかから探してきて流用しよう。

と思ったけどないなw

自分でちゃんと書けということか?

嫌すぎる、萎えたのでblogはいったん〆

実は手法うんぬんよりその辺の技法(まともな発注部分)のほうがもの現状すごい価値がある。何故ならAPI(ry

 

SFD導入されたので本気出す5

乖離率を算出する。

データフレームで保存しているのでいったん

numpyのarrayに変える。

bidとaskの平均値にしてさらにスプレッドも計算しておく

f:id:nemui3900:20180211185932j:plain

f:id:nemui3900:20180211190502j:plain

平均スプレッド451円らしい。

f:id:nemui3900:20180211200043j:plain

こうしてみると手数料がやすいなあ、

まあそれがBTC触ってる理由全てなんだけど。

f:id:nemui3900:20180211200621j:plain

FXのほうがスプレッド高いのね

ビジーな時間帯以外にも急にはねてるとこあるしな。

レバレッジかけずに買うのなら手数料を考慮してもFXじゃないほうがいいのかもね。

一日しか見てないのにっていうツッコミは無しで。

しかしながら外れ値が出てないほうが繰り返し安定している気がする当然ながら夕方は酷そうである。

フィルタとして夕方は取引しないようにするのは有効そうだ。

つづいて乖離率のプロット

f:id:nemui3900:20180211204214j:plain

取引チャンスはいっぱいありそうだが

大体スプレッドで相殺されてしまう。

夕方以降はまず利益がでないだろう。

早朝から夕方前に動かす感じでそうとうコツコツ積み立てるしかなさそう。

f:id:nemui3900:20180211205438j:plain

一応2月9日も見る。

大体同じぐらいだな。

0.5を超えてスプレッド安定(平均400以下)してたら入って0で利確するか。

そしたら0.05から0.1ぐらいは儲かるはず。

まあやってみるか。

 

SFD導入されたので本気出す4

TPとストップを求めるのともうちょっといいシグナルを探るためにデータを解析していく。

GMT0で取ってるので日本のGMT9を考慮

f:id:nemui3900:20180210205601j:plain

データを日付ごとに雑に取得してpandasのdfにする。

このまま一度保管。

tech-blog.abeja.asia

メモリは十分に積んでいるので気にせず

to_pickleする。かとおもったけど

VPCでpickle読み込めないな。これってPC変えるとだめなやつなんかな。

最初から向こうで作業するか。

すごく眠いので目的地だけ記して寝る。

乖離率を解析してTPとシグナルを探る。

機械学習でやれそうならやる。

SFD導入されたので本気出す3

ルールをもう一度確認する。

BTCJPYを買い(以下BJ

BTCFXJPYを売る(以下BFJ

スイッチは

乖離のMA(peri=1分間)<(BFJ-BJ)/BJ-(スプレッド+手数料往復)

&& ポジション無し。

TPが

手数料の10倍でレート計算。

ストップは時間で区切る

1分間でだめなら全決済。

 

lotはとりあえず0.001001

TPの計算が意外とめんどくさいのでまずそこから考える。

約定のプライスが必要なので取ってくる

f:id:nemui3900:20180209182629j:plain

これは決済した時の分だけどまあ置いといて

というか分割された場合も考えないといけない。

'child_order_acceptance_id'でいちいち検索する必要がある。

こういうとこでプログラムもうちょっと頑張っとけばと思うけどしゃあないのでちまちま進む。

と思ったけどAPIのドキュメント読んでたら引数に指定するだけだと気付いた。

f:id:nemui3900:20180209184439j:plain

さて、プライスが求まったのでTPの計算。

手数料をがちがちに求めていたけどしかとしていいな

ということでTP=(スプレッド+FXスプレッド)*10

で計算してみるか、というか後でTPもろもろは考える。

f:id:nemui3900:20180209212656j:plain

そしてストップは10分にしないとストップ頻発しそうだ

このへんもデータを取ってから考えよう。

あと片側だけロスカットくらった時の処理も後

ポジション持ったあと

TP<利益をひたすら問い合わせするのか?

なんかやり方ありそうだけどな

まあとりあえずループさせておくか

決済はあとにしてシグナルの部分

f:id:nemui3900:20180209213250j:plain

まあこんな感じか?

sig == true and pos == 0でトレード開始

ここまで行くと後は実際に構築するだけだな。

〆てローカルでやっとこう。

DBに約定timeとかもろもろ記載するようにしよう(後で)。

 

SFD導入されたので本気出す2

f:id:nemui3900:20180209170717j:plain

postionではなく現物の場合

どうやらgetbalance()で資産を見に行かないといけない模様。

なんと難しいことか。

そして決済してみる。

f:id:nemui3900:20180209171227j:plain

-200ってなんですか(怒

ググっても載ってないな

多分手数料分足りねえぞってことだと仮定して

手数料の取得

f:id:nemui3900:20180209172152j:plain

そして計算

f:id:nemui3900:20180209172718j:plain

ふざけるなと思ったわけ難しすぎるわあほ

f:id:nemui3900:20180209174522j:plain

決済まで4時間であるwww

何はともあれ注文して決済することができたので

これでbotが作れる。

よく考えたら最低lotは0.0011でいいね。

あと1ナカモトとかは気にしない方向でいかないと頭おかしくなる。

しかし手数料BTCで取ってくこと考えたやつマジで〇す。

めんどくさすぎんだよ馬鹿馬鹿。

休憩のためいったん終わり

SFD導入されたので本気出す1

まずは乖離の平均を求める。

すごい雑にデータを取得しているのでDBにアクセスしてpandasを使って平均を求める。

oinume.hatenablog.com

今回はpymysqlを使ってみる。

クエリマジでわからん、逆切れ。

最後から数件取ってくる

select * from bf order by id desc limit 1;

これでも本2冊読んだんだが完全に忘れるSQLなんなんだこの難しい言語は。

f:id:nemui3900:20180209122634j:plain

今回はbFjpyを買いbFFXjpyを売るので

bidとaskfの値だけ見ればいいと思う。

大体0.5秒で取得しているので1分の平均の乖離率を求めてみる

limit120にして取得して各々平均を出す

f:id:nemui3900:20180209123638j:plain

そして乖離率を求める。

f:id:nemui3900:20180209124909j:plain

SFDはたぶんmidpriceを見てると勝手に妄想して(違ったら教えてくれ。)midpriceの乖離を取ってくる。

pybitflyerを使用

f:id:nemui3900:20180209125726j:plain

乖離率の表示

f:id:nemui3900:20180209131252j:plain

逆だなmidpriceFが現物になってる

f:id:nemui3900:20180209131806j:plain

これが今まで(ma)よりbF<bFFX側に開いたら=数字が単に増えたら

bF=long ,bFFX=shortとして閉じる(ma==)のをまってクローズ。

10%超えたらデータがないので今のところ放置。

ビジーの処理とか難しいことは放置。

そして注文部分の記述。

まずは買ってみる

f:id:nemui3900:20180209135455j:plain

f:id:nemui3900:20180209135558j:plain

通った、なんと手数料をとられたww

知らなかったのかよというツッコミはやめていただく。

戻り値

f:id:nemui3900:20180209141626j:plain

実際には決済しないといけないので*2する。

f:id:nemui3900:20180209135943j:plain

1円にも満たないのでわりとしかとしていいと思う。

スプレッドのほうが重要ということだ。

f:id:nemui3900:20180209141002j:plain

2.6円の出費でこれを乖離が閉じたときに回収しないと話にならない。

とりあえず全部ポジションをクローズする関数を書いておきたい。

と思ったのだがBTCの取引を行うのには0.001以上のロットが必要なのでこのままでは閉じれない実験するためには最低0.002としておいたほうが無難だろう。

とりあえずここまでで冗長になったので区切る。