eth量化交易設置
❶ ETH開發實踐——批量發送交易
在使用同一個地址連續發送交易時,每筆交易往往不可能立即到賬, 當前交易還未到賬的情況下,下一筆交易無論是通過 eth.getTransactionCount() 獲取nonce值來設置,還是由節點自動從區塊中查詢,都會獲得和前一筆交易同樣的nonce值,這時節點就會報錯 Error: replacement transaction underpriced
在構建一筆新的交易時,在交易數據結構中會產生一個nonce值, nonce是當前區塊鏈下,發送者(from地址)發出的交易(成功記錄進區塊的)總數, 再加上1。例如新構建一筆從A發往B的交易,A地址之前的交易次數為10,那麼這筆交易中的nonce則會設置成11, 節點驗證通過後則會放入交易池(txPool),並向其他節點廣播,該筆交易等待礦工將其打包進新的區塊。
那麼,如果在先構建並發送了一筆從地址A發出的,nonce為11的交易,在該交易未打包進區塊之前, 再次構建一筆從A發出的交易,並將它發送到節點,不管是先通過web3的eth.getTransactionCount(A)獲取到的過往的交易數量,還是由節點自行填寫nonce, 後面的這筆交易的nonce同樣是11, 此時就出現了問題:
實際場景中,會有批量從一個地址發送交易的需求,首先這些操作可能也應該是並行的,我們不會等待一筆交易成功寫入區塊後再發起第二筆交易,那麼此時有什麼好的解決辦法呢?先來看看geth節點中交易池對交易的處理流程
如之前所說,構建一筆交易時如果不手動設置nonce值,geth節點會默認計算發起地址此前最大nonce數(寫入區塊的才算數),然後將其加上1, 然後將這筆交易放入節點交易池中的pending隊列,等到節點將其打包進區塊。
構建交易時,nonce值是可以手動設置的,如果當前的nonce本應該設置成11, 但是我手動設置成了13, 在節點收到這筆交易時, 發現pending隊列中並沒有改地址下nonce為11及12的交易, 就會將這筆nonce為13的交易放入交易池的queued隊列中。只有當前面的nonce補齊(nonce為11及12的交易被發現並放入pending隊列)之後,才會將它放入pending隊列中等待打包。
我們把pending隊列中的交易視為可執行的,因為它們可能被礦工打包進最新的區塊。 而queue隊列因為前面的nonce存在缺失,暫時無法被礦工打包,稱為不可執行交易。
那麼實際開發中,批量從一個地址發送交易時,應該怎麼辦呢?
方案一:那麼在批量從一個地址發送交易時, 可以持久化一個本地的nonce,構建交易時用本地的nonce去累加,逐一填充到後面的交易。(要注意本地的nonce可能會出現偏差,可能需要定期從區塊中重新獲取nonce,更新至本地)。這個方法也有一定的局限性,適合內部地址(即只有這個服務會使用該地址發送交易)。
說到這里還有個坑,許多人認為通過 eth.getTransactionCount(address, "pending") ,第二個參數為 pending , 就能獲得包含本地交易池pending隊列的nonce值,但是實際情況並不是這樣, 這里的 pending 只包含待放入打包區塊的交易, 假設已寫入交易區塊的數量為20, 又發送了nonce為21,22,23的交易, 通過上面方法取得nonce可能是21(前面的21,22,23均未放入待打包區塊), 也可能是22(前面的21放入待打包區塊了,但是22,23還未放入)。
方案二是每次構建交易時,從geth節點的pending隊列取到最後一筆可執行交易的nonce, 在此基礎上加1,再發送給節點。可以通過 txpool.content 或 txpool.inspect 來獲得交易池列表,裡面可以看到pending及queue的交易列表。
啟動節點時,是可以設置交易池中的每個地址的pending隊列的容量上限,queue隊列的上容量上限, 以及整個交易池的pending隊列和queue隊列的容量上限。所以高並發的批量交易中,需要增加節點的交易池容量。
當然,除了擴大交易池,控制發送頻率,更要設置合理的交易手續費,eth上交易寫入區塊的速度取決於手續費及eth網路的擁堵狀況,發送每筆交易時,設置合理的礦工費用,避免大量的交易積壓在交易池。
❷ 代幣(ETH)空投工具
經過一段時間緊鑼密鼓的開發測試,代幣(ETH)空投工具已經上線啦。
代幣空投工具
該工具支持erc20代幣和eth的空投,具體操作方法如下:
之後合約會查出來該代幣的信息,用戶當前登錄的賬戶所擁有的賬戶總量,以及當前用戶對空投合約的代幣授信。
授信表示用戶允許合約代操作的代幣數量,空投前必須授信空投合約。
如果空投授信額度為0時,請點擊「點擊授信」按鈕,給空投合約授信。(即使授信合約,非您發起的空投請求也不會成功的,不用擔心代幣安全問題)
點擊授信後打開授信頁面,請輸入授信數量,比如您要空投1w用戶,每個用戶10個幣,授信數量就請填寫100000, 然後點擊確定。
確定後會發出一個交易請求,在metamask里點確認後,請耐心等待授信成功,期間可以通過metamask查交易進度。
刷新頁面查詢直到確認授信成功。
輸入每個賬戶的空投幣數量,同時也會顯示每一筆空投的手續費(合約收費)。
點擊上傳空投賬戶列表文件。
注意,這里的文件最好為txt或者csv格式,每一個地址一行。如果有多餘信息,每一行必須為逗號分隔,且用戶地址必須在第一列。
注意,這里你可以選擇空投批處理地址數量,比如有1w個地址要空投,批處理數量為100,那就需要空投100次。空投手續費按每次收取,因此批處理數量肯定是越大越好。
但是:以太坊每筆交易gas消耗量有上限,因此批處理數量是有上限的。
生成空投列表後,您可以點擊空投按鈕開始空投,這時會有兩種結果:
空投ETH跟空投代幣並沒有太大區別,只是代幣地址里直接填入0,另外也不需要設置授信。
注意發送ETH比發送代幣所需要的gas更多,因此批處理數量需要調低
如果您仍有擔心,可以先在Ropsten上測試,只需要把metamask接入網路換成ropsten,然後刷新頁面即可。
請注意,您需要在ropsten網路上重新部署代幣
該合約經過幾次迭代,已經穩定工作,已經有穩定的使用記錄可查。
❸ 怎麼用人民幣買ETH
現在這個條件下,使用人民幣交易的,都是用人民幣購買恆定價值的避險幣,USC或者USDT
在代理商購買USC,充值到平台,在USC交易區,購買以太坊。
還有場外的方法,就是個人對個人單獨購買,不過都是略高於交易所的價格。
❹ 一文搞懂幣圈量化套利策略
幣圈玩法非常多,從早期的BTC挖礦,私募,擼羊毛,炒幣,玩期貨杠桿,搬磚,基本概括了所有幣圈的一些玩法,同時幣圈又是一個高風險高收益的金融投資,上面說的都具有一個共性,很大的風險和不確定性。當今幣圈還存在一個比較穩健還收益比較穩定適合廣大幣友投資的產品嗎?
其中手動搬磚還算是上面當中比較穩健的投資,但有經驗的投資者都知道現在手動幾乎沒有任何空間了,還會存在砸腳的風險。很大一部分原因就是被當前火熱的自動量化軟體機器人給奪走了市場,機器人一天24小時交易,重復的做波段,賺取很小的差價,採用的策略是積少成多的策略。
(一)什麼是量化?
量化交易策略裡麵包含配幣,配參,配機等一系列動作,這套配置好的量化交易策略包能夠讓客戶手中的數字貨幣資產穩定增值。機械化操作,24 小時監控,程序自動化,根據事先制定好的策略嚴格執行,穩定盈利,不受市場漲跌影響。
(二)關於我們
UXBTC 量化基金
我們團隊成員大多來自傳統金融股票行業,擁有多年傳統金融經驗,也積累了多年量化策略開發這塊經驗。,致力於為客戶、合作夥伴及自身創造更可觀的收益。
優勢:從16年起,在數字貨幣領域,專注從人工到量化,優易始終專注於加密貨幣套利交易系統及策略的優化。另外包括市場調研、策略開發、系統測試、技術優化、風險控制,優易提供全方位、多元化的服務。
(三)收益表現 :以下為我們交易策略基於bitmex的BTC/USD交易對從2019年1月1日至今原始報價數據產生的回測結果.,歷史數據基本維持在20個點左右每月。
(四) 合作模式:
幣在客戶交易所裡面,不需要轉幣給我們,客戶僅開放加密貨幣交易所賬戶的API交易許可權,我們無法提取客戶交易所賬戶內的任何資產,只能執行買賣交易指令,確保了賬戶上的資產完全由客戶本人做主。
(五) 虧損保護:
在免費測試一周後(利潤都歸客戶),合作三個月內,由於我們策略給用戶投資本金造成的損失,我們將對投資本金虧損部分進行全額賠償,六個月內,我們保障客戶資金的90%,最大回撤10%。
(六) 收費模式:
前期不收任何服務費,只會在客戶盈利後我們會從盈利部分抽取 30%作為技術服務費用,除此之外沒有任何隱藏費用。
對新用戶還可以免費測試一周,所得利潤全都歸客戶。 等測試後正式合作後才和客戶分成。
(七) 結算時間:每半月一結算。操作完後,客戶需要將屬於我們該得的利潤轉給我們,我們收到利潤後才會幫客戶繼續操作。
目前支持操作的交易平台: BITMEX, OKEX 火幣等主流平台。
支持的幣種:BTC,ETH USDT, LTC EOS
FAQ:
1:如何知道目前操作的情況?
幣一直是在客戶交易所里,你在自己後台可以隨時看到自己資產動態情況,保障客戶資產安全。
2:量化對沖的好處是什麼?
量化對沖不受市場漲跌影響,它不賭市場方向,無論市場上漲還是下跌,均以獲取絕對收益為目標。
3:量化對沖是每天都在賺錢嗎?
答:這個說法不正確,每天的幣數量在增加,但是隨著幣價的波動,不保證每天都賺錢,量化對沖長期穩定,回撤幅度非常小,長期來看幾乎是一條傾斜向上的直線。
4 :風險提示
答:因甲方不可控或無法合理預見的不可抗和意外事件造成的損失,如交易所破產,主權國家法律和政策變動導致數字貨幣退市等中間幣種的發行方兌付違約或者破產等事件造成甲方經合理和審管理無法避免的損失,甲方無需承擔違約或賠償責任。
❺ 什麼是以太幣/以太坊ETH
以太幣(ETH)是以太坊(Ethereum)的一種數字代幣,被視為「比特幣2.0版」,採用與比特幣不同的區塊鏈技術「以太坊」(Ethereum),一個開源的有智能合約成果的民眾區塊鏈平台,由全球成千上萬的計算機構成的共鳴網路。開發者們需要支付以太幣(ETH)來支撐應用的運行。和其他數字貨幣一樣,以太幣可以在交易平台上進行買賣 。
溫馨提示:以上解釋僅供參考,不作任何建議。入市有風險,投資需謹慎。您在做任何投資之前,應確保自己完全明白該產品的投資性質和所涉及的風險,詳細了解和謹慎評估產品後,再自身判斷是否參與交易。
應答時間:2020-12-02,最新業務變化請以平安銀行官網公布為准。
[平安銀行我知道]想要知道更多?快來看「平安銀行我知道」吧~
https://b.pingan.com.cn/paim/iknow/index.html
❻ ETH怎麼買賣
通俗地講,在交易所購買ETH,然後等待價格上漲賣出,賺取差價。包括ETH在內的虛擬幣價格都很難預測,漲跌幅度沒限制,一旦虧損就是巨大的。但是在領域王國,起投僅5美元,只需要判斷ETH價格漲跌方向,正確就盈利,錯誤就損失掉這交易的5美金,虧損可控。
❼ 比特幣也可以量化交易嗎
可以,目前市場上有專門做量化交易的團隊,接入交易所的API即可。有些交易所也會找機構合作,成為做市商,為交易所提供流動性。
❽ 以太坊中的計量單位及相互轉換
首先我們來看一下以太幣單位之間的轉換,以太幣的最小單位為wei,1個eth相當於10的18次方wei。通常,大家也使用Gwei作為展示單位。比較常用的就是eth,Gwei和wei。
為了使用和驗證web3的操作命令,我們先進入geth的console控制台,在這里對具體的單位或進制轉換進行詳細的實例演示。
此轉換方法為web3.toDecimal(hexString)。直接在控制台輸入一下命令進行使用此函數進行轉換。
通過此函數將十六進制的0x16轉換為十進制的22。
轉換函數:web3.fromDecimal(number)。
控制台命令及結果如下:
把給定數字或十六進制字元串轉為 BigNumber 類型的實例。
此處轉換需要注意的是BigNumber只會保留小數點後20位,超過20位的部分將會被截取掉。
上面表格中列出了以太幣之間的單位進制,同樣可以使用web3進行相應的轉換,基本函數為web3.fromWei和web3.toWei(number, unit)。
具體實例如下:
其他的相關轉換大家可自行嘗試,下面列出相應的轉換種類:
通過上面的函數,在交易的過程中我們就可以隨意的單位進行發送交易,而不必使用最小單位wei。
通過查詢余額的方法,我們也可以看出區塊鏈中存儲這些數據的單位為wei。
代幣中的單位
在編寫ERC-20的代幣合約時我們可以指定代幣的單位,比如:
這里就指定了代幣單位精確到小數點後幾位。比如精確到小數點後3位,那麼1個代幣存儲時就是1000個最小單位的值。
❾ 【必看】ETH低風險套利的一種方法
話不多說,直接上干貨。
近一段關注EOS眾籌比較多,看到有小夥伴根據EOS/ETH的數據,發了如下一張圖:
圖中明顯可以看出漲跌周期基本以23小時為一個輪回,如果在每間隔23小時高賣低買一次,算是一種比較穩妥的獲利辦法。
你一定很好奇,這真的是一個規律嗎?或者說為什麼是這樣呢?
這還要從EOS眾籌開始說起。BM當時天才的提出了EOS眾籌的想法,以23小時為周期,持續一年,此種眾籌方式可謂前無古人。
我猜測BM是不是考慮區塊鏈乃是全球共同關注的項目,因此把眾籌時間固定在幾點似乎都不合適,那乾脆輪流,每個時間都輪到。
現在把ETH換成EOS有兩種方式,一是在二級市場買入,二是參與一級市場的眾籌。
假設一級市場眾籌的價格持續高於二級市場買入,那麼參與眾籌的人必然越來越少,讓參與一級市場眾籌的價格慢慢降低。降低到什麼程度呢?比較合理的結果是:一級市場眾籌的價格略低於或等於二級市場的價格。
舉一個例子就明白了,以下數據僅為說明用。
比如在二級市場(就是在交易所買入)1個ETH可以換40個EOS,但是在一級市場(參與眾籌)1個ETH可以換41個EOS,那必然有人會用1個ETH參與眾籌換來41個EOS,然後在二級市場換回ETH,這樣在不考慮手續費的情況下,1個ETH就變成了1.025個ETH,獲利了2.5%。
近期隨著EOS價格的走高,每天參與眾籌的ETH多達4萬多個。
這里肯定有不少比例的資金是在進行一級市場和二級市場的搬磚套利。
如果知道了這個原理,那麼可以分析出在EOS的眾籌時間點就是一個EOS價格的相對低點,這時用ETH換成EOS,等過一小段時間等EOS漲上去,再把EOS換回ETH,實現套利。
以最近兩周多的數據來分析,假設在每天眾籌的時間點把ETH換成EOS,在一小時後把EOS換回ETH,可以盈利多少呢?
經過計算,最近18天的收益總計為3.6%,看起來不算多,好處是風險較小。
如果資金量較大收益絕對收益也比較可觀。
即使發生風險,EOS和ETH也都是大幣種,也不會砸在手裡。
由於時間倉促,我後續會更新上述表格,補充EOS眾籌當時的價格和眾籌1小時後的價格。
最後小結一下操作步驟:
①在EOS的眾籌網站查詢每天EOS的眾籌時間
②在眾籌時間點,在交易網站(如幣安)用ETH買入EOS
③1小時後再把EOS換回ETH
這是一種低風險套利的方式,但並不代表沒有風險。有時二級市場的波動比較大,出現暫時的虧損也是正常的。
如在圖中可以看到,在4月29日,市場波動極大,在眾籌後的一個小時內EOS/ETH下跌了4.1%。
不過我們做事情,只要做概率大的事情即可。如果像銀行存款那樣,雖然幾乎無風險,但年化收益率只有區區1.75%。
如果用理性戰勝人損失厭惡的感性,那麼人的能力邊界無疑就擴大了一些。
這也是借鑒了量化交易的思路,如果確認一件事情是大概率獲利,那就學習冷冰冰的計算機,毫無感情的執行即可。
這里有一點需要說明:現在距離EOS主網上線還有最後一個月,所以這種低風險套利的辦法只能再持續4周,有興趣嘗試的小夥伴可要抓緊了。
❿ 【ETH錢包開發03】web3j轉賬ETH
在之前的文章中,講解了創建、導出、導入錢包。
【ETH錢包開發01】創建、導出錢包
【ETH錢包開發02】導入錢包
本文主要講解以太坊轉賬相關的一些知識。交易分為ETH轉賬和ERC-20 Token轉賬,本篇先講一下ETH轉賬。
1、解鎖賬戶發起交易。錢包keyStore文件保存在geth節點上,用戶發起交易需要解鎖賬戶,適用於中心化的交易所。
2、錢包文件離線簽名發起交易。錢包keyStore文件保存在本地,用戶使用密碼+keystore的方式做離線交易簽名來發起交易,適用於dapp,比如錢包。
本文主要講一下第二種方式,也就是錢包離線簽名轉賬的方式。
交易流程
1、通過keystore載入轉賬所需的憑證Credentials
2、創建一筆交易RawTransaction
3、使用Credentials對象對交易簽名
4、發起交易
注意以下幾點:
1、Credentials
這里,我是通過獲取私鑰的方式來載入 Credentials
還有另外一種方式,通過密碼+錢包文件keystore方式來載入 Credentials
2、nonce
nonce是指發起交易的賬戶下的交易筆數,每一個賬戶nonce都是從0開始,當nonce為0的交易處理完之後,才會處理nonce為1的交易,並依次加1的交易才會被處理。
可以通過 eth_gettransactioncount 獲取nonce
3、gasPrice和gasLimit
交易手續費由gasPrice 和gasLimit來決定,實際花費的交易手續費是 gasUsed * gasPrice 。所有這兩個值你可以自定義,也可以使用系統參數獲取當前兩個值
關於 gas ,你可以參考我之前的一篇文章。
以太坊(ETH)GAS詳解
gasPrice和gasLimit影響的是轉賬的速度,如果gas過低,礦工會最後才打包你的交易。在app中,通常給定一個默認值,並且允許用戶自己選擇手續費。
如果不需要自定義的話,還有一種方式來獲取。獲取以太坊網路最新一筆交易的 gasPrice ,轉賬的話, gasLimit 一般設置為21000就可以了。
Web3j還提供另外一種簡單的方式來轉賬以太幣,這種方式的好處是不需要管理nonce,不需要設置gasPrice和gasLimit,會自動獲取最新一筆交易的gasPrice,gasLimit 為21000(轉賬一般設置成這個值就夠用了)。
這個問題,我想是很多朋友所關心的吧。但是到目前為止,我還沒有看到有講解這方面的博客。
之前問過一些朋友,他們說可以通過區塊號、區塊哈希來判斷,也可以通過Receipt日誌來判斷。但是經過我的一番嘗試,只有 BlockHash 是可行的,在web3j中根據 blocknumber 和 transactionReceipt 都會報空指針異常。
原因大致是這樣的:在發起一筆交易之後,會返回 txHash ,然後我們可以根據這個 txHash 去查詢這筆交易相關的信息。但是剛發起交易的時候,由於手續費問題或者乙太網絡擁堵問題,會導致你的這筆交易還沒有被礦工打包進區塊,因此一開始是查不到的,通常需要幾十秒甚至更長的時間才能獲取到結果。我目前的解決方案是輪詢的去刷 BlockHash ,一開始的時候 BlockHash 的值為0x00000000000,等到打包成功的時候就不再是0了。
這里我使用的是rxjava的方式去輪詢刷的,5s刷新一次。
正常情況下,幾十秒內就可以獲取到區塊信息了。
區塊確認數=當前區塊高度-交易被打包時的區塊高度。