用不到150行python代碼打造專屬你自己的自動化binance自動下單交易程式

更新於 發佈於 閱讀時間約 13 分鐘
投資理財內容聲明
raw-image

在這篇文章中,我們將介紹如何使用Python來創建自動化的Binance交易程式。我們將利用Binance API,這是一個允許我們通過程式訪問Binance交易所的接口。這樣,我們就可以在程式中設定交易策略和條件,自動下單交易。

在開始之前,您需要先申請一個Binance交易所帳戶。

raw-image

可以掃我的QR CODE來建立binance帳戶,這樣我們都會取得價值100美金的手續費反現卷。

接下來,請按照以下步驟進行操作:

步驟1:安裝必要的庫

在Python中,有一些庫可以用來訪問Binance API,這裡我們會使用Binance API庫。您可以使用以下命令在終端中安裝該庫:

pip install python-binance

步驟2:設置API密鑰

要訪問Binance API,您需要在Binance交易所中創建一個API密鑰。在Binance中,請前往“帳戶設置”>“API管理”,並創建一個新的API密鑰。請注意,請務必保護好您的API密鑰,以防止濫用。

步驟3:創建Python腳本

現在,讓我們開始創建Python腳本。以下是一個簡單的範例程式碼,它可以幫助您開始使用Binance API進行交易:

主程式

主程式

沒錯主程式就只有15行,定義了一個while迴圈讓他持續執行,並且在每一次迴圈

做以下幾件事情:

1.利用get_signal函數取得漲跌方向,BUY,SELL,PASS

2.取得當前時間

3.將多空方向和當前時間打印在屏幕上

4.若有出現BUY或SELL的訊號則發送此訊號至telegram

同一時間利用place_order函數串接binance api光速下單

5.這裡設定60*15是因為我的交易頻率是15分鐘,因此等待下一根k棒出現

6.刷新屏幕

步驟4:定義place_order函數

raw-image

其中api_key和api_secret可以到binance api官方網站取得


步驟五:定義send_to_telegram函數

raw-image

其中apiToken跟chatID的取得方式如下:

首先手機安裝telegram然後打開telegram搜索好友輸入bot

尋找一個叫做BotFather和IDBot的傢伙

raw-image

跟BotFather聊天

輸入/newbot

raw-image

之後他會問你要取什麼名字,注意名字要用bot結尾,之後如果沒有跟別人撞名

應該就會新建好一個bot同時他會告訴你該bot的apiToken

chatID取得:

這個更簡單了跟IDBot聊天輸入:/start

IDBot就會回覆你一個chatID

步驟六:定義get_signal函數


這邊我們可以使用finlab_crypto套件幫忙製作

import numpy as np
import finlab_crypto
from finlab_crypto import Strategy

pairs = ['BTCUSDT'] #交易對
freq = '15m' # 資料頻率
n1n2 = {}

for i in pairs:
n1n2[i] = []

def Optimization(pair,freq):
# 歷史價格數據
ohlcv = finlab_crypto.crawler.get_nbars_binance(pair,freq,10000,client)
#定義策略
@Strategy(sma1=20, sma2=60)
def sma_strategy(ohlcv):
# 定義均線策略進出場條件
close = ohlcv.close
sma1 = close.rolling(sma_strategy.sma1).mean()
sma2 = close.rolling(sma_strategy.sma2).mean()
entries = (sma1 > sma2) & (sma1.shift() < sma2.shift())
exits = (sma1 < sma2) & (sma1.shift() > sma2.shift())
figures = {'overlaps': {'sma1': sma1,'sma1': sma2}}
return entries, exits, figures
# 策略超參數
variables = {
'sma1': np.arange(5, 100, 5),
'sma2': np.arange(5, 200, 5),
}
#回測及優化
portfolio = sma_strategy.backtest(ohlcv, variables=variables, freq=freq ,plot=True)
temp = portfolio.total_profit()[portfolio.total_profit()==portfolio.total_profit().max()].to_frame().reset_index()
n1n2[pair] = [temp['sma1'].values[0],temp['sma2'].values[0]]
for pair in pairs:
portfolio = Optimization(pair,freq)

