全自動freebitco.inのHigh-Lowをやらせるよ using マーチンゲール法
どうも、最近はBitcoin関係の記事が続きます。今回は以前の記事でも紹介した”Bitcoin Faucet”の”FreeBitcoin(freebitco.in)“で提供されているHighLowゲームで自動的に稼ぐコード、”お金のなる木”を書いたので公開しようと思います。手法は単純にマーチンゲール法を使っていこうと思います。
もしあなたが本サイトの記事をたくさん読んでくださっている方なら、察してくださったと思いますが、今回もPythonとSeleniumです。やはりWebブラウザ操作の自動化といったらこれでしょう。
OS : macOS Sierra
0. 免責
今回の記事で扱う項目は、HighLowゲームの自動化ということでかなりギャンブル的な成分を含みます。手法的にはマーチンゲール法という負けにくいものを採用していますが、それでも損をする可能性が0ではありません。以上のことを踏まえまして、全て自己責任でよろしく願いします。自分は一切の責任を負いません。
1. 下準備
さて、何事にも下準備は必要です。今回必要になるのは、Python及びSeleniumの実行環境です。こちらに関しては以前記事を書いているのでそちらを参考にして見てください。以前の記事ではUbuntuで環境構築を行なっていますが、他のOSでも基本的に同様の操作で環境構築ができると思います。
あと必要なものは、当たり前ですがFreeBitcoinのアカウントです。また、FreeBitcoinさんの登録にはBitcoinのWalletアドレスが必要になります。Walletにはたくさんの種類がありますが、自分が使っているのは、オンラインで日本語にも対応しアプリも提供されているBlockchain.infoさんです。FreeBitcoinさんに登録する際はまず、Blockchain.infoさんに登録してWalletアドレスをもらってください。
最後に準備してもらいますのが、ある程度のBitcoinです。いくら必要なのかと申しますと、できるだけたくさんという答えになります。というのも、今回採用した手法であるマーチンゲール法の性質上、資金が多い方が成功率は飛躍的に上昇します。詳しくは次の項をご覧ください。自分は実験のために4,000satoshiほど用意しました。
追記 2017/06/04
この手法で約4,000satoshiを回していたら破綻したので報告しておきます。実際に回す際はより多くの資金をご用意ください。ちなみに、約4,000satoshiは12回(0.024%)で破綻するので参考までに。現在もう少し破綻しにくい手法での実装を試みています。
追記終わり
2. マーチンゲール法
今回採用したマーチンゲール法は簡単にいうと”欲しがりません勝つまでは”です。具体的な手法は単純で負ける毎に掛け金を2倍にするだけです。そうすることで以下の表のように何連敗しても勝ったところではじめに賭けた金額がリターンされます。
# | 賭け金 | 合計賭け金 | リターン | 差 |
---|---|---|---|---|
1 | 1,000 | 1,000 | 2,000 | 1,000 |
2 | 2,000 | 3,000 | 4,000 | 1,000 |
3 | 4,000 | 7,000 | 8,000 | 1,000 |
4 | 8,000 | 15,000 | 16,000 | 1,000 |
この表では、はじめの賭け金を1,000としてペイアウトを2倍とした時の表です。表を見てもらえばわかると思いますが、負けても賭け金を倍々にしていくことで、はじめに賭けた金額がリターンされます。さらに、一回の試行での勝率が5割とすると、4連敗する確率が約6%、10連敗なら0.09%になりほぼほぼ到達しなさそうという感じになります。というわけで、一見すると必勝法なわけです。
しかし、もちろんこれにはいくつかのデメリットがあります。まずは”賭け金が増大に膨れ上がる”という点です。先ほどの表では4連敗した場合までしか書いていませんが、実際にはさらに連敗することが多々あります。仮に10連敗したとすると11戦目の賭け金は1,024,000になります。さらにここまでに10戦するまでに1,023,000もの金額を投入しています。つまり11線するためには2,047,000だけ資金が必要です。もし、連敗を続けているうちに、資金が尽きてしまったら、それまでの負け分はもちろん帰ってきません。以上のことから、この手法は”負けにくいけど負けた時の損害がとてつもなく大きい手法”と言えるでしょう。
また、”最大賭け金”という問題もあります。この手のギャンブルの場では賭け金の最大値が設けられている場合が多いです。この手法は資金が無限にあれば”負ける”ことはありませんが、仮に最大賭け金は100万までと決まっていたらそういうわけにはいきません。先ほどの10連敗の例を使いますと、11戦目の賭け金は100万を超えるので、制限が設けられていたらそこでおしまいです。
このような理由でマーチンゲール法は簡単に破綻するため、口が裂けても必勝法とは言えません。もし、この手法を”必ず勝つ手法”と説明していればそれは真っ赤な嘘です。
では、なぜ今回そんな手法を採用したのかと言いますと、FreeBitcoinなら”破綻しにくいから”です。Bitcoinについてちょっとでも詳しい方ならご存知だと思いますが、Bitcoinにはsatoshi(1satoshi = 0.00000001BTC = 約0.003円)というめちゃくちゃ小さい単位が存在します。そして、FreeBitcoinならこの最小金額からベットすることができます。これらを踏まえると先ほどの表はこのようになります。
# | 賭け金 | 合計賭け金 | リターン | 差 |
---|---|---|---|---|
1 | 0.00000001 | 0.00000001 | 0.00000002 | 0.00000001 |
2 | 0.00000002 | 0.00000003 | 0.00000004 | 0.00000001 |
3 | 0.00000004 | 0.00000007 | 0.00000008 | 0.00000001 |
4 | 0.00000008 | 0.00000015 | 0.00000016 | 0.00000001 |
そして、仮に10連敗してもその時点の累計賭け金は0.00002056BTC (= 約6円)です。そして最大賭け金は2BTCなので、27連敗することができます。もちろんリターンは少ないですが、それはしょうがないです。もし、資金が潤沢にあるのなら、初期賭け金を引き上げてもいいかもしれません。
そんなこんなで、今回はマーチンゲール法です。
3. プログラム
さて、本記事のメインです。今回書いたコードを掲載します。今回はPython3とSeleniumで作ったので、環境構築は簡単だと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
#coding: utf-8 from selenium import webdriver from datetime import datetime BC_ADRESS = "Mail or Wallet" PASSWORD = "PASSWORD" def l(str): print("%s : %s"%(datetime.now().strftime("%Y/%m/%d %H:%M:%S"),str), flush=True) def s(t = 5): import time time.sleep(t) def x(str = ""): import traceback traceback.print_exc() if str != "": l(str) def start(): b = webdriver.Chrome('./chromedriver') b.get('https://freebitco.in/') s() return b def login(): b.find_element_by_css_selector('.login_menu_button a').click() i = b.find_element_by_id('login_form_btc_address') i.send_keys(BC_ADRESS) i = b.find_element_by_id('login_form_password') i.send_keys(PASSWORD) b.find_element_by_id('login_button').click() s() def show_page(): b.find_element_by_css_selector('a.double_your_btc_link').click() s() def martingale(reset_flag = True): s(3) b.find_element_by_id('manual_enable_sounds').location_once_scrolled_into_view l('Start Martingale') while True: if reset_flag: b.find_element_by_id('double_your_btc_min').click() else: b.find_element_by_id('double_your_btc_2x').click() s(0.5) i = b.find_element_by_id('double_your_btc_bet_hi_button') i.location_once_scrolled_into_view i.click() s(0.5) # win or lose if b.find_element_by_id('double_your_btc_bet_win').text != "" and b.find_element_by_id('double_your_btc_bet_lose').text == "": reset_flag = True elif b.find_element_by_id('double_your_btc_bet_win').text == "" and b.find_element_by_id('double_your_btc_bet_lose').text != "": reset_flag = False print(reset_flag) if __name__ == '__main__': try: b = start() except: x('Failed Start') quit() try: login() except: x('Failed Login') quit() try: show_page() except: x('Failed Arrive Page') quit() try: martingale() except: x('Failed Martingale') quit() |
ご利用の際は、コード上部にあるBC_ADRESSとPASSWORDの値をご自身のログイン情報に書き換えてください。あとは、ログインからマーチンゲールまで勝手にやってくれます。
どうぞご自由にお使いください。
おわりに
さて、今回はFreeBitcoinさんの自動化をやりました。またマーチンゲール法という簡単ながら意外と使える手法も実装しました。自動化というのはやっていて大変面白いです。それが稼ぎに繋がるなら嬉しさ倍増なのです。今回のプログラムはまだ改善の余地があるので改善していこうと思います。