跳到主要內容

發表文章

目前顯示的是有「Uncategorized」標籤的文章

Monero GUI / CLI 錢包 - 懶得同步區塊鏈嗎?你可以連上公共節點直接使用 XMR CLI / GUI Wallet

「門羅幣 Monero」(XMR) 在近期分叉 ( 4/6 Fork ) 後又成了熱門話題,但在接收傳送 Monero 最麻煩的問題大概就是錢包了,不少人會直接選擇網頁錢包「 MyMonero  」,但其實這個免同步區塊鏈的錢包手續費偏高而且你沒辦法掌有私鑰 (Secret Key),最正確的錢包使用方法當然還是到 Monero 官網下載 CLI / GUI 錢包且自行保管私鑰,但那就會有需要同步區塊鏈的問題,Monero 區塊鏈動輒 30、40 GB,光要下載而且同步完成大概就要花上一天一夜,那有沒有更方便的做法呢?那就是直接使用公共節點 (Public Node)。 公共節點就是別人已經同步好的區塊鏈供你使用,就像一般礦池也都會架好這樣的節點 24HR 上線,但差別在於那是提供礦工挖礦使用的, 而公共節點則可以讓一般人傳輸、接收加密貨幣。 而「 Monero Taiwan 」就有提供公共節點的服務,可以說是造福了不少錢包使用者啊。 Monero Wallet 下載頁面 :  https://getmonero.org/downloads 錢包的部分請下載適合自己作業系統的 CLI (指令列) / GUI (圖形介面) 錢包, 如果不熟悉指令介面的建議下載 GUI Wallet。 Monero Taiwan Nodes 公共節點 No.1 : node1.xmr-tw.org 公共節點 No.2 : node2.xmr-tw.org 登入錢包或創建新的錢包後,就可以在「錢包設定」內連上公共節點了 ,如此一來就會直接使用節點同步好的區塊鏈進行傳輸確認,也可以馬上看到先前的交易紀錄。但要注意的是 Monero Taiwan 在網站上也有提到不保證節點 100% 上線以及服務的延遲,所以還是建議能自行架設節點為佳。


Gekko 交易機器人 v0.5.14 改版資訊

好一陣子沒有看到 Gekko 交易機器人發布新版本了,這次 v0.5.14 雖然也沒有大改,但確確實實增加了一些新功能和修正 Bug, 比較可惜的是自訂資產的功能還是沒有出來,倒是 Telegram Bot 看起來好用多了 ,也修正了不少針對交易所的 Bug (包括幣安的 Minimal order values) 以及 Roundtrip 計算錯誤的問題,簡單的說就是趕快更新吧! Gekko Trading Bot GitHub :  https://github.com/askmike/gekko 官方網站 :  https://gekko.wizb.it 安裝教學 :  https://goo.gl/2HPvVm v0.5.14 更新與修正 : [EXCHANGE]: 修正 GDAX 缺少的常數 ( @cmroche  -  #1759 ) [EXCHANGE]: 新增動態的 coinfalcon 市場更新 ( @vivekmarakana  -  #1761 ,  #1772 ) [STRAT]: 從開始時間減去 K 線長度來判斷是否成熟 ( @ansonphong  -  #1793 ) [INDICATOR]: 修正 varPPO 策略與 TSI 指標 ( @Paulovms  -  #1799 ) [EXCHANGE]: 修正 Binance 取消下單功能 ( @werkkrew  -  #1806 ) [EXCHANGE]: 修正 GDAX 取消下單功能及其他 Bugs ( @werkkrew  -  #1808 ,  #1818 ) [CORE]: 實際交易發生時讓策略可以有所對應 ( @werkkrew  -  #1810 ) [INDICATOR]: 修正 Dema 指標 ( @Paulovms  -  #1822 ) [EXCHANGE]: 修正 Binance 在 Roundtrip 時間顯示上的錯誤 ( @rkingy  -  #1846 ) [EXCHANGE]: 更新動...


Gekko 交易機器人 - 網頁 UI 也能用 Telegram Bot,一有買賣就會主動提醒還可隨時查價,不用再時不時開網頁關心你的機器人

