最近,日本のトップブロガーことイケダハヤトさんがビットコインFXにハマってらっしゃいます.
ビットコインFXを知らない人のためにざっくり解説すると,『ビットコイン価格が上がるか下がるかを予想して行う取引』みたいな感じ.
ふと彼のTwitterを見ていて『マジでこの人天才じゃないか』と思ったんですよね
#ビットコインFX 20連敗くらい……。ちょっとやり方を変えないとだめかなー。 pic.twitter.com/5JriLZjA2a
— イケダハヤト@仮想通貨 (@IHayato) 2017年11月10日
なんと,24連敗を記録したとのこと
上がるか下がるかを予想して取引を行うので,コイントスの結果で取引しても50%は勝つわけです (利益確定タイミングとかあるのでそんな単純じゃないですが)
そのFX取引で24連敗って,天才以外なんと表現できるでしょうか?
裏を返せば,イケハヤさんの逆の注文を入れれば大金持ち間違いなし!w
僕と同じことを考えていた人が他にもいましたw
大勝だが圧勝できなかった反省点はイケハヤフラグに即座に反応できなかったことだ(・ω・`)
あの指標が最強だとわかった
誰か、イケハヤが買うっていったら即座にフルレバショートするbotを開発してください!!有料でも買います!!よろしくお願いします!!わら。
— 💤休憩中👑音速のGOX(2冠) (@GOXGOXGOX2) 2017年11月12日
ということで!ネタ記事にはなりますがイケハヤさんのツイートを検出して注文を入れるbotを開発してみようと思います!
ちなみに,これ僕が10分で書いたくらいめちゃめちゃ簡単なコードなんですよね.初心者でも数日勉強すればできるはずです!
ビットコインの自動売買システムを作りながらプログラミングを学ぶ動画教材も販売しているので興味がある方は是非!
前準備
まず,前準備としてTwitterアカウント及びbitFlyerアカウントをプログラムからいじるためにAPIキーの発行を行いましょう.
- Twitter Application ManagementからTwiterのAPIキーを発行(要ログイン)
- bitFlyer DeveloperからbitFlyerのAPIキーを発行(要ログイン)
今回はサクッと作ってみるだけなので細かい解説は省きます.
プログラミング言語は僕が好きなRubyを使って行きますね!.
イケハヤさんのつぶやき取得
では,まずはイケハヤさんのつぶやきをTwitterから取得してみましょう.
gem install twitter
でtwitterのgemをインストールします.
そして,わずか数行の以下のコードを書けばイケハヤさんのつぶやきを取得することができるんです.
require 'twitter' stream = Twitter::Streaming::Client.new do |config| config.consumer_key = "先ほど登録したTwitterのAPIのconsumer key" config.consumer_secret = "先ほど登録したTwitterのAPIのconsumer secret" config.access_token = "先ほど登録したTwitterのAPIのaccess token" config.access_token_secret = "先ほど登録したTwitterのAPIのaccess token secret" end stream.user do |status| if status.is_a?(Twitter::Tweet) if status.user.screen_name == "IHayato" puts status.text end end end
やってることはすごく簡単で,自分のタイムラインをリアルタイムに監視して,『流れてきたツイートがイケハヤさんのものだったらつぶやきを表示』というプログラムを組むだけ.
簡単につぶやきを取得することができました.
#イケハヤフラグを検出
では,次にハッシュタグ『#イケハヤフラグ』が含まれているつぶやきのみを表示させてみます.
というのも,イケハヤさんは以下のようにハッシュタグ『#イケハヤフラグ』をつけて相場をコントロールしているんですよw
レバ25倍でBTCロング仕掛けました! #イケハヤフラグ https://t.co/4QhqmqEv26
— イケダハヤト@仮想通貨 (@IHayato) 2017年11月12日
今回は『#イケハヤフラグ』と『ロング』という単語が含まれていた時に「イケハヤさんがロングした(買い注文をした)ので自分は逆に売り注文をする』という処理をしたいので,以下のようなプログラムになります.
require 'twitter' stream = Twitter::Streaming::Client.new do |config| config.consumer_key = "先ほど登録したconsumer key" config.consumer_secret = "先ほど登録したconsumer secret" config.access_token = "先ほど登録したaccess token" config.access_token_secret = "先ほど登録したaccess token secret" end stream.user do |status| if status.is_a?(Twitter::Tweet) if status.user.screen_name == "IHayato" tweet_text = status.text if (/イケハヤフラグ/ =~ tweet_text) && (/ロング/ =~ tweet_text) #イケハヤフラグとロングがツイートに含まれているので,売り注文を出す処理 end end end end
文字の解析には,正規表現と呼ばれるものを使用しました.
これを使えば,文字列の中にある文字列が含まれているかどうかを簡単に検出できるんですね.
/りんご/ =~ ”青りんご"
はtrue
ですが,/オレンジ/ =~ ”青りんご"
はfalse
といったように,左辺の文字列が右辺に含まれているかを調べています.
売り注文を出す
あとは,上記の条件が満たされた時にbitFlyerで売り注文を入れるだけですね.
これもめっちゃ簡単で,数行のプログラムでOK.
とりあえず,1BTCの成行売り注文を入れるプログラムを書きました (bitFlyer関係の詳しいプログラムは動画でめちゃめちゃ丁寧に解説しています)
require "net/http" require "uri" require "openssl" key = "先ほど取得したbitFlyerのAPI Key" secret = "先ほど取得したbitFlyerのAPI Secret" timestamp = Time.now.to_i.to_s method = "POST" uri = URI.parse("https://api.bitflyer.jp") uri.path = "/v1/me/sendchildorder" body = '{ "product_code": "FX_BTC_JPY", "child_order_type": "MARKET", "side": "SELL", "size": 1, }' text = timestamp + method + uri.request_uri + body sign = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha256"), secret, text) options = Net::HTTP::Post.new(uri.request_uri, initheader = { "ACCESS-KEY" => key, "ACCESS-TIMESTAMP" => timestamp, "ACCESS-SIGN" => sign, "Content-Type" => "application/json" }); options.body = body https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true response = https.request(options) puts response.body
全部組み合わせる
では,先ほど書いた『#イケハヤフラグ』の検出プログラムと『bitFlyerで売り注文』のプログラムを組み合わせましょう!
require 'twitter' require "net/http" require "uri" require "openssl" stream = Twitter::Streaming::Client.new do |config| config.consumer_key = "先ほど登録したTwitterのAPIのconsumer key" config.consumer_secret = "先ほど登録したTwitterのAPIのconsumer secret" config.access_token = "先ほど登録したTwitterのAPIのaccess token" config.access_token_secret = "先ほど登録したTwitterのAPIのaccess token secret" end stream.user do |status| if status.is_a?(Twitter::Tweet) if status.user.screen_name == "IHayato" tweet_text = status.text if (/イケハヤフラグ/ =~ tweet_text) && (/ロング/ =~ tweet_text) key = "先ほど取得したbitFlyerのAPI Key" secret = "先ほど取得したbitFlyerのAPI Secret" timestamp = Time.now.to_i.to_s method = "POST" uri = URI.parse("https://api.bitflyer.jp") uri.path = "/v1/me/sendchildorder" body = '{ "product_code": "FX_BTC_JPY", "child_order_type": "MARKET", "side": "SELL", "size": 1, }' text = timestamp + method + uri.request_uri + body sign = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha256"), secret, text) options = Net::HTTP::Post.new(uri.request_uri, initheader = { "ACCESS-KEY" => key, "ACCESS-TIMESTAMP" => timestamp, "ACCESS-SIGN" => sign, "Content-Type" => "application/json" }); options.body = body https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true response = https.request(options) puts response.body end end end end
本来はもっとメソッドを定義するなりして見やすくしたり,APIキーの管理をしっかりするべきなのですが,何せ10分で書いたのでw
ということで,完成しましたよ!これであなたも億万長者!
※このコードを動かして損しても一切責任は追えません.
※テストしたかったのですがイケハヤさんがなかなか『イケハヤフラグ』をつぶやいてくれないので確認できず… エラーあるかも.
やってることはすごくシンプル!
どうでしょうか?意外と簡単そうじゃなかったですか?
今回書いたコードはネタでしたが,上手くやれば普通に稼げるプログラムになるはず
今まで400人に受講してもらった,ビットコインの自動売買システムを作りながらプログラミングを学ぶ動画教材の購入者にもプログラミング完全初心者がいらっしゃりますが,数日学んだだけで簡単な自動売買システムを作れるようになりました.
ビットコインFXは手動でやるのはかなり効率悪いので,プログラミングを学んで自動化することをオススメしますw
また,僕の講座はA8.netでアフィリエイトもできるのでビットコインFXやってるブロガーさんは記事ネタにもなります〜!
僕のブログ経由だと半額の割引になるのでかなりお得かと!
クーポン付きリンク
[/btn]