其中在這一段

#定義策略
@Strategy(sma1=20, sma2=60)
def sma_strategy(ohlcv):
# 定義均線策略進出場條件
close = ohlcv.close
sma1 = close.rolling(sma_strategy.sma1).mean()
sma2 = close.rolling(sma_strategy.sma2).mean()
entries = (sma1 > sma2) & (sma1.shift() < sma2.shift())
exits = (sma1 < sma2) & (sma1.shift() > sma2.shift())
figures = {'overlaps': {'sma1': sma1,'sma1': sma2}}
return entries, exits, figures

定義了一個簡單的雙均線策略,黃金交叉買進死亡交叉賣出,但是問題來了

我們怎麼知道最好的兩條均線參數是多少呢?sma5 sma10 sma20 sma60?

portfolio = sma_strategy.backtest(ohlcv, variables=variables, freq=freq ,plot=True)
temp = portfolio.total_profit()[portfolio.total_profit()==portfolio.total_profit().max()].to_frame().reset_index()
n1n2[pair] = [temp['sma1'].values[0],temp['sma2'].values[0]]

於是上面這一行代碼就是在做backtest回測尋找最佳的均線參數

raw-image

並且還可以看到回測結果

以及夏普ratio和pbo(策略是overfitting的機率)

raw-image

一般來說建議pbo小於30%才建議使用sharpe_ratio大於0才建議使用

小知識:

在1976年到2011年期間,波克夏·哈薩威公司的夏普比率為0.76,高於任何其他股票或有超過30年歷史的互惠基金。同期股票市場的夏普比率為0.39。

因此我這個回測結果還算堪用,他幫我找了許多組的雙均線組合

最後發現最好的是[65,95]這一組

於是我們就可以用sma65和sma95來製作一個簡單的雙均線策略基於這個概念

打造一個get_signal函數

def get_signal(
pair='BTCUSDT',
freq='15m',
n_bar = 10000,
client = client,
n1 = 65,
n2 = 95,
):
# get data
ohlcv = finlab_crypto.crawler.get_nbars_binance(pair,freq,n_bar,client)
# get signal table
table = pd.DataFrame()
table['close'] = ohlcv.close
table['n1'] = ohlcv.close.rolling(n1).mean()
table['n2'] = ohlcv.close.rolling(n2).mean()
table['buy'] = ((table['n1'] > table['n2']) & (table['n1'].shift() < table['n2'].shift())).astype(int)
table['sell'] = ((table['n1'] < table['n2']) & (table['n1'].shift() > table['n2'].shift())).astype(int)
table = table.replace(0,np.nan).tail(1)
if table[['buy','sell']].sum().sum() == 0:
signal = 'PASS'
if table[['buy']].values[0][0] == 1:
signal = 'BUY'
if table[['sell']].values[0][0] == 1:
signal = 'SELL'
return signal,n1,n2

這個函數就是去取得n根k棒(我預設10000根)然後去算兩條均線n1,n2

之後去判斷是黃金交叉還是死亡交叉來return一個signal(BUY,SELL,PASS)

好至此我們先前在步驟3提到所需要的三個函數

1.placer_order

2.send_to_telegram

3.get_signal

全數都完成了

整個資料夾在VSCODE裡面就長這樣

raw-image

除去README.md就只有兩個檔案其中為了保持main.py清楚明瞭

我把大部分函數都放置在utils.py

包含place_order,send_to_telegram和get_signal

最後怕單純只有cmd的介面太單調了,我請chatgpt幫我畫了隻可愛貓咪在裡面

raw-image

實際執行畫面

raw-image

它顯示出一隻可愛貓咪

告訴我現在為看漲然後告訴現在時間是幾點

之後幫我下了一單多單,還成功成交

之後我要做的事情就是確保網路不要斷線,電腦不要掛掉

就可以免去人為的感情因素由程式自動化幫我買進賣出

