🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
bitFlyer API

bitFlyer APIは、仮想通貨取引所bitFlyerが公開しているAIPツール。bitFlyer Lightning/API playground/chainFlyer/Echoの4種類あり、bitFlyerソフトをカスタマイズすることが可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1009閲覧

Traceback (most recent call last): bitcoin.rb:13:in `<main>': undefined method `>' for nil:NilClass

Keitamidehyah

総合スコア5

bitFlyer API

bitFlyer APIは、仮想通貨取引所bitFlyerが公開しているAIPツール。bitFlyer Lightning/API playground/chainFlyer/Echoの4種類あり、bitFlyerソフトをカスタマイズすることが可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/11/28 10:09

前提・実現したいこと

今Rubyを使ってbitflyerの自動売買ソフトを作っていますが下記のエラーに悩まされておりmethod.rbに定義したものをまとめてbitcon.rbで動かそうとしていますがどう編集していいのかわからない状態です

発生している問題・エラーメッセージ

Traceback (most recent call last):
bitcoin.rb:13:in <main>': undefined method >' for nil:NilClass (NoMethodError)

該当のソースコード

Ruby

bitcoin.rb

require './method'

get_my_money("BTC")
get_my_money("JPY")
ifdoneOCO

while(1)
current_price = get_price
puts current_price
buy_price = 826000
sell_price = 8300000
if (current_price > sell_price) && (get_my_money("BTC")[amount] > 0.001)
puts "売ります"
order("SELL",sell_price,0.001)
elsif (get_price < buy_price) && (get_my_money("BTC")[amount] > 0.001)
puts "買います"
order("BUY",buy_price,0.001)
else
puts "何もしません"
end
sleep(1)
end

method.rb

def get_price
uri = URI.parse("https://api.bitflyer.jp") #このURLにアクセスすればいろんなデータを受け取れる
uri.path = '/v1/getboard' #板情報リクエストはv1/getboardに指定
uri.query = '' #どの取引を指定する部分

https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true #http通信の設定 response = https.get uri.request_uri #取得してきたデータの結果をレスポンスの中に入れる response_hash = JSON.parse(response.body) #json形式で書かれたresponse.bodyをhashに格納 puts response_hash ["mid_price"] #売りと買いの中間の値段のラベルがついたものを表示

end

def order(side,price,size)
key = API_KEY
secret = API_SECRET

timestamp = Time.now.to_i.to_s method = "POST"

uri = URI.parse("https://api.bitflyer.com")
uri.path = "/v1/me/sendchildorder"
body = '{
"product_code": "BTC_JPY",
"child_order_type": "LIMIT",
"side": "'+ side +'",
"price":' + price + ',
"size": ' + size + ',
"minute_to_expire": 10000,
"time_in_force": "GTC"
}'

text = timestamp + method + uri.request_uri + body sign = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha256"), secret, text) options = Net::HTTP::Post.new(uri.request_uri, initheader = { "ACCESS-KEY" => key, "ACCESS-TIMESTAMP" => timestamp, "ACCESS-SIGN" => sign, "Content-Type" => "application/json" }); options.body = body https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true response = https.request(options) puts response.body

end

def get_my_money(coin_name)
key = API_KEY
secret = API_SECRET

timestamp = Time.now.to_i.to_s method = "GET" uri = URI.parse("https://api.bitflyer.com") uri.path = "/v1/me/getbalance" text = timestamp + method + uri.request_uri sign = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha256"), secret, text) options = Net::HTTP::Get.new(uri.request_uri, initheader = { "ACCESS-KEY" => key, "ACCESS-TIMESTAMP" => timestamp, "ACCESS-SIGN" => sign, }); https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true response = https.request(options) response_hash = JSON.parse(response.body) response_hash.find {|n| n["currency_code"] == coin_name}

end

==============================================

試したこと

エラー文を読んでcurrent_priceのところが定義されていないと思い
get_price に変えて記述しましたが同じエラーです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

定義されてない、んじゃなくて、ナカミがnullになってますというエラーです
ナカミになにが入ってるのかみてみよう

投稿2019/11/28 10:17

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Keitamidehyah

2019/11/29 11:22

回答ありがとうございます。 `>' for nil:NilClassとなるのは > これ自身が空なのか その前のWhileの文初めに書いてるcurrent_priceの中身がからなのかわからない状況です。
guest

0

current_price = get_price →  current_price = get_price.to_i
この部分に数値をとるメソッドを入れると無事動きました!!
初歩のミスなので復習は怠らず頑張ります。

投稿2019/11/30 09:02

Keitamidehyah

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問