[ПОЛЕЗНО] Исходный код моего скрипта для арбитража между криптобиржами + фьючерсы (в процессе доработки) + БОНУС [LINUX]
Привет, друзья! Я всё никак не соберусь написать пост о том, почему я больше не пишу в голос, и к каким выводам пришёл. Пока этот пост формируется в моей голове и в ноутбуке, я опубликую исходники скрипта, который помогает мне в крипто-арбитраже между крипто-биржами.
Если быть точными, таких скриптов у меня два. В одном из них я оставил только крипто-пары, а в другом также есть место для фиатных пар (но арбитражить фиатом я вам крайне не рекомендую: высокие комиссии, ожидание, непредвиденные задержки, необходимость верификации, ерундовые лимиты и т. д.).
Описывать особенно скрипт не буду - он просто отображает разницу в курсах между биржами Yobit, WEX, Exmo и также в процессе адаптации находится Rudex/Openledger - пока я не заставил эту биржу корректно работать. Разница сразу для удобства отображается в процентах. Сами курсы также показываются, а рядом с ними - объемы торговли (это чтобы вы не обольщались разнице в 20% на некоторых парах, т.к. продаваться некоторые монеты могут очень долго на Yobit, например вообще днями - например по паре NVC/BTC).
Т.е. вы смотрите где дешевле, где дороже, если вас устраивает разница, объем торговли, и комиссии за транзакции, то покупаете там, где дешевле (в 90% это WEX), переводите туда, где дороже (в 90% это Yobit), продаёте крипту обратно, и повторяете цикл.
Мой скрипт METARBITRAGE создан для облегчения трекинга, вот так выглядит результат работы версии, которая работает только с криптой (также он отображает вверху фьючерсы на биткоин):
Ну а вот так выглядит крипто-фиатный арбитражный скрипт, соответственно пар больше:
Конечно, вы можете арбитражить и без этого linux/bash скрипта, но вручную делать постоянные калькуляции по 3-4 биржам по 4-10 парам - дело неблагодарное.
Скрипт Crypto.sh
#!/bin/bash
clear
tickerswex=( ltc_btc nmc_btc nvc_btc ppc_btc dsh_btc dsh_ltc dsh_eth eth_btc eth_ltc bch_btc bch_ltc bch_eth bch_dsh zec_btc )
tickersyob=( ltc_btc nmc_btc nvc_btc ppc_btc dash_btc dash_ltc dash_eth eth_btc eth_ltc bcc_btc bcc_ltc bcc_eth bcc_dash zec_btc )
tickersexm=( LTC_BTC NMC_BTC NVC_BTC PPC_BTC DASH_BTC DASH_LTC DASH_ETH ETH_BTC ETH_ltc BCH_BTC BCH_LTC BCH_ETH BCH_DASH ZEC_BTC )
tickersol=( LTC_BTC NMC_BTC NVC_BTC PPC_BTC DASH_BTC DASH_LTC DASH_ETH ETH_BTC ETH_ltc BCH_BTC BCH_LTC BCH_ETH BCH_DASH ZEC_BTC )
end=$(echo ${tickerswex[@]} | wc -w)
d=$(curl -s http://cfe.cboe.com/cfe-products/xbt-cboe-bitcoin-futures | html2text | grep -A5 "Cboe XBT Bitcoin Futures Trading Data")
echo "\/------------------------------------------------------------------------------\/"
echo "|| M E T A R B I T R A G E Handle with care! ||"
echo "|| This script helps you to arbitrage cryptocurrencies between exchanges. ||"
echo "|| Please wait, scanning $end crypocurrency pairs on two exchanges. ||"
echo "|| Written by Security XIII on 8.12.2017 ||"
echo "\/------------------------------------------------------------------------------\/"
echo ""
echo "$d"
echo ""
text=( "PAIR NAME" "YOBIT.NET" "Y volume" "WEX.NZ" "W volume" "EXMO.ME" "E Volume" "OpenLedger" "O Volume" "DIFF. Y/W" "DIFF. Y/E" "DIFF. W/E" )
printf "%-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-30s\n" " ${text[0]}" "${text[1]}" "${text[2]}" "${text[3]}" "${text[4]}" "${text[5]}" "${text[6]}" "${text[7]}" "${text[8]}" "${text[9]}" "${text[10]}" "${text[11]}"
echo "-------------------------------------------------------------------------------------------------------------------------------"
for i in `seq 0 $(($end-1))`; do
w=""; y=""; e=""; r=""; r2=""; r3="";
curl -f -s https://wex.nz/api/3/ticker/"${tickerswex[i]}" > wfile
w=$(cat wfile | jq '.'"${tickerswex[i]}"'.sell')
wv=$(cat wfile | jq '.'"${tickerswex[i]}"'.vol')
rm wfile
curl -f -s https://yobit.net/api/3/ticker/"${tickersyob[i]}" > yfile
y=$(cat yfile | jq '.'"${tickersyob[i]}"'.sell')
yv=$(cat yfile | jq '.'"${tickersyob[i]}"'.vol')
rm yfile
curl -f -s https://api.exmo.com/v1/ticker > efile
e=$(cat efile | jq '.'"${tickersexm[i]}"'.sell_price' | awk -F'"' '{ print $2 }')
ev=$(cat efile | jq '.'"${tickersexm[i]}"'.vol' | awk -F'"' '{ print $2 }')
rm efile
curl -f -s https://stats.openledger.info/api/asset/pairs > ofile
o=$(cat ofile | jq '.'"${tickersol[i]}"'.last')
ov=$(cat ofile | jq '.'"${tickersol[i]}"'.baseVolume')
rm ofile
[[ $w == null ]] && w=""; [[ $y == null ]] && y=""; [[ $e == null ]] && e="";
[[ $wv == null ]] && wv=""; [[ $yv == null ]] && yv=""; [[ $ev == null ]] && ev="";
[[ $o == null ]] && o=""; [[ $ov == null ]] && ov="";
[[ $w =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && [[ $y =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && r=$(echo "scale=8;(($y/$w)-1)*100" | bc)
[[ $y =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && [[ $e =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && r2=$(echo "scale=8;(($y/$e)-1)*100" | bc)
[[ $e =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && [[ $w =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && r3=$(echo "scale=8;(($w/$e)-1)*100" | bc)
printf "%-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-20s\n" "${tickersyob[$i]}" "${y:0:10}" "${yv:0:10}" "${w:0:10}" "${wv:0:10}" "${e:0:10}" "${ev:0:10}" "${o:0:10}" "${ov:0:10}" "${r:0:10}" "${r2:0:10}" "${r3:0:10}"
done
echo "-------------------------------------------------------------------------------------------------------------------------------"
Скрипт Cryptofiat.sh
#!/bin/bash
clear
tickerswex=( btc_usd btc_eur btc_rur ltc_btc ltc_usd ltc_eur ltc_rur nmc_btc nmc_usd nvc_btc nvc_usd usd_rur eur_rur ppc_btc ppc_usd dsh_btc dsh_rur dsh_usd dsh_eth eth_btc eth_usd eth_eur eth_rur bch_usd bch_btc bch_rur bch_eth zec_btc zec_usd )
tickersyob=( btc_usd btc_eur btc_rur ltc_btc ltc_usd ltc_eur ltc_rur nmc_btc nmc_usd nvc_btc nvc_usd usd_rur eur_rur ppc_btc ppc_usd dash_btc dash_rur dash_usd dash_eth eth_btc eth_usd eth_eur eth_rur bcc_usd bcc_btc bcc_rur bcc_eth zec_btc zec_usd )
tickersexm=( BTC_USD BTC_EUR BTC_RUB LTC_BTC LTC_USD LTC_EUR LTC_RUB NMC_BTC NMC_USD NVC_BTC NVC_USD USD_RUB EUR_RUB PPC_BTC PPC_USD DASH_BTS DASH_RUB DASH_USD DASH_ETH ETH_BTC ETH_USD ETH_EUR ETH_RUB BCH_USD BCH_BTC BCH_RUB BCH_ETH ZEC_BTC ZEC_USD )
end=$(echo ${tickerswex[@]} | wc -w)
echo "\/------------------------------------------------------------------------------\/"
echo "|| M E T A R B I T R A G E Handle with care! ||"
echo "|| This script helps you to arbitrage cryptocurrencies between exchanges. ||"
echo "|| Please wait, scanning $end crypocurrency pairs on two exchanges. ||"
echo "|| Written by Security XIII on 8.12.2017 ||"
echo "\/------------------------------------------------------------------------------\/"
echo ""
text=( "PAIR NAME" "YOBIT.NET" "Y vol" "WEX.NZ" "W vol" "EXMO.ME" "E Vol" "DIFF. Y/W" "DIFF. Y/E" "DIFF. W/E" )
printf "%-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-30s\n" " ${text[0]}" "${text[1]}" "${text[2]}" "${text[3]}" "${text[4]}" "${text[5]}" "${text[6]}" "${text[7]}" "${text[8]}" "${text[9]}"
echo "-------------------------------------------------------------------------------------------------------------------------------"
for i in `seq 0 $(($end-1))`; do
w=""; y=""; e=""; r=""; r2=""; r3="";
curl -f -s https://wex.nz/api/3/ticker/"${tickerswex[i]}" > wfile
w=$(cat wfile | jq '.'"${tickerswex[i]}"'.sell')
wv=$(cat wfile | jq '.'"${tickerswex[i]}"'.vol')
rm wfile
curl -f -s https://yobit.net/api/3/ticker/"${tickersyob[i]}" > yfile
y=$(cat yfile | jq '.'"${tickersyob[i]}"'.sell')
yv=$(cat yfile | jq '.'"${tickersyob[i]}"'.vol')
rm yfile
curl -f -s https://api.exmo.com/v1/ticker > efile
e=$(cat efile | jq '.'"${tickersexm[i]}"'.sell_price' | awk -F'"' '{ print $2 }')
ev=$(cat efile | jq '.'"${tickersexm[i]}"'.vol' | awk -F'"' '{ print $2 }')
rm efile
[[ $w == null ]] && w=""; [[ $y == null ]] && y=""; [[ $e == null ]] && e="";
[[ $wv == null ]] && wv=""; [[ $yv == null ]] && yv=""; [[ $ev == null ]] && ev="";
[[ $w =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && [[ $y =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && r=$(echo "scale=8;(($y/$w)-1)*100" | bc)
[[ $y =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && [[ $e =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && r2=$(echo "scale=8;(($y/$e)-1)*100" | bc)
[[ $e =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && [[ $w =~ ^[+-]?[0-9]+\.?[0-9]*$ ]] && r3=$(echo "scale=8;(($w/$e)-1)*100" | bc)
printf "%-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-20s\n" "${tickersyob[$i]}" "${y:0:10}" "${yv:0:10}" "${w:0:10}" "${wv:0:10}" "${e:0:10}" "${ev:0:10}" "${r:0:10}" "${r2:0:10}" "${r3:0:10}"
done
echo "-------------------------------------------------------------------------------------------------------------------------------"
#sleep 60
Также, данные скрипты вы можете взять с моего pastebin:
https://pastebin.com/u/sxiii
В качестве бонуса вот также вам руководство по получению 3-5% "сверху" на ваши "натрейженные" рубли на вексе (вывод с WEX при помощи WEX-кодов и обменников) - вы получите на QIWI ваши рубли с бонусом по любому направлению тут: https://www.bestchange.ru/wex-rub-to-qiwi.html
Всем финансового благополучия и хорошего настроения ;)
Независимый автор голоса
Den Ivanov aka @SXIII from Random City