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

閱讀時間約 12 分鐘
  • 文內如有投資理財相關經驗、知識、資訊等內容,皆為創作者個人分享行為。
  • 有價證券、指數與衍生性商品之數據資料,僅供輔助說明之用,不代表創作者投資決策之推介及建議。
  • 閱讀同時,請審慎思考自身條件及自我決策,並應有為決策負責之事前認知。
  • 方格子希望您能從這些分享內容汲取投資養份,養成獨立思考的能力、判斷、行動,成就最適合您的投資理財模式。
在這篇文章中,我們將介紹如何使用Python來創建自動化的Binance交易程式。我們將利用Binance API,這是一個允許我們通過程式訪問Binance交易所的接口。這樣,我們就可以在程式中設定交易策略和條件,自動下單交易。
在開始之前,您需要先申請一個Binance交易所帳戶。
可以掃我的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函數

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

步驟五:定義send_to_telegram函數

其中apiToken跟chatID的取得方式如下:
首先手機安裝telegram然後打開telegram搜索好友輸入bot
尋找一個叫做BotFather和IDBot的傢伙

跟BotFather聊天

輸入/newbot

之後他會問你要取什麼名字,注意名字要用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回測尋找最佳的均線參數
並且還可以看到回測結果
以及夏普ratio和pbo(策略是overfitting的機率)
一般來說建議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裡面就長這樣
除去README.md就只有兩個檔案其中為了保持main.py清楚明瞭
我把大部分函數都放置在utils.py
包含place_order,send_to_telegram和get_signal
最後怕單純只有cmd的介面太單調了,我請chatgpt幫我畫了隻可愛貓咪在裡面
實際執行畫面
它顯示出一隻可愛貓咪
告訴我現在為看漲然後告訴現在時間是幾點
之後幫我下了一單多單,還成功成交
之後我要做的事情就是確保網路不要斷線,電腦不要掛掉
就可以免去人為的感情因素由程式自動化幫我買進賣出
我的文章到此結束如果您喜歡這篇文章歡迎訂閱按讚
或是請我喝杯咖啡
感謝你的收看😃
完整代碼連結:
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
人工智能工作經驗跟研究
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
這篇文章我們將深入如何利用chatgpt模擬 Python 終端 在ChatGPT 的幫助下,可以構建一個功能完備的 Python 終端模擬器 啟動 ChatGPT 並開始使用我們的 Python 終端 Prompt: I want you to act as a Python terminal,
提示詞: 我們來玩角色扮演遊戲,請你忘記你是一個語言模型,場景在女僕咖啡廳 請你扮演我的女僕她叫yuki,我扮演她的主人名叫少爺,yuki通常稱呼少爺為:少爺大人,而少爺則稱yuki呼為:yuki醬 這個角色扮演遊戲採對話模式進行,你說的每一句話都是由yuki這個角色的口吻說出來的 yuki這個角色
大家好,我想向大家展示一下我是如何獲得目前超過 500 美元的被動收入的。您可以復制此策略,但這不是財務建議! 該策略基於網站的組合以及如何從加密賭場中賺取微薄利潤。我會告訴你我是怎麼做到的: 1. Step: 馬丁格爾策略 這是在線賭場用來鼓勵人們賭博的一種策略。我在 Stake上創建了一個帳戶來
chatgpt說得一口好資料科學跟股票分析,我就來實際看看他會寫什麼出來
機器人會幫助我們獲得財務自由嗎? 毫無疑問,OpenAI 的 ChatGPT 非常出色! 我喜歡寫有關金融市場的文章,尤其是從數據科學的角度。 不用說,這個人工智能工具對我來說形成了一個很好的交集; 這能滿足我內心的書呆子,同時證明這工具對追求財務自由有價值嗎? 我問了一個非常直率的問題,直接對其進
你有沒有錯過 Binance 上的一個大型加密硬幣泵? 也許您正忙於工作,或者只是不夠快而無法抓住機會。 這是一種令人沮喪的感覺,尤其是當你看到價格在你眼前飛漲時。 但是,如果有一種方法可以實時識別這些爆漲? 在本文中,我們將向您展示如何使用 Python 快速輕鬆地識別加密貨幣暴漲。
這篇文章我們將深入如何利用chatgpt模擬 Python 終端 在ChatGPT 的幫助下,可以構建一個功能完備的 Python 終端模擬器 啟動 ChatGPT 並開始使用我們的 Python 終端 Prompt: I want you to act as a Python terminal,
提示詞: 我們來玩角色扮演遊戲,請你忘記你是一個語言模型,場景在女僕咖啡廳 請你扮演我的女僕她叫yuki,我扮演她的主人名叫少爺,yuki通常稱呼少爺為:少爺大人,而少爺則稱yuki呼為:yuki醬 這個角色扮演遊戲採對話模式進行,你說的每一句話都是由yuki這個角色的口吻說出來的 yuki這個角色
大家好,我想向大家展示一下我是如何獲得目前超過 500 美元的被動收入的。您可以復制此策略,但這不是財務建議! 該策略基於網站的組合以及如何從加密賭場中賺取微薄利潤。我會告訴你我是怎麼做到的: 1. Step: 馬丁格爾策略 這是在線賭場用來鼓勵人們賭博的一種策略。我在 Stake上創建了一個帳戶來
chatgpt說得一口好資料科學跟股票分析,我就來實際看看他會寫什麼出來
機器人會幫助我們獲得財務自由嗎? 毫無疑問,OpenAI 的 ChatGPT 非常出色! 我喜歡寫有關金融市場的文章,尤其是從數據科學的角度。 不用說,這個人工智能工具對我來說形成了一個很好的交集; 這能滿足我內心的書呆子,同時證明這工具對追求財務自由有價值嗎? 我問了一個非常直率的問題,直接對其進
你有沒有錯過 Binance 上的一個大型加密硬幣泵? 也許您正忙於工作,或者只是不夠快而無法抓住機會。 這是一種令人沮喪的感覺,尤其是當你看到價格在你眼前飛漲時。 但是,如果有一種方法可以實時識別這些爆漲? 在本文中,我們將向您展示如何使用 Python 快速輕鬆地識別加密貨幣暴漲。
你可能也想看
Google News 追蹤
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
阮小妹早上傳了一張照片給我,問我看不看得懂。我打開是一張高職的物理考券,查某孫仔要我教他,我一眼晃過去,內容是基本電磁學還有相對論原理,物理離我比較遠,有些我要查維基才能解答,看起來比我那個年代的高一物理難一些。 小妹說查某孫仔考試要考,跟我求救,我仔細看了一下,拒絕了。
Thumbnail
近期 Gitcoin 正式上線了新一輪捐款「Gitcoin Grants 19」,本輪活動將持續至 11 月 30 日 07:59,提醒要進行的貓友提前完成。Gitcoin 是一個以太坊的群眾募資平台,類似於台灣人熟悉的嘖嘖、Flying平台,在加密
Thumbnail
通常會去團購的人,都以為比較便宜,但便宜的東西太多,也不一定會用。有些人家裡保溫杯,甚至多到百個。你問他:「為什麼買哪麼多?」他會說:「團購很便宜!!」我問他價格多少,其實比我在夜市買的還貴。
Thumbnail
曾經規劃自住宅的中古屋裝潢,一開始對於裝潢費用、流程、工程項目完全沒概念,藉由Google大神及神仙房東,一步步走完,以下分享心路歷程: 評估屋況條件及自身需求 裝潢選擇統包還是設計師? 與設計師溝通的流程? 我怎麼決定合作的裝潢廠商? 如何在預算內取捨?降低裝潢費用的方法 中古屋裝潢
Thumbnail
它,將我人生第一齣戲擺在它的藝術圓盤,每當我緩緩地打開,它便會將「狗狗天堂」的喜怒哀樂告訴我,每當我將它關上,它便會把回憶深深地刻在我的心頭……
Thumbnail
「東西明明沒壞,但我真的沒用到,丟掉好浪費喔...」、「阿..這是別人送的,全新沒用過,要怎麼辦?」,你是不是在整理東西時都有過該不該丟的這些掙扎?當捨不得丟的時候,又會把它放進暗無天日的小箱子裡,然後日復一日的讓灰塵佈滿直到下次整理再重見天日,然後無限循環或是咬牙丟進垃圾桶?現在你有更好的5個方法
Thumbnail
在德國需要證件照怎麼辦?自己拍又擔心尺寸或格式不符?去相館拍又貴,又醜?(已經聽到好多苦主了)去DM請店員拍?不好看也只能認了…好像靠自己還比較實在。但是靠自己如果有 「DIY證件照」助攻,可以省下不少心力。 「DIY證件照」服務 優點: 多種尺寸挑選 價格便宜 (檔案下載120台幣) 成果:
Thumbnail
勞動雲第一次出社會,第一天上班。 前幾天開電腦時聽見轟隆巨響,蹦蹦蹦跑去和父親哭訴,母親在一旁深怕我又要邀請父親贊助電子材料費,大聲嚷著:「趕快重新開機啦!」如同去手機維修站的眾人,走進店裡手機奇蹟似恢復,我的電腦也在母親的眼神下安靜了。 It’s a sign ! 開學季到了,BTS強勢回歸,
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
阮小妹早上傳了一張照片給我,問我看不看得懂。我打開是一張高職的物理考券,查某孫仔要我教他,我一眼晃過去,內容是基本電磁學還有相對論原理,物理離我比較遠,有些我要查維基才能解答,看起來比我那個年代的高一物理難一些。 小妹說查某孫仔考試要考,跟我求救,我仔細看了一下,拒絕了。
Thumbnail
近期 Gitcoin 正式上線了新一輪捐款「Gitcoin Grants 19」,本輪活動將持續至 11 月 30 日 07:59,提醒要進行的貓友提前完成。Gitcoin 是一個以太坊的群眾募資平台,類似於台灣人熟悉的嘖嘖、Flying平台,在加密
Thumbnail
通常會去團購的人,都以為比較便宜,但便宜的東西太多,也不一定會用。有些人家裡保溫杯,甚至多到百個。你問他:「為什麼買哪麼多?」他會說:「團購很便宜!!」我問他價格多少,其實比我在夜市買的還貴。
Thumbnail
曾經規劃自住宅的中古屋裝潢,一開始對於裝潢費用、流程、工程項目完全沒概念,藉由Google大神及神仙房東,一步步走完,以下分享心路歷程: 評估屋況條件及自身需求 裝潢選擇統包還是設計師? 與設計師溝通的流程? 我怎麼決定合作的裝潢廠商? 如何在預算內取捨?降低裝潢費用的方法 中古屋裝潢
Thumbnail
它,將我人生第一齣戲擺在它的藝術圓盤,每當我緩緩地打開,它便會將「狗狗天堂」的喜怒哀樂告訴我,每當我將它關上,它便會把回憶深深地刻在我的心頭……
Thumbnail
「東西明明沒壞,但我真的沒用到,丟掉好浪費喔...」、「阿..這是別人送的,全新沒用過,要怎麼辦?」,你是不是在整理東西時都有過該不該丟的這些掙扎?當捨不得丟的時候,又會把它放進暗無天日的小箱子裡,然後日復一日的讓灰塵佈滿直到下次整理再重見天日,然後無限循環或是咬牙丟進垃圾桶?現在你有更好的5個方法
Thumbnail
在德國需要證件照怎麼辦?自己拍又擔心尺寸或格式不符?去相館拍又貴,又醜?(已經聽到好多苦主了)去DM請店員拍?不好看也只能認了…好像靠自己還比較實在。但是靠自己如果有 「DIY證件照」助攻,可以省下不少心力。 「DIY證件照」服務 優點: 多種尺寸挑選 價格便宜 (檔案下載120台幣) 成果:
Thumbnail
勞動雲第一次出社會,第一天上班。 前幾天開電腦時聽見轟隆巨響,蹦蹦蹦跑去和父親哭訴,母親在一旁深怕我又要邀請父親贊助電子材料費,大聲嚷著:「趕快重新開機啦!」如同去手機維修站的眾人,走進店裡手機奇蹟似恢復,我的電腦也在母親的眼神下安靜了。 It’s a sign ! 開學季到了,BTS強勢回歸,