今回はyobitでダイスゲームの自動化に成功したのでシェアしておきます。
※yobitの登録方法はこちらから。
yobitのダイスゲームは自分でポチポチと地味に手動でプレイしてたんですが、ダイスのAPIがないのに他の人達がダイスゲームの自動化出来ているのは何でだろう?とちょっと調べてみたらあっさりと手法が理解出来ました。
この方法を使えば自分の編み出したアルゴリズムでダイスゲームが自動化されて、上手くいけば自分が寝ている間でも24時間不眠不休でダイスゲームで稼いでくれるという、まさに夢の不労収入が実現出来ます!
もしくはyobitでレンディングしていて、「毎日5回ダイスゲームしないと日利がゲット出来ないのが面倒くさい...」という方にもオススメの方法です。
やり方はパソコンが得意(?)な方だとさほど難しくありません。
Windowsパソコンとインターネット接続、あとpythonの少しの知識されあれば可能です。
では以下、手順を説明します。
(※以下の記事はソフトウェアの動作環境について少し知識がある方を対象としています。サポートは受け付けておりません。自己責任で何卒💦)
環境構築
https://www.inet-solutions.jp/technology/python-selenium/
このページなどを参照にしてpythonの実行環境とseleniumと、chrome用のWebドライバをインストールします。
この段階でpython、selenium、chrome、chrome用Webドライバがインストールされている状態にしておきます。
プログラム(ソースコード)
今回のダイスゲームの自動化は、chromeでブラウザ上に表示されたyobitのダイスゲームの画面で、seleniumというWebブラウザのテスト自動化ツールを使ってリモート操作(Webスクレイピング)する、という手法を用いています。
以下、pythonのソースコードです。
プログラム実行
pythonを実行するとchromeが自動的に立ち上がるので、自分のユーザー名とパスワードでyobitにログインします。
毎回pythonを実行すると最初にログインして、おなじみの「私はロボットではありません」というパネルで車選んだり店の外観を選んだりしてロボットではない事を証明して、二段階認証している場合はキャプチャコードを入力します。
この手続きは結構面倒なのでログインも自動化しようと考えましたが「私はロボットではありません」を自動で解除する技術はもちろん持ち合わせていないので自分には無理だと悟りました。
(ていうか逆に解除出来たとしたらグーグルのこのセキュリティはザルだというコトですが...)
無事ログイン出来たらyobitのダイスゲームの画面が表示されると思います。
この時にダイスゲーム画面の "□Show my bets only" にチェックしておくと自分のベットだけが表示されて結果が凄く分かりやすいです。
で、pythonの標準出力に
When logged in manually and got ready, type enter key.
と出てるので、何かENTERキーを押します。

すると自動で最低ベット金額(このソースコードでは0.00000010BTC)が入力されて、( Roll < 48) のボタンが押されてゲームが始まります。
→ 勝ったら再び0.00000010BTCが入力されて( Roll < 48) のボタンが押されてベットされます。
→ 負けたら倍の0.00000020BTCが入力されて( Roll < 48) のボタンが押されてベットされます。
連続して負け続けると、2倍、4倍、8倍... 2n倍 と2倍ずつベット金額が増えていきます。
WinかLostかの結果が表示されたら、次のベットが自動的に始まります。
1回のベットは1秒~1.5秒くらいの間隔です。
(使用環境によっては速くなったり遅くなったりするのでウェイトを調整する必要があります)
以上、プログラムを強制終了するか破産するまで繰り返されます。
これは有名なゲーム理論のマーチンゲール法のアルゴリズムです。
つまり倍掛けゲームです。
これは必勝法でもなんでもないんですが、とりあえずある程度は確率的に資産が増えると思います。
「お、コレは実質錬金術じゃね?ウハウハじゃね?」
と欲張ってずっとプログラムを動かしていると多分いつかは破滅します。潤沢な資金があれば別ですが。
ちなみに0.0025BTCがyobitの口座にある状態で、3時間ほどプログラムを実行した結果、5814回ベットして0.00028830BTC(250円くらい)の儲けが出ました。
この時の連続負け数は14でした。
18回連続で負けてたら破産してたところです。
【試行結果】

