用不到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
查看全部
發表第一個留言支持創作者!
這篇文章我們將深入如何利用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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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強勢回歸,