Chia sẻ bot tự động giao dịch trên sàn binance future

Chia sẻ bot tự động giao dịch trên sàn binance future

Chia sẻ bot tự động giao dịch trên sàn binance future

vonga89

Active Member
587
366
Em có viết chương trình cho phép tự động giao dịch trên sàn binance future, nhưng có thể nói là nó cũng không chạy hiệu quả lắm nên em lại chuyển qua trade tay.

Thấy trên diễn đàn có vẻ có nhiều bác pro về IT nên em chia sẻ lại ý tưởng cũng như source code của ctrinh em đã viết, biết đâu các bác lấy về cải thiện lại có thể trở thành 1 con bot hoàn hảo.

Ý tưởng ban đầu của con bot của em là có thể thực hiện giao dịch mua vào khi có 1 chỉ báo phân kỳ giữa RSI và giá xuất hiện trên chart BTC được cài đặt TradingView.
Đây là link của chỉ báo.
https://www.tradingview.com/script/AEN8MUyJ-RSI-Bullish-Divergence-Finder/

Để làm được việc này thì em cài đặt trên TradingView sao cho khi tín hiệu phân kỳ xuất hiện ( trên khung H1, H4, D1 ) thì nó sẽ gửi email với title chỉ định trước về địa chỉ mà em đăng ký.
Chương trình của em sẽ thực hiện quét email và phân tích title mà phán đoán rằng tín hiệu đó đã xuất hiện hay không, và tùy từng khung giờ mà đặt khối lượng giao dịch khác nhau.

Mã:
def alert_email_come():

    ret = False
    global g_interval
    global g_amount

    # creata a imap object
    imap = imaplib.IMAP4_SSL("imap.gmail.com")
    # login
    result = imap.login(username, password)

    # Use "[Gmail]/Sent Mails" for fetching
    # mails from Sent Mails.
    imap.select('"[Gmail]/All Mail"')

    response, messages = imap.search(None,  'UnSeen')
    # mark as read
    result, data = imap.uid('store', '542648', '+FLAGS', '(\\Seen)')

    messages = messages[0].split()
    mcount = len(messages)
    if(mcount > 0):
        for i in range(int(messages[-1]), int(messages[0]) - mcount, -1):
            # fetch
            res, msg = imap.fetch(str(i), "(RFC822)")

            for response in msg:
                if isinstance(response, tuple):
                    msg = email.message_from_bytes(response[1])
                    if ((msg["From"] == 'TradingView <[email protected]>') and (msg["Subject"].find('Divergence Found') != -1)):
                        # Divergence Found
                        if (msg["Subject"].find('M15') != -1):
                            g_interval = CandlestickInterval.MIN15
                            g_amount = g_amount_m15
                        elif (msg["Subject"].find('H1') != -1):
                            g_interval = CandlestickInterval.HOUR1
                            g_amount = g_amount_h1
                        elif (msg["Subject"].find('H4') != -1):
                            g_interval = CandlestickInterval.HOUR4
                            g_amount = g_amount_h4
                        else:
                            g_interval = CandlestickInterval.MIN3
                            g_amount = g_amount_m3
                       
                        logT.write("Alert for " + g_interval + " is raised!")
                        ret = True
    if(not ret):
      logT.write("No alert found")
    return ret

Thực hiện quét email 10 phút 1 lần và khi có email với title đặt trước sẽ thực hiện giao dịch mua.
Mã:
def btc_divergency_checking():

  pre_date = datetime.datetime.now().strftime("%Y%m%d")

  # Get key level price
  get_BTC_key_level_price()
  # loop
  while True:
      time.sleep(600)
 
      try:
          trade_cond = True
 
          current_date = datetime.datetime.now().strftime("%Y%m%d")
          # Is date changed
          if(current_date != pre_date):
              get_BTC_key_level_price()
              pre_date = current_date
 
          alert_raised = alert_email_come()
          if(not alert_raised) :
             continue
 
          position_exist = is_symbol_position_exist("BTCUSDT")
          if(position_exist):
              continue
 
          mk_price = get_mark_price("BTCUSDT")
          logT.write("Market price: " + str(mk_price))
          if(abs(g_key_level_price - mk_price)/mk_price > 0.03):
              logT.write("Price is not good to trade.")
              continue
 
          # Try to post order
          msg = "BUY " + str(g_amount) + " BTC at market price "
          send2tele(msg)
          send2tele_url("BTCUSDT")
          logT.write(msg)
          try:
            request_client = RequestClient(api_key=g_api_key, secret_key=g_secret_key)
            result = request_client.post_order(symbol="BTCUSDT", side=OrderSide.BUY, ordertype=OrderType.MARKET, quantity=g_amount)
          except Exception as ex:
            msg = "Failed to " + " BUY " + str(g_amount) + " BTC " + " at market price"
            logT.write(msg)
            send2tele(msg)
          post_tp_sl(mk_price)      
      except Exception as ex:
          logT.write("Exception:  " + str(ex))

Cũng hơi dài dòng nên em sẽ chia sẻ dần dần ở dưới.
Source code em gửi theo file đính kèm nhé.
Ah cũng chưa biết là có thể giúp các bác kiếm được tiền hay không mà có khi làm các bác mất tiền, nhưng bác nào phát triển được tiếp và có lòng thì donate cho em thì em xin nhận USDT theo địa chỉ TRC20 dưới ạ :D

TAKAx8uUG4QrRGrZJrsGioyyf77oLkK1aC





 
 

Đính kèm

  • TradeBot.zip
    11.9 KB · Xem: 21

Giới thiệu sách Trading hay
Thực Hành Phân tích Fibonacci

Tác giả sách là cựu trader quản lý quỹ kiêm học giả CMT. Sách đoạt giải và được xuất bản bởi Bloomberg Press. Sách khái quát từ cơ bản đến chuyên sâu về FIbonacci Trading
Chỉnh sửa lần cuối:

BÌNH LUẬN MỚI NHẤT

AdBlock Detected

We get it, advertisements are annoying!

Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.

Back
Bên trên

Miễn trừ trách nhiệm

Tất cả nội dung trên website này đều vì mục đích cung cấp thông tin và không phải lời khuyên đầu tư.

Tại Việt Nam, giao dịch CFD forex có các rủi ro nhất định, trong đó bao gồm rủi ro về pháp lý. Độc giả nên tìm hiểu kỹ trước khi đưa ra quyết định tham gia.