我的文章到此結束如果您喜歡這篇文章歡迎訂閱按讚

或是請我喝杯咖啡

https://www.paypal.com/paypalme/skywalker0803r

感謝你的收看😃

完整代碼連結:

https://github.com/skywalker0803r/telegram-investment_crypto-advice-bot/blob/main/utils.py






留言
avatar-img
留言分享你的想法!
于正龍(Ricky)-avatar-img
發文者
2025/03/12
將自動化交易程式部屬到雲端提及了這篇文章,趕快過去看看吧!
羅元佳-avatar-img
2023/12/20
您好,可以請教您我該如何在本機install finlab_crypto嗎?如果您方便教學的話我願意請你喝杯咖啡😇qaz5282855@gmail.com
于正龍(Ricky)-avatar-img
發文者
2025/03/12
羅元佳 pip install finlab_crypto
avatar-img
于正龍(Ricky)的沙龍
36會員
55內容數
人工智能工作經驗跟研究
2025/04/15
這個簡陋的網站是我做的簡單幾個功能 1.股票走勢圖配上買賣點 2.近期買賣信號機率 參考自這篇論文: https://www.researchgate.net/profile/Omer-Sezer/publication/324802031_Algorithmic_Financial_T
Thumbnail
2025/04/15
這個簡陋的網站是我做的簡單幾個功能 1.股票走勢圖配上買賣點 2.近期買賣信號機率 參考自這篇論文: https://www.researchgate.net/profile/Omer-Sezer/publication/324802031_Algorithmic_Financial_T
Thumbnail
2025/04/11
Backtrader 是一個非常受歡迎且功能強大的 Python 回測框架,主要用於量化交易策略的開發、測試與實盤交易。它支援各種市場資料(如股票、期貨、外匯、加密貨幣等)以及多種回測功能,並且能夠輕鬆地擴展以適應各種交易策略。 Backtrader 的核心概念與結構 Backtrader 主要
Thumbnail
2025/04/11
Backtrader 是一個非常受歡迎且功能強大的 Python 回測框架,主要用於量化交易策略的開發、測試與實盤交易。它支援各種市場資料(如股票、期貨、外匯、加密貨幣等)以及多種回測功能,並且能夠輕鬆地擴展以適應各種交易策略。 Backtrader 的核心概念與結構 Backtrader 主要
Thumbnail
2025/03/12
最近發現一個雲端 Cloud Application Platform | Render 非常的好用可以把我之前做的自動化交易程式做部屬 用不到150行python代碼打造專屬你自己的自動化binance自動下單交易程式 使用教學 1.建立專案 2.選Cron job
Thumbnail
2025/03/12
最近發現一個雲端 Cloud Application Platform | Render 非常的好用可以把我之前做的自動化交易程式做部屬 用不到150行python代碼打造專屬你自己的自動化binance自動下單交易程式 使用教學 1.建立專案 2.選Cron job
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
在這篇文章中,我們將介紹如何使用Python來創建自動化的Binance交易程式。我們將利用Binance API,這是一個允許我們通過程式訪問Binance交易所的接口。這樣,我們就可以在程式中設定交易策略和條件,自動下單交易。 在開始之前,您需要先申請一個Binance交易所帳戶。
Thumbnail
在這篇文章中,我們將介紹如何使用Python來創建自動化的Binance交易程式。我們將利用Binance API,這是一個允許我們通過程式訪問Binance交易所的接口。這樣,我們就可以在程式中設定交易策略和條件,自動下單交易。 在開始之前,您需要先申請一個Binance交易所帳戶。
Thumbnail
Bitget 交易所成立於 2018 年,其主要的特色是合約交易與跟單系統(Copy Trading),平台上進駐了幾千名專業的交易員,這些交易員的存在使得用戶們可以輕鬆的一鍵跟單。
Thumbnail
Bitget 交易所成立於 2018 年,其主要的特色是合約交易與跟單系統(Copy Trading),平台上進駐了幾千名專業的交易員,這些交易員的存在使得用戶們可以輕鬆的一鍵跟單。
Thumbnail
一樣以幣安為模板做教學,如何用幣安幣幣交易 交易最基本的兩種手法,一種是「一鍵換幣」,另一種是「現貨交易」,其中現貨交易又分成多種方法:限價單、市價單、止盈止損、OCO等,由於閱讀內容是給新手的教學,因此只介紹其中基本的方法。
Thumbnail
一樣以幣安為模板做教學,如何用幣安幣幣交易 交易最基本的兩種手法,一種是「一鍵換幣」,另一種是「現貨交易」,其中現貨交易又分成多種方法:限價單、市價單、止盈止損、OCO等,由於閱讀內容是給新手的教學,因此只介紹其中基本的方法。
Thumbnail
選股一直是投資人最重要也最需要了解的一個步驟,選出好的股票就代表你已經成功一半了,但你是否每次選股都要開啟選股軟體,然後開始點選那超多樣的篩選條件,最終才能成功跑出今日的最新選股條件,這真的是太過麻煩了,導致很多人最終都放棄那本應該讓你投資成功的選股條件,所以今天我們就來教學如何用LINE BOT一
Thumbnail
選股一直是投資人最重要也最需要了解的一個步驟,選出好的股票就代表你已經成功一半了,但你是否每次選股都要開啟選股軟體,然後開始點選那超多樣的篩選條件,最終才能成功跑出今日的最新選股條件,這真的是太過麻煩了,導致很多人最終都放棄那本應該讓你投資成功的選股條件,所以今天我們就來教學如何用LINE BOT一
Thumbnail
在上一篇教學中,我們教了大家如何自製客製化選單,今天我們來教最後一個常用基本功能,那就是「快速回覆」,這功能常用於同性質的關鍵字分支中做使用,像我就是用於三大法人籌碼中,分別區分成外資、投信、自營商等選項,所以也是一個相當實用的功能,我們就來開始教學吧!!
Thumbnail
在上一篇教學中,我們教了大家如何自製客製化選單,今天我們來教最後一個常用基本功能,那就是「快速回覆」,這功能常用於同性質的關鍵字分支中做使用,像我就是用於三大法人籌碼中,分別區分成外資、投信、自營商等選項,所以也是一個相當實用的功能,我們就來開始教學吧!!
Thumbnail
每當要研究投資標的時,你是否也會覺得A網站的財報資料完整,又覺得B網站的選股條件完善,又覺得C網站的新聞比較重要,有時身邊又沒有隨身攜帶筆電怎麼好查詢呢?這時可能就在想怎麼沒有人開發一個程式能完成符合我想要的功能啊~~與其求助於人,不如自己動手做最好,有相同煩惱的人,LINE Bot超適合你!!
Thumbnail
每當要研究投資標的時,你是否也會覺得A網站的財報資料完整,又覺得B網站的選股條件完善,又覺得C網站的新聞比較重要,有時身邊又沒有隨身攜帶筆電怎麼好查詢呢?這時可能就在想怎麼沒有人開發一個程式能完成符合我想要的功能啊~~與其求助於人,不如自己動手做最好,有相同煩惱的人,LINE Bot超適合你!!
Thumbnail
幣記 Bitget 具有全球少數【一鍵跟單加密貨幣交易】的功能,剛好滿足我沒時間研究加密市場,又希望能參與行情的狀況。 本文會從設定到開倉手把手帶你完整走過一遍一鍵跟單的設置,如果也想靠跟單賺錢的讀者,今天這篇就是你需要的文章! 透過小人物講股專屬連結註冊 BitGet,並完成實名認證,即可獲得
Thumbnail
幣記 Bitget 具有全球少數【一鍵跟單加密貨幣交易】的功能,剛好滿足我沒時間研究加密市場,又希望能參與行情的狀況。 本文會從設定到開倉手把手帶你完整走過一遍一鍵跟單的設置,如果也想靠跟單賺錢的讀者,今天這篇就是你需要的文章! 透過小人物講股專屬連結註冊 BitGet,並完成實名認證,即可獲得
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News