見出し画像

BitMEX の IP BAN アクセス制限を回避する方法〈発注管理〉Pythonコード

最近 BitMEX からアクセス制限を受けたという報告が増えました。
どうやら BitMEX へのアクセスが増大しているため、明らかに怪しいアクセスは IP アドレスごと BAN  (アクセス禁止) にしているそうです。

BitMEX 側では BOT の挙動を疑っており、無駄なアクセスをする BOT は改善を求め改善されるまでは BAN 解除を許さないそうです。

通常の BOT でも以下のような場合に BAN になる事が分かりましたので、その解決策として、発注時のロット管理をする Pyhton コードをつくりましたので、分からない方はぜひ参考にしてください。コードはあくまでサンプルです。


Python コード

使用ライブラリ
CCXT
BitMEX Python client

API_KEY = 'Your API Key'
API_SECRET = 'Your API Secret'
TEST_NET = 0  #Real Account: 0   Test Account: 1 

def client():
    
    import bitmex
    client = bitmex.bitmex()
    
    if(TEST_NET == 1):
        Test=True
        
    else:
        Test=False
    
    client = bitmex.bitmex(test=Test, api_key=API_KEY, api_secret=API_SECRET)
    return client

def bitmex():
    
    import ccxt
    bitmex = ccxt.bitmex({

       
       'apiKey': API_KEY,
       'secret': API_SECRET,

       })

    if(TEST_NET == 1):
       
        bitmex.urls['api'] = bitmex.urls['test']
    
   
    return bitmex
    
     #レバレッジとロット数をチェックする関数
def Levarage_Check(AccountLevarage, Lot, Balance):
    
    maxLot = Balance*AccountLevarage
    
    if(Lot > 0 and Lot < maxLot):
        
        return 1
 #API
def getJson(label):
    
    rtn = None
    
    try:
        if label == 'ticker':
            rtn = client().Instrument.Instrument_get(filter=json.dumps({'symbol': 'XBTUSD'})).result()

        elif label == 'balance':
            rtn = bitmex().fetch_balance()

        elif label == "position":
            rtn = bitmex().private_get_position()
    
    except Exception as e:
        Output(str(TimeCurrent()) + " Exception => Get Json: " + label + str(e))
        rtn = None
        
    finally:
        return rtn
        
#######################################################################
     #CCXT
t = getJson('ticker')
b = getJson('balance')
p = getJson('position')
 #Bid を取得
Bid = t[0][0]['bidPrice']
 #スライダーで指定したレバレッジ
AccountLevarage = p[0]['leverage']
 #残高 XBT => USD
WalletBalance = b['info'][0]['walletBalance']
XBT = WalletBalance*0.00000001
Balance = XBT*Bid
 #Lot数作成
Levarage = 1.0
Lot = Balance*Levarage
 #ロット数が間違えていなければ 1 が返る
Order_Lot = Levarage_Check(AccountLevarage, Lot, Balance)

if(Order_Lot == 1):
    新規オーダー
    



この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

45

この記事が入っているマガジン

仮想通貨
仮想通貨
  • 193本
コメント (2)
mazmexさんのコードを使わないとJSON解析でワーニングが返ってくるようです
https://github.com/mazmex7/BitMEX-API-python
作らなきゃと思ってたコードが手に入りました、ありがとうございます。ワーニングはmazmexさんのコードを使うことで解決できました。
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。