PhemexのFundingRateのスクレイピングプログラム (python) Bybitとの比較
こんにちは、はぐです。
最近、Bybitに資金を移し、Funding Rateを貰う生活してます。
まだ2週間もやっていないのですが、安定して収益になるので心の平穏がおとずれています。
この状況がいつまで続くかわかりませんが、もっと早くやっていれば良かったです。
今回の記事は全て無料で読めます。
もし参考になって、お金を払ってもよいと感じたなら、500円お願いします。
ビール代にさせていただきます(^^)
こちらのサイト、https://www.bybt.com/ja/FundingRate では、各取引所のFRが見れます。
で、今日(4/15)に見てみたら、BybitよりPhemexの方が高いFRでした。
それならBybitとPhemex、履歴をとって比較しようと思いました。
Bybitは、https://www.bybit.com/ja-JP/contract-rules?type=inverse からエクセルファイルとして取れます。
Phemexは、https://phemex.com/ja/contract/funding-history から見れるのですが、データーとしてダウンロードできません。
仕方がないので、スクレイピングするプログラム書いてみました。
Selenium + ChromeDriverですが、インストール方法はググってください。
こちらがコード内容です。上のファイルと同じです。
ちょっとループ抜けるところが手抜き(^^;
import os
import signal
import csv
from datetime import datetime, timezone, timedelta
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import Select
URL = "https://phemex.com/ja/contract/funding-history"
SAVE_FILE = "phenex_fr.csv"
if __name__ == "__main__":
# selenium
# driverのセットアップ
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1800x1200') # 広めにしないとボタンが隠れて押せない
driver = webdriver.Chrome(options=options)
driver.implicitly_wait(30)
# データの取得
driver.get(URL)
# ページがロードされ切るまで待機
WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located)
with open(SAVE_FILE, 'w') as f:
writer = csv.writer(f, lineterminator="\n")
writer.writerow(['Time(UTC)','Funding Rate'])
while True:
fr_web_list = driver.find_elements_by_css_selector(".td.T2.svelte-cns3pj")
for i in range(0, len(fr_web_list), 4):
timestamp = fr_web_list[i].text
fr = (fr_web_list[i+3].text).replace("%","").replace('0.', '0.00')
print('{} {}'.format(timestamp, fr))
# timestampがJSTなので、UTCに直し。
dt = datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")
dt = dt.replace(tzinfo=timezone(timedelta(hours=+9), 'JST'))
dt = dt.astimezone(tz=timezone.utc)
timestamp = dt.strftime('%Y-%m-%d %H:%M:%S')
# 書き込み
writer.writerow([timestamp, fr])
try:
# 次へボタン
next_btn = driver.find_element_by_css_selector(".next.svelte-1hmom6e")
next_btn.click()
# ページがロードされ切るまで待機
WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located)
except:
break
print('end.')
ちなみに、今年の分を比較してみました。
Bybitから、Phemexを引いた結果をプロットしたものです。
グラフの左側が直近で、右に行くほど古いです。
何となくBybitの方がいいかなぁ、というグラフの感じですが、平均をとってみると、
-0.00000279 = -0.000279%
でしたので、ほんの少しだけPhemexの方が高い結果でした。
もし、これからFR生活やる方がいれば、参考にしてみてください。
あと、BybitとPhemexのデーターですが、両方とも途中で歯抜けがあります。メンテかな?
ついでに、2021/04/15までの取得したデーターを置いておきます。
それでは、ビバ、FR生活!!!
ここから先は
¥ 500
サポートしていただけると励みになります。 頂いたサポートは有益な他の方のnote購入代に当てさせて頂き、回していきたいと思います。