ダイスゲームの(ほぼ)必勝法はあるちゃーあるんですが、ここでは伏せておきます。
上述のpythonサンプルはベタで分かりやすく記述しているので、サンプルのスクリプトを変更して自分なりの必勝アルゴリズムを実装して是非ともウハウハな不労収入生活を送ってみてください!!
本日は以上です。
今、激アツ!の仮想通貨取引所
yobit
※yobitの登録方法はこちらから。
yobitのダイスゲームは自分でポチポチと地味に手動でプレイしてたんですが、ダイスのAPIがないのに他の人達がダイスゲームの自動化出来ているのは何でだろう?とちょっと調べてみたらあっさりと手法が理解出来ました。
この方法を使えば自分の編み出したアルゴリズムでダイスゲームが自動化されて、上手くいけば自分が寝ている間でも24時間不眠不休でダイスゲームで稼いでくれるという、まさに夢の不労収入が実現出来ます!
もしくはyobitでレンディングしていて、「毎日5回ダイスゲームしないと日利がゲット出来ないのが面倒くさい...」という方にもオススメの方法です。
やり方はパソコンが得意(?)な方だとさほど難しくありません。
Windowsパソコンとインターネット接続、あとpythonの少しの知識されあれば可能です。
では以下、手順を説明します。
(※以下の記事はソフトウェアの動作環境について少し知識がある方を対象としています。サポートは受け付けておりません。自己責任で何卒💦)
環境構築
https://www.inet-solutions.jp/technology/python-selenium/
このページなどを参照にしてpythonの実行環境とseleniumと、chrome用のWebドライバをインストールします。
この段階でpython、selenium、chrome、chrome用Webドライバがインストールされている状態にしておきます。
プログラム(ソースコード)
今回のダイスゲームの自動化は、chromeでブラウザ上に表示されたyobitのダイスゲームの画面で、seleniumというWebブラウザのテスト自動化ツールを使ってリモート操作(Webスクレイピング)する、という手法を用いています。
以下、pythonのソースコードです。
from selenium import webdriverfrom selenium.webdriver.common.by import Byimport timeimport sysimport randomimport refrom selenium.webdriver.common.keys import KeysInitialValue = 0.00000001InitialValue = 0.0000001MaxValue = 0.02Count = 0WinCount = 0LoseCount = 0MaxLoseCount = 0CriticalLoseCount = 0ContinuousLoseCount = 0NumberExpressionPattern = r'([+-]?[0-9]+\.?[0-9]*)'################################################################ Get current value of currency#フォームから現在の資産を取得する# ret(float): value###############################################################def GetCurrentAmount():element = driver.find_element_by_class_name("chosen-single")list1 = element.find_elements(By.TAG_NAME, "span")line = ""for j in range(0, len(list1)):if j < len(list1) - 1:line += "%s\t" % (list1[j].text)else:line += "%s" % (list1[j].text)# 数字のみを取得するnumber = re.findall(NumberExpressionPattern, line)ret = 0.0for j in number:ret = float(j)return ret############################################################# Main routine## Yobitで自力でログインする# ログインしてからIDEでリターンキーを押してスタート############################################################if __name__ == '__main__':driver = webdriver.Chrome("./chromedriver.exe")#driver = webdriver.Firefox()driver.get("https://yobit.net/en/dice/")input ("When logged in manually and got ready, type enter key.") # Wait for logged inBetValue = InitialValueReturnValue = GetCurrentAmount() # 例 'BTC (Bitcoin) - 0.01123232 BTC'print(ReturnValue)LastValue = ReturnValue #最初は同じ金額while (True):#フォームをクリアするelement = driver.find_element_by_name('bet')#for i in range(12):# element.send_keys(Keys.BACK_SPACE); #一文字ずつ消去する方法#element.clear() #この方法では全然消えない!!element.send_keys(Keys.CONTROL,"a") #CTRL+Aで全選択element.send_keys('%03.8f' % BetValue)time.sleep(0.1) # Wait for DDoS proofdriver.find_element_by_class_name('clDicePlay').click() # ( Roll < 48) buttontime.sleep(0.5) # Wait for DDoS proof############################################################# Simulator############################################################## rnd = random.randrange(100)## if (rnd > 52):## ReturnValue = ReturnValue + BetValue#### elif (rnd < 48):## ReturnValue = ReturnValue - BetValue#### else:## ReturnValue = ReturnValue - BetValue#### ReturnValue = round(ReturnValue, 8)########################################################################################################################Count = Count + 1WaitCount = 0while (True):# フォームから現在の資産を取得するReturnValue = GetCurrentAmount() # 例 'BTC (Bitcoin) - 0.01123232 BTC'if (LastValue == ReturnValue): # Result is not yet set#print ("Now playing...")time.sleep(0.3) # Wait for DDoS proofWaitCount = WaitCount + 1if (WaitCount > 33): # Betting pending (Something strange...)driver.find_element_by_class_name('clDicePlay').click() # Push button againprint ("Push the button again. " )continueelse:breakif (LastValue > ReturnValue): # LoseBetValue = BetValue * 2 # Apply Martingale methodLoseCount = LoseCount + 1ContinuousLoseCount = ContinuousLoseCount + 1if (MaxLoseCount < ContinuousLoseCount):MaxLoseCount = ContinuousLoseCountelse: # WinBetValue = InitialValue # Apply Martingale methodWinCount = WinCount + 1ContinuousLoseCount = 0LastValue = ReturnValueprint(str(Count) + " Win:" + str(WinCount) + " Lose:" + str(LoseCount) + " MaxLose:" + str(MaxLoseCount) + " Value:" + str(LastValue) )driver.close()driver.quit()sys.exit()
プログラム実行
pythonを実行するとchromeが自動的に立ち上がるので、自分のユーザー名とパスワードでyobitにログインします。
毎回pythonを実行すると最初にログインして、おなじみの「私はロボットではありません」というパネルで車選んだり店の外観を選んだりしてロボットではない事を証明して、二段階認証している場合はキャプチャコードを入力します。
この手続きは結構面倒なのでログインも自動化しようと考えましたが「私はロボットではありません」を自動で解除する技術はもちろん持ち合わせていないので自分には無理だと悟りました。
(ていうか逆に解除出来たとしたらグーグルのこのセキュリティはザルだというコトですが...)
無事ログイン出来たらyobitのダイスゲームの画面が表示されると思います。
この時にダイスゲーム画面の "□Show my bets only" にチェックしておくと自分のベットだけが表示されて結果が凄く分かりやすいです。
で、pythonの標準出力に
When logged in manually and got ready, type enter key.
と出てるので、何かENTERキーを押します。
すると自動で最低ベット金額(このソースコードでは0.00000010BTC)が入力されて、( Roll < 48) のボタンが押されてゲームが始まります。
→ 勝ったら再び0.00000010BTCが入力されて( Roll < 48) のボタンが押されてベットされます。
→ 負けたら倍の0.00000020BTCが入力されて( Roll < 48) のボタンが押されてベットされます。
連続して負け続けると、2倍、4倍、8倍... 2n倍 と2倍ずつベット金額が増えていきます。
WinかLostかの結果が表示されたら、次のベットが自動的に始まります。
1回のベットは1秒~1.5秒くらいの間隔です。
(使用環境によっては速くなったり遅くなったりするのでウェイトを調整する必要があります)
以上、プログラムを強制終了するか破産するまで繰り返されます。
これは有名なゲーム理論のマーチンゲール法のアルゴリズムです。
つまり倍掛けゲームです。
これは必勝法でもなんでもないんですが、とりあえずある程度は確率的に資産が増えると思います。
「お、コレは実質錬金術じゃね?ウハウハじゃね?」
と欲張ってずっとプログラムを動かしていると多分いつかは破滅します。潤沢な資金があれば別ですが。
ちなみに0.0025BTCがyobitの口座にある状態で、3時間ほどプログラムを実行した結果、5814回ベットして0.00028830BTC(250円くらい)の儲けが出ました。
この時の連続負け数は14でした。
18回連続で負けてたら破産してたところです。
【試行結果】
ダイスゲームの(ほぼ)必勝法はあるちゃーあるんですが、ここでは伏せておきます。
上述のpythonサンプルはベタで分かりやすく記述しているので、サンプルのスクリプトを変更して自分なりの必勝アルゴリズムを実装して是非ともウハウハな不労収入生活を送ってみてください!!
本日は以上です。
今、激アツ!の仮想通貨取引所
yobit
ビットコインを買うなら
コメント
コメント一覧
最近のTwitterの投稿をみてダイスの自動化やってるんだろうなーと思い、私もPythonでの自動化とモンテカルロ法でやってみようと試行錯誤してました。
ただPythonでYobitにログインするところで躓いてたので、その方法やコードまで載せてくれる太っ腹さに感動してます!ありがとうございます!
マルチシグに対応してないのか何なのかはわかりませんが、現状ではyobitにネムを送金するとGOXします。
逆もまたしかりです。
なのでアービトラージで稼ぐというのはあまり期待できません。
お気をつけください。
該当ページも非公開にしました。
自分、もう何かやる気なくなりました...。