Telegram Bot 的交易提醒功能本來只有在 CLI (Command-line interface) 的 Gekko 可以使用, 它會在有新的買賣建議 (Trading advise) 時主動提醒你 ,還有提供查價功能,能隨時掌握貨幣的走勢,雖然功能還很陽春但聊勝於無。不過網頁 UI 卻不知道為何把這項功能拔除了?可能是為了避免同時交易多組貨幣導致 Telegram Bot 的錯誤, 所以在使用時記得只能建立一個機器人,否則 Telegram Bot 會不知道要回報哪一個機器人的數據。 那在首先你會需要在 Telegram 建立一個新的 Bot,所以要去找 @BotFather 叫他生個孩子給你,詳細的操作可以看 這篇 。 config.telegrambot = {   enabled: true,   emitUpdates: true,   token: ' 你的 Token ',   botName: ' Bot 的名字 ' } 然後開啟 Gekko 資料夾內 web\routes\baseConfig.js ,將這段程式碼貼入並更改成自己的 Bot Token (跟 BotFather 要到的那個)。 npm install node-telegram-bot-api@0.24.0 然後安裝跑 Telegram Bot 必需的套件。 this.emitPrice(); 這個步驟是可選的,可以修改 Gekko 資料夾內的 plugins\telegrambot.js ,加入上面這一行, 如此一來在它主動通知你有交易時會順便報價 ,比較方便知道機器人的買賣點。 然後就可以開啟 Gekko 且隨便執行一個 Live 的機器人 (Paper trader、Tradebot 皆可),並到你的 Telegram Bot 打 /price 測試看看有沒有反應,如果有的話就恭喜你裝成功了。不過還是要記得它沒辦法處理多筆機器人的數據, 因此一個網頁 UI 只能對應一個 Telegram Bot 和一個 Live 機器人。


SQLite 的 .db 檔案怎麼開?透過 DB Browser 修改、刪除資料庫內的資料表 (修改 Gekko Datasets history)

在使用 Gekko 附屬的 SQLite 資料庫時往往從 UI 寫入資料後就不知道要從哪裡修改,匯入的歷史紀錄也沒辦法從網頁介面刪除,在做 Japonicus 遺傳演算 時可能會錯誤抓取到不想要跑的歷史數據, 那就可以用 DB Browser 來開啟 /history 內的 .db 檔案來進行修改,可以把不要的資料表直接刪除,就不必全部砍掉重抓了。 而從外部下載來的歷史資料也可以藉由同樣的方式整併到一個 .db 內。 DB Browser 官網 :  http://sqlitebrowser.org 下載並安裝完適合自己作業系統的 DB Browser 後就可以從 「打開資料庫」 中瀏覽 Gekko 資料夾中的 history,開啟想要修改的歷史紀錄。 舉例來說我開啟了 binance_0.1.db 就是先前匯入的幣安歷史數據,在這裡已經條列好每個資料表分別代表一種貨幣組合,能把你不要的組合刪除,甚至到 Browse Data 也能修改交易紀錄 (應該是沒必要啦)。


Gekko 批次回測工具 (Backtest Tool),一次跑多個貨幣組合,達到多線程 (Multithreading) 處理

這個是由 @ xFFFFF 提供的 Gekko 批次回測工具,它能在同一時間回測多個策略或不同的貨幣組合,並將結果直接顯示在 CMD 上並輸出成 .csv 檔。 除了方便一次回測大量數據外,它的重點是能達到多線程 (Multithreading) 執行 ,Gekko 本身並沒有這項功能,所以就算你有 6C12T 它也是只會使用 1C1T,比較直覺的解決辦法就是多開幾個網頁 UI 或 CLI 就好了,但那會需要個別設定很浪費時間,而這個 Backtest Tool 剛好幫你解決了這個麻煩。 GekkoBacktestTool GitHub :  https://github.com/xFFFFF/GekkoBacktestTool 首先先到 GitHub 把它下載回來,或使用 git clone https://github.com/xFFFFF/GekkoBacktestTool.git 指令。並將裡面的 backtest.pl 與 database.csv 複製到 Gekko 資料夾內。 my @strategies = qw(  neuralnet RSI_BULL_BEAR_ADX ); my @pairs = qw( binance:USDT:ETH binance:BTC:NEO ); 再來打開 backtest.pl 並修改 @strategies (選擇的策略) 和 @pairs (交易的組合) ,要填入幾個基本上是沒有上限的,可以一次回測多個節省時間,填寫兩個策略或交易組合間記得要空白。也可以順便修改下方的策略 參數、Candlesize、Historysize ...等, 這些會決定你策略執行的結果。 sudo cpan install Parallel::ForkManager Time::ParseDate Time::Elapsed 然後先使用指令安裝 Parallel。 perl backtest.pl 先 cd 到 Gekko 資料夾後就能開始回測了,結果會直接顯示在終端機上。 和使用 CLI 一樣,所有策略的參數都必須在剛剛的 backtest.pl 內設置 ,這邊只會呈現結果。 database....


