💰
PoloniexのAPIを使って、指定した金額になったら取引する(IFD)プログラム
背景
- Poloniex で仮想通貨を取引していますが、法定通貨がUSDTしか無い。
- ETH/BTCとかUSDT/BTCがメイン。JPYは存在しない。
問題と解決
- 「日本円で指定金額になったら注文する」というユースケースを実現できない。
- 例えば、「ETHが50000円になったら、51000円で指し値注文してETHを売ってBTCを買う」という注文が出来ない。
- PoloniexでAPIが公開されているのでプログラム書いた。
仕様
- Stop Limit Orderを行っています。
- 1分に1回レートを取得
- 指定の金額になったらmacOSのnotification centerに通知を表示
- 一応、1分待つ。
- 1%高い所で指値(Limit order)を入れる。
- プログラムが終了
- 24時間稼働させたいならサーバで動かしておけば良い。
スクリーンショット
ソースコード
require 'rubygems'
require 'bundler/setup'
Bundler.require(:default)
Dotenv.load
Poloniex.setup do |config|
config.key = ENV['POLONIEX_KEY']
config.secret = ENV['POLONIEX_SECRET']
end
check_currency_pair = 'USDT_ETH'
sell_currency_pair = 'ETH_BTC'
usd_jpy = 110.24
sell_amount = 0.1
loop do
ticker = Poloniex.ticker
usdt_btc = JSON.parse(ticker)[check_currency_pair]['last']
jpy_btc = usdt_btc.to_f * usd_jpy
puts Time.now.to_s + "\t" + jpy_btc.to_s
if jpy_btc > 38_000
contents = jpy_btc
title = 'Rate alert'
system('osascript -e \'display notification "%s" with title "%s" \'' % %w[contents title])
# execute order
sleep 60
rate = JSON.parse(ticker)['BTC_ETH']['lowestAsk'].to_f * 1.01
Poloniex.sell(sell_currency_pair, rate, sell_amount)
contents = rate
title = 'Placed and selling order'
system('osascript -e \'display notification "%s" with title "%s" \'' % %w[contents title])
break
end
sleep 60
end
Happy FX life!
Discussion