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.
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.
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 ạ
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 ạ
TAKAx8uUG4QrRGrZJrsGioyyf77oLkK1aC
Đính kèm
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ài viết liên quan