Gekko 交易機器人 - 使用幣安 Binance API 都不交易怎麼辦?更新 binance.js 和改變各市場交易規則參數

之前一直沒碰過這個問題,就是在手動出掉部分 BTC 之後才發現 Gekko 使用幣安 Binace API 交易 (Tradebot) 時有好一陣子不執行交易,用 PaperTrader 跑都正常,但實際操作的機器人就是不動,之後把 Log 下載回來看才知道原來是交易量太小沒辦法掛單,可是明明就有超過幣安官方規定的交易門檻阿? 其實是先前 BTC 市場交易門檻一度更改為 0.002 但後來又換回 0.001,而 Gekko 內的設定還停留在舊的數值所以導致自己用幣安網頁是可以交易,但機器人怎樣卻都不會掛單的窘境。 Log 裡面就記錄的很清楚, Wanted to buy BTC but the amount is too small ,但這是市場規則沒有更新而導致的誤判。 npm uninstall binance npm install binance 如果你碰到的問題並不是交易量太小無法掛單, 可以先解除安裝 binance.js 再重新安裝最新版的試試看 ,使用舊版的可能也會導致類似無法交易的錯誤。 確定是交易規則所導致的錯誤可以打開 Gekko 資料夾中的 /exchanges/binance-markets.json 手動更改交易參數, 目前所有 BTC 市場最小下單金額都是 0.001 ,改完後儲存就不會再碰到相同錯誤了。 幣安的交易參數規則可以參考 官方的文件 ,都有明列每個市場的最小下單金額,你可以一次把它改完或只更新自己有在用的市場就好。


Gekko 交易機器人 - 使用 Japonicus 的遺傳算法 (Genetic Algorithm) 找到交易策略表現最佳的參數 (Parameters)

常常下載了一個策略回來但卻怎麼都跑不出滿意的回測 (Backtest) 結果,往往都得將參數一改再改重複嘗試,但這個過程煩瑣而且得要考量到的面向方常多,各個參數都是息息相關,改變了就牽一髮而動全身,所以要找到最好的組合更是難上加難。所以可以使用遺傳演算法 (Genetic Algorithm) 來找到一定區段內最好的參數設定,如果對於遺傳算法不了解的可以參考下方這個 MIT 的 Open Course,簡單而言就是一次丟入一定 Population 的親代讓它演化 (繁殖),保留表現良好的子代再讓它變成親代繼續繁衍更優良的配對, 藉由 Mutation (突變) 和 Crossover (交叉組合) 保持一定的變異程度來讓策略的執行可以達到不僅僅是近程內的最高點而是更接近全域高峰 (Global High)。 Japonicus GitHub :  https://github.com/Gab0/japonicus 而 Japonicus 就是完全針對 Gekko 所設計的遺傳演算法 (Genetic Algorithm) 工具,核心是基於 Python 的 DEAP 程式庫提供整個演化算法的功能,以及有圖形化介面的輸出在 http://localhost:5000 方便使用者讀取, 每二十代演化都會將截至目前最佳的參數輸出,變成能直接使用於 Gekko 策略的 .toml 檔。 原作者是建議在 Python 3.6 的環境下安裝、執行 ,所以為了確保版本正確而且妥善安裝相關部件 (包括 python-dev、pip3...等) 最好先依序鍵入下方指令。(以 Ubuntu、Linux Mint 為例) $ sudo add-apt-repository ppa:jonathonf/python-3.6 $ sudo apt update $ sudo apt install python3.6 $ sudo apt install python3.6-dev $ sudo apt install python3.6-tk $ wget https://bootstrap.pypa.io/get-pip.py $ sudo python3.6 get-pip.py ...


Gekko 交易機器人 - 更改 UIconfig timeout 解決網頁版回測 (Backtest) 跑太久會當掉的問題

如果 Gekko 是在跑一些運算量大的策略又加上歷史數據多的話,常常網頁的 UI 都會跑到當掉,最後等了半天還是什麼都沒顯示出來, 其實會有這個問題是因為在 UIconfig.js 裡面設定了一項 timeout 值,預設值是兩分鐘, 換句話說網頁 UI 只要兩分鐘就會連線逾時了,那最後策略跑出來的結果當然就顯示不出來啦。要解決這個問題也很簡單,只要更改這個檔案的 timeout 時間就好了 。 跑啊跑就是跑出不出來,跑到最後連 Running backtest 這行字都不見了 找到 Gekko 資料夾中 web/vue/UIconfig.js 這個檔案,看是要用記事本或 Notepad++ 打開。 將 timeout 時間改長,預設是兩分鐘, 像我改成 2,160,000 就是六十分鐘才會 timeout,基本上大部分策略都夠跑了。 接著你就可以去試跑那些永遠在跑完前就先當掉的策略啦。至於 Gekko 為什麼要預設一個這麼短的 timeout 時間也是很奇怪,好在論壇有人發現這個解法才讓那些運算複雜的策略能被更精準的測試。


用 http-auth 基本身分驗證為安裝在雲端 (AWS、GCP) 的 Gekko 做一個簡單登入介面,避免交易所 API 被盜用

Gekko 本身的網頁 UI 沒有附帶任何身分驗證機制,換句話說如果開在公網上只要有你主機 IP 的人都可以進到控制介面,雖然 Gekko 加入了 API Key 之後是沒辦法看到原始的金鑰字串,但畢竟仍然有交易功能,可能被有心人士惡搞。目前的做法多半會是從主機端的安全來著手, 開在 Google Cloud (GCP) 或 Amazon EC2 的可以使用它本身的防火牆規則來去禁止非你以外的 IP 連線 ,但對於大多數人可能不像我有靜態 IP,變得每次 ISP 重新分配 IP 或使用別的網路連線又要重設,為了安全要付出的麻煩還真不少阿。 所以就想到做一個很陽春的 http-auth 基本身分驗證機制,簡單說就是要登入啦, 在讀入 Gekko UI 之前得要先輸入設定的帳號密碼才能通關 ,雖然不敢保證這個安全機制萬無一失,但至少是多了一層保護,而且安裝也很簡單,最重要的還是不要隨便透漏自己的 IP 給他人啦。 npm install http-auth 首先要安裝 http-auth 的套件才能使用身分驗證的功能。 再來打開 Gekko 資料夾中的 web/server.js,分別加入以下兩段程式碼。 var auth = require('http-auth'); var basic = auth.basic({ realm: "Restricted", file: __dirname + "/ pass.htpasswd " }); 這段加到 server.js 的最上方就可以了, pass.htpasswd 就是你的金鑰,可以自行更改檔名或路徑,之後記得上傳到與程式碼指定的相同路徑就好了。 app.use(auth.koa(basic)); 這段則加到 const app = koa(); 後面即可。 之後就要製作金鑰檔,基本上就是文字檔, 簡單的格式就是「 帳號:密碼 」 ,建議你的密碼可以拿去加密,不要直接放解密的密碼比較好。 把這個檔案存成 pass.htpasswd 或你剛剛指定的檔名,上傳到 gekko/web 內 (或你指定的路徑)。 製作加密 (encrypt) 的密碼可以參考 這個網站 的產生器,只要把密碼...


Gekko 交易機器人Command-line 介面 (CLI ) 如何使用 Telegram bot 來查詢價格、收益

Gekko 交易機器人的 Command-line 介面非常適合拿來跑運算量較大的策略或回測 (Backtest) 大量數據,占用資源低而且速度快,我用到目前從來沒有 Crash 過,也沒出過 child process died 的錯誤, 但 CLI 缺點就是沒辦法產生交易圖表,而且要即時監控也比較困難,所以能用 Gekko 的 Plugins 來補足這點。 Telegram bot 就是能直接向 Telegram 你所創的機器人查詢目前價格、交易收益,雖然現在功能還很陽春,但至少比要開啟 CMD 來看收益要方便得多。 首先你要登入自己的 Telegram 帳號,然後跟 BotFather   用 /newbot 要求一個新的機器人 ,接著它會詢問你機器人的名字、帳號,都回答完了就會產生一個 Bot Token,這串等會就會拿來填到 config.js 裡。 config.telegrambot = {   enabled: true,   emitUpdates: true,   token: ' 你的 Bot Token ',   botName: ' 你的 Bot Username ' } 接著把上述的 Code 置入到 Gekko 資料夾的 config.js 中, 將 token 改成剛剛得到的 Bot Token,botName 則是剛剛的 Bot Username。 npm install moment npm install lodash npm install node-telegram-bot-api 在執行 Gekko 之前得要先安裝這三個套件,telegrambot.js 會需要這三個套件才能正常啟用,記得安裝前要先 CD 到 Gekko 目錄。 接著就能用 CLI 開始 Gekko 跑策略啦。 然後能在 http://t.me/你的BotUsername 找到你的 Telegram Bot,目前一共只有兩個指令分別是 /price 、 /advice ,分別查詢目前的價錢和策略提供的建議。 不過目前一個 Telegram Bot 只能和一個 Gekko 作連動 ,意思就是如果你開了兩個 Gek...


Gekko 交易機器人 - 用 Commandline 介面 (CLI) 開啟 Gekko 教學,讓電腦負載大大降低且達到多線交易

基本上 Gekko 交易機器人本身就推薦使用 Commandline 介面 (CLI),一來它對電腦設備要求較低 (其實本來就不高),二來它能直接開啟複數個機器人 (沒有 UI Port 問題),加上能自訂的細節也較多,有些功能是沒有做出來到網頁 UI 介面的,像是 Telegram bot 功能、Email 通知功能...等,而且如果你跟我一樣是把 Gekko 開在雲端主機上,使用 CLI 多少也能降低使用量,避免它超出限額。 Gekko 原作者也有提到 childprocess has died. 的情況可以用 CLI 的方式來開啟 Gekko,它對策略的執行比較不會出現錯誤。 再來就是多線交易的問題了, 由於為了避免不同機器人互相「搶資金」而造成錯誤所以在 UI 介面直接限制了單一交易所多個機器人這點 ,但在 CLI 並不存在這個問題,所以可以直接多開 Gekko。舉例來說,即使你有 XVG/BTC、XRP/BTC 兩個機器人在運作,兩者並不會互相衝突任, 因為誰先達成策略的條件就會先執行該貨幣的買賣,然後根據買賣後的結果再繼續跑原本的策略。 用 CLI 開啟 Gekko 以下的操作是基於 Gekko 已經完整安裝的情況,如果還沒在本機或雲端上裝好 Gekko 請參考前篇提到的 安裝教學 、 安裝到雲端 。 首先要建立一個 config.js 在 Gekko 資料夾中, 它裡面本身就有附一個 sample-config.js 能直接讓你拿來改。 基本上我把 config.js 的內容分為六層 :  - config.watch - 指定觀測的市場,也就是要交易的貨幣  - config.tradingAdvisor - 設定 Candlestick 的時間長短與選擇策略   - config.strategy - 個別策略的參數 -  config.paperTrader - 模擬交易機器人 -  config.trader - 實際交易機器人 -  config.plugins - 外附的插件 (非必要),像 mailer、telegrambot...等 其中 paperTrader 和 trader 只能擇一...


Gekko 交易機器人 - 突破單一交易所只能有一個機器人 (tradebot) 的限制,一個不夠你不會開兩個?

Gekko 仍然在試驗性階段所以很多功能尚未完善,一個麻煩的點就是 ui 介面直接鎖死了一個交易所只能有一個交易機器人運行 (指的是真正的 tradebot,不是模擬的 paper trader), 原因在於怕不同貨幣換來的 Balance 互相干擾 ,舉例來說如果我在同一個交易所建了 ETH/BTC 和 BTC/USDT 兩個交易機器人,那從 ETH 交易來的 BTC 就有可能又再被轉往 USDT 去了,這樣就會造成機器人的錯誤,這個部分仍然是沒辦法解決的, 但其實你可以交易完全不同的貨幣來避免這種情況 (像是 ETH/BTC 和 USDT/LTC) ,那現在的問題就是要如何突破 Gekko 內部的限制? 可能有更好的辦法可以做到多線交易,但我想到最直觀的解法就是,一個不夠你不會開兩個?既然一個 Gekko、一個交易所只能有一個機器人,那我就開兩個、三個 Gekko 問題不就解決了,實作辦法也很簡單。 最終每個 Gekko 都是呈現在 127.0.0.1 (Localhost) 但在不同的 Port ,舉例來說第一個在 127.0.0.1:1111,第二個在 127.0.0.1:2222。 所以先將你原始的 Gekko 資料夾複製多一個出來, 原本那個可以不用改,就讓它在 Port 3000。 打開 web/vue/UIconfig.js , 把 Port 改成和第一個 Gekko 不一樣就可以了。 然後用一樣的辦法安裝、啟動 Gekko 後你就可以得到兩個運行中的 Gekko 分別在不同的 Port,像我的就是一個在 http://127.0.0.1:3000 一個在 http://127.0.0.1:2222 。 那你一定會覺得電腦開了一堆 CMD 很礙眼,而且關了就不能繼續操盤了,等於電腦要 24HR 開著還要跑一堆程式, 所以更好的解決辦法就是參考 這篇 將 Gekko 裝到雲端,然後用一樣的辦法上傳數個 Gekko 資料夾分別用不同的 Port 然後一一安裝、執行 ,最後它們就會分別在不同的 Port 上 24HR 為你操盤,自己的電腦也不用被 CMD 塞滿了。


Gekko 比特幣 (Bitcoin)、加密貨幣交易機器人 (Trading Bot) 教學 - 如何用 Backtest 以過往數據測試策略?

直接要拿真的資金讓機器人 (Trading Bot) 操盤聽起來有點可怕,何況在對策略制定還不熟悉的時候更是,好在 Gekko 有 Backtest 的功能, 它可以直接導入各個交易所的歷史交易線圖來供你測試制定的策略 ,而且你大可以一次導入好幾種不同貨幣,針對不同活潑程度的線形去測試,時間也可以直接拉很的長來增加參考性,因為它只需要電腦計算跑完就會出現機器人的交易紀錄了。 至於如何安裝 Gekko 以及大致的介紹在上一篇有提到了,這邊就不多提。 Gekko 教學 - 免費的比特幣 (Bitcoin)、加密貨幣自動交易機器人 (Trading Bot),支援幣安 Binance、Poloniex、Bitfinex...等交易所 在 Local data 介面中如果你之前已經有導入歷史交易就會顯示在 Available datasets,如果要導入新的就按 Go to the importer! 。 導入的紀錄可以選交易所和指定交易幣種,時間預設是四個月, 我會建議就讓它慢慢載完這四個月,因為從 11 月到現在經歷牛、熊市交替,你可以根據在兩種不同市場熱度的情況下這個策略表現得如何。 基本上是會需要好一陣子啦,你也可以多開幾個 Gekko 網頁讓它一次多下載幾個歷史交易紀錄,免得花太多時間在這裡。 不必等它跑完就可以先玩玩看 Backtest 了,先選好要用哪筆紀錄來玩以及可以自訂時間區段。 建議先用 noop (無操作) 跑一次,看看本身市場的漲跌如何再來去和機器人操作結果比較 ,因為如果市場本身就漲了 40% 結果機器人只賺 30% 那也還是算虧錢啊。 我選的區段比較不好,空操作市場就漲了 90%,不過還是來看看機器人有沒有辦法超越 90%。 大概測試了幾個都滿難比 90% 更高的,要調到滿極端的情況才能大於這個數字,所以可以看到即便在一個多月的時間也只有 3 次進出場, 而且獲利也才 99.8%,這種情況下最好的策略真的是 HODL 擺著不要動阿。 而且在熊牛市不同下,其實會需要擬定不同的策略,Gekko 絕對不是你把它開著就能幫你爽賺的機器人 (我相信也沒這種機器人),而且有非常多貨幣並不適合用機器人來交易, 基本上一定要選交易量、市值夠大的才有技術分析的...