ビットコイン自動売買BOT作成 その7:「一定時間毎チェックで取引量急増を判定すると、トレンド追従売買を実行するプログラム」の作り方
この記事の読了目安は約 18 分です。
目次
前回の記事はこちら
前回の記事(その6)は、「Lightning FX における最小発注数量の改定」への対応の記事でした。
今回の目標;「一定時間毎チェックで取引量急増を判定すると、トレンド追従売買を実行するプログラム」の作成
これまでの記事で作ったBOTは、「設定した価格」をトリガーとして反応するタイプでしたが、今回は「取引量急増」をトリガーとして反応する、トレンド反応タイプのBOTプログラムを作成してみようと思います。
プログラム作成の流れ
トレンド判定用のデータをCryptowatchのAPIで取得
トレンドに追従するためには、トレンドが発生しているかどうか判定する必要があり、そのためには現在データと過去データを比較することが必要になります。
現在データと過去データを比較することで「トレンド」を把握して反応するBOTを作ることができるようになるので、現在データのみで動作するBOTに対して、応用の幅が飛躍的に拡大します。
これまでの記事で作ったBOTではビットフライヤー公式APIを利用して現在データを取得していましたが、現在データと過去データ(現在データの1分前など)をまとめて一括で提供してくれるサービスのAPIを利用するのが手軽なのでそちらを利用します。自分が利用しているのはCryptowatchのAPIです。
サマリーは、「https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/summary」で取得できます。取得してみると↓以下のとおりでデータとして終値、高値、安値、取引量などが取得できるのが分かります。
{"result":{"price":{"last":721790,"high":729500,"low":703000,"change":{"percentage":0.010795694,"absolute":7709}},"volume":210861.34,"volumeQuote":150241670000},"allowance":{"cost":11642731,"remaining":7898720075}}
1分足の終値、高値、安値、取引量などのOHLCデータは、「https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=60」で取得できます。取得してみると↓以下のとおりです。[ CloseTime, OpenPrice, HighPrice, LowPrice, ClosePrice, Volume ]
{"result":{"60":[[1534692000,710414,710819,710369,710751,142.7001,101405200],[1534692060,710659,711000,710252,710252,186.30222,132386630],[1534692120,710331,710687,709617,709922,328.80435,233457980],[1534692180,709922,710000,708882,709614,319.34116,226509970],[1534692240,709500,710500,709500,710252,272.76154,193666770],[1534692300,710204,710850,710125,710606,193.99167,137840210],[1534692360,710661,711000,710360,710421,210.98181,149942480],[1534692420,710421,710500,709111,709800,215.47,152950000], ...続く
パーツ①:取引量のデータを取得する部分
上記APIからOHLCデータ取得し、取引量(BTC/分)を抽出します。
#冒頭にrequire等呼び出し関係列挙 require 'net/http' require 'uri' require 'json' #JSONメソッド呼出し require "openssl" #1分足の取引量(BTC/分)を取得 url = URI("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=60") http = Net::HTTP.new(url.host, url.port); http.use_ssl = true; request = Net::HTTP::Get.new(url); response = http.request(request) defload_response_hash = JSON.parse(response.body) #ハッシュ取得 defload_response_array60s = defload_response_hash["result"]["60"] #ハッシュからデータ抽出 puts "↓1分足のOHLCデータ" puts defload_response_array60s[-1] #直近データを抽出 puts "↓1分足の取引量(BTC/分)" vol_1min = defload_response_array60s[-1][5] #直近データの取引量を抽出 puts vol_1min #1時間足の取引量(BTC/分)を取得 url = URI("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=3600") http = Net::HTTP.new(url.host, url.port); http.use_ssl = true; request = Net::HTTP::Get.new(url); response = http.request(request) defload_response_hash = JSON.parse(response.body) #ハッシュ取得 defload_response_array3600s = defload_response_hash["result"]["3600"] #ハッシュからデータ抽出 puts "↓1時間足のOHLCデータ" puts defload_response_array3600s[-1] #直近データを抽出 puts "↓1時間足の取引量(BTC/時間)" puts defload_response_array3600s[-1][5] #直近データの取引量を抽出 puts "↓1時間足の取引量(BTC/分)" vol_1hr = defload_response_array3600s[-1][5]/60 #分あたりを計算 puts vol_1hr
実行結果↓
E:\btcfx>ruby soutai-info.rb ↓1分足のOHLCデータ 1534730700 723851 723895 723836 723862 7.8832884 5706466 ↓1分足の取引量(BTC/分) 7.8832884 ↓1時間足のOHLCデータ 1534734000 723599 723958 723205 723862 394.24323 285273900 ↓1時間足の取引量(BTC/時間) 394.24323 ↓1時間足の取引量(BTC/分) 6.570720499999999 E:\btcfx>
パーツ②:トレンド方向判定用のデータ(始値と終値)を取得する部分
トレンドの方向(上昇or下降)については、今回は一例としてシンプルに1分足の取引量の初値と終値を比較することで、判断します。
#冒頭にrequire等呼び出し関係列挙 require 'net/http' require 'uri' require 'json' #JSONメソッド呼出し require "openssl" #1分足の始値と終値を取得 url = URI("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=60") http = Net::HTTP.new(url.host, url.port); http.use_ssl = true; request = Net::HTTP::Get.new(url); response = http.request(request) defload_response_hash = JSON.parse(response.body) #ハッシュ取得 defload_response_array60s = defload_response_hash["result"]["60"] #ハッシュからデータ抽出 puts "↓1分足のOHLCデータ" puts defload_response_array60s[-1] #直近データを抽出 puts "↓始値を抽出" open_price = defload_response_array60s[-1][1] #始値を抽出 puts open_price puts "↓終値を抽出" close_price = defload_response_array60s[-1][4] #終値を抽出 puts close_price
実行結果↓
E:\btcfx>ruby soutai-info.rb ↓1分足のOHLCデータ 1534738500 721488 721692 721400 721402 75.136116 54214024 ↓始値を抽出 721488 ↓終値を抽出 721402 E:\btcfx>
パーツ③:注文するための条件分岐の部分
上記のOHLCデータから取引量のデータを抽出して比較して、「取引量急増」を判定してみます。
「取引量急増」をどう設定するかがミソですが、今回はシンプルに「”1分足の取引量(BTC/分)”が”1時間足の取引量(BTC/分)”の5倍以上」と設定する例で作成します。
条件分岐に下記のif~elsif~endの条件分岐
を使います。
#if~elsif~endの条件分岐 if 条件A 条件Aがtrueの場合に実行するプログラム elsif 条件B 条件Bがtrueの場合に実行するプログラム else その他の場合に実行するプログラム end
今回の場合、下記のとおりの条件分岐になります。
条件A:「1分足の取引量(BTC/分)>1時間足の取引量(BTC/分)×5倍」かつ「1分足の初値<終値」の場合⇒買いの成行注文
条件B:「1分足の取引量(BTC/分)>1時間足の取引量(BTC/分)×5倍」かつ「1分足の初値>終値」の場合⇒売りの成行注文
その他の場合は、条件外なので注文せずスルー。
条件部分をプログラムに書き換えると、
#if~elsif~endの条件分岐 if (vol_1min > vol_1hr*5) && (open_price < close_price) #条件A puts "条件Aがtrueの場合に実行するプログラム【買い注文】" elsif (vol_1min > vol_1hr*5) && (open_price > close_price) #条件B puts "条件Bがtrueの場合に実行するプログラム【売り注文】" else puts "その他の場合に実行するプログラム【注文せずスルー】" end
プログラムのパーツ①~③を合体
条件判定の動作確認を行うために、上記のプログラムのパーツ①~③を合体します。
#冒頭にrequire等呼び出し関係列挙 require 'net/http' require 'uri' require 'json' #JSONメソッド呼出し require "openssl" #1分足の取引量(BTC/分)を取得 url = URI("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=60") http = Net::HTTP.new(url.host, url.port); http.use_ssl = true; request = Net::HTTP::Get.new(url); response = http.request(request) defload_response_hash = JSON.parse(response.body) #ハッシュ取得 defload_response_array60s = defload_response_hash["result"]["60"] #ハッシュからデータ抽出 #puts "↓1分足のOHLCデータ" #puts defload_response_array60s[-1] #直近データを抽出 puts "↓1分足の取引量(BTC/分)" vol_1min = defload_response_array60s[-1][5] #直近データの取引量を抽出 puts vol_1min #1時間足の取引量(BTC/分)を取得 url = URI("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=3600") http = Net::HTTP.new(url.host, url.port); http.use_ssl = true; request = Net::HTTP::Get.new(url); response = http.request(request) defload_response_hash = JSON.parse(response.body) #ハッシュ取得 defload_response_array3600s = defload_response_hash["result"]["3600"] #ハッシュからデータ抽出 #puts "↓1時間足のOHLCデータ" #puts defload_response_array3600s[-1] #直近データを抽出 #puts "↓1時間足の取引量(BTC/時間)" #puts defload_response_array3600s[-1][5] #直近データの取引量を抽出 puts "↓1時間足の取引量(BTC/分)" vol_1hr = defload_response_array3600s[-1][5]/60 #分あたりを計算 puts vol_1hr #1分足の始値と終値を取得 #url = URI("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=60") #http = Net::HTTP.new(url.host, url.port); http.use_ssl = true; request = Net::HTTP::Get.new(url); response = http.request(request) #defload_response_hash = JSON.parse(response.body) #ハッシュ取得 #defload_response_array60s = defload_response_hash["result"]["60"] #ハッシュからデータ抽出 #puts "↓1分足のOHLCデータ" #puts defload_response_array60s[-1] #直近データを抽出 puts "↓始値を抽出" open_price = defload_response_array60s[-1][1] #始値を抽出 puts open_price puts "↓終値を抽出" close_price = defload_response_array60s[-1][4] #終値を抽出 puts close_price #if~elsif~endの条件分岐 if (vol_1min > vol_1hr*2) && (open_price < close_price) #条件A puts "条件Aがtrueの場合に実行するプログラム【買い注文】" elsif (vol_1min > vol_1hr*2) && (open_price > close_price) #条件B puts "条件Bがtrueの場合に実行するプログラム【売り注文】" else puts "その他の場合に実行するプログラム【注文せずスルー】" end
動作確認する前に#
でコメントアウトして動いていないコードを削除してスッキリさせて、判定倍率が5倍だと【注文せずスルー】になりやすいので、条件分岐の動作確認用に判定倍率を仮で1倍にしてみます。
#冒頭にrequire等呼び出し関係列挙 require 'net/http' require 'uri' require 'json' #JSONメソッド呼出し require "openssl" #1分足の取引量(BTC/分)を取得 url = URI("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=60") http = Net::HTTP.new(url.host, url.port); http.use_ssl = true; request = Net::HTTP::Get.new(url); response = http.request(request) defload_response_hash = JSON.parse(response.body) #ハッシュ取得 defload_response_array60s = defload_response_hash["result"]["60"] #ハッシュからデータ抽出 puts "↓1分足の取引量(BTC/分)" vol_1min = defload_response_array60s[-1][5] #直近データの取引量を抽出 puts vol_1min #1時間足の取引量(BTC/分)を取得 url = URI("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=3600") http = Net::HTTP.new(url.host, url.port); http.use_ssl = true; request = Net::HTTP::Get.new(url); response = http.request(request) defload_response_hash = JSON.parse(response.body) #ハッシュ取得 defload_response_array3600s = defload_response_hash["result"]["3600"] #ハッシュからデータ抽出 puts "↓1時間足の取引量(BTC/分)" vol_1hr = defload_response_array3600s[-1][5]/60 #分あたりを計算 puts vol_1hr #1分足の始値と終値を取得 puts "↓始値を抽出" open_price = defload_response_array60s[-1][1] #始値を抽出 puts open_price puts "↓終値を抽出" close_price = defload_response_array60s[-1][4] #終値を抽出 puts close_price #if~elsif~endの条件分岐 if (vol_1min > vol_1hr*1) && (open_price < close_price) #条件A【判定倍率1倍(仮)】 puts "条件Aがtrueの場合に実行するプログラム【買い注文】" elsif (vol_1min > vol_1hr*1) && (open_price > close_price) #条件B【判定倍率1倍(仮)】 puts "条件Bがtrueの場合に実行するプログラム【売り注文】" else puts "その他の場合に実行するプログラム【注文せずスルー】" end
↓判定倍率を1倍(仮)で動作確認したら、条件分岐が動作しました。
E:\btcfx>ruby soutai-info.rb ↓1分足の取引量(BTC/分) 64.45373 ↓1時間足の取引量(BTC/分) 58.13195333333333 ↓始値を抽出 717865 ↓終値を抽出 718203 条件Aがtrueの場合に実行するプログラム【買い注文】 E:\btcfx>ruby soutai-info.rb ↓1分足の取引量(BTC/分) 8.861382 ↓1時間足の取引量(BTC/分) 63.8904 ↓始値を抽出 718136 ↓終値を抽出 718214 その他の場合に実行するプログラム【注文せずスルー】 E:\btcfx>
売買注文できる無限ループに書き換え
下記の記事その5で作った「⑤ 一定時間毎に現在価格をチェックし、売り目標まで下落で成行売り、買い目標まで上昇で成行買いプログラム」をベースに、売買注文できる無限ループに書き換えます。
#################################################################################################### #「⑤ 一定時間毎に現在価格をチェックし、売り目標まで下落で成行売り、買い目標まで上昇で成行買いプログラム」 # https://soutai.info/how-to-make-bitcoin-trade-bot-05/ #################################################################################################### #冒頭にrequire等呼び出し関係列挙 require 'net/http' require 'uri' require 'json' #JSONメソッド呼出し require "openssl" require './api-key' #同じディレクトリのapi-key.rbから呼出し key = API_KEY #api-key.rbから呼出し secret = API_SECRET #api-key.rbから呼出し loopcount = 0 #ループカウント設定 while(true) #無限ループ(始) #発注する価格の設定(始) puts "買いの目標価格の設定(buy_price)↓" puts buy_price = 800000 #80万円で順張りの成行買い注文 puts "売りの目標価格の設定(sell_price)↓" puts sell_price = 700000 #70万円で順張りの成行売り注文 #発注する価格の設定(終) #現在価格チェック(始) uri = URI.parse("https://api.bitflyer.jp") uri.path = '/v1/getboard' uri.query = 'product_code=FX_BTC_JPY' #FX_BTC_JPYを選択。空欄の場合は"BTC_JPY(現物)" https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true response = https.get uri.request_uri response_hash = JSON.parse(response.body) #JSON.parse()メソッドでJSON形式の文字列からハッシュ形式へ変換 puts "現在価格チェック↓" puts check_price = response_hash["mid_price"].to_i #ハッシュから中値("mid_price")のみ抽出。「.to_i」で整数に変換 #現在価格チェック(終) #現在価格と目標価格を比較する条件分岐(始) if check_price > buy_price #「現在価格>買いの目標価格」の場合 puts "「現在価格>買いの目標価格」なので、買いの成行注文を実行します。" #買いの成行注文を出す(始) timestamp = Time.now.to_i.to_s method = "POST" uri = URI.parse("https://api.bitflyer.jp") uri.path = "/v1/me/sendchildorder" body = '{ "product_code": "FX_BTC_JPY", "child_order_type": "MARKET", "side": "BUY", "size": 0.01, }' 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 "注文の承認ID↓" puts response.body #買いの成行注文を出す(終) elsif check_price < sell_price #「現在価格<売りの目標価格」の場合 puts "「現在価格<売りの目標価格」なので、売りの成行注文を実行します。" #売りの成行注文を出す(始) timestamp = Time.now.to_i.to_s method = "POST" uri = URI.parse("https://api.bitflyer.jp") uri.path = "/v1/me/sendchildorder" body = '{ "product_code": "FX_BTC_JPY", "child_order_type": "MARKET", "side": "SELL", "size": 0.01, }' 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 "注文の承認ID↓" puts response.body #売りの成行注文を出す(終) else #その他の場合 puts "その他の注文する条件外なので、何もせずスルーします。" end #現在価格と目標価格を比較する条件分岐(終) loopcount = loopcount + 1 #ループカウント+1回 puts "↑以上で、#{loopcount}回目のループ終了" puts " " sleep(60) #60秒待機 end #無限ループ(終)
↓売買注文できる無限ループに書き換え後
#################################################################################################### #「⑦ 一定時間毎チェックで取引量急増を判定すると、トレンド追従売買を実行するプログラム」 # https://soutai.info/how-to-make-bitcoin-trade-bot-07/ #################################################################################################### #冒頭にrequire等呼び出し関係列挙 require 'net/http' require 'uri' require 'json' #JSONメソッド呼出し require "openssl" require './api-key' #同じディレクトリのapi-key.rbから呼出し key = API_KEY #api-key.rbから呼出し secret = API_SECRET #api-key.rbから呼出し loopcount = 0 #ループカウント設定 while(true) #無限ループ(始) #1分足の取引量(BTC/分)を取得(始) url = URI("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=60") http = Net::HTTP.new(url.host, url.port); http.use_ssl = true; request = Net::HTTP::Get.new(url); response = http.request(request) defload_response_hash = JSON.parse(response.body) #ハッシュ取得 defload_response_array60s = defload_response_hash["result"]["60"] #ハッシュからデータ抽出 puts "↓1分足の取引量(BTC/分)" vol_1min = defload_response_array60s[-1][5] #直近データの取引量を抽出 puts vol_1min #1分足の取引量(BTC/分)を取得(終) #1時間足の取引量(BTC/分)を取得(始) url = URI("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=3600") http = Net::HTTP.new(url.host, url.port); http.use_ssl = true; request = Net::HTTP::Get.new(url); response = http.request(request) defload_response_hash = JSON.parse(response.body) #ハッシュ取得 defload_response_array3600s = defload_response_hash["result"]["3600"] #ハッシュからデータ抽出 puts "↓1時間足の取引量(BTC/分)" vol_1hr = defload_response_array3600s[-1][5]/60 #分あたりを計算 puts vol_1hr #1時間足の取引量(BTC/分)を取得(終) #1分足の始値と終値を取得(始) puts "↓始値を抽出" open_price = defload_response_array60s[-1][1] #始値を抽出 puts open_price puts "↓終値を抽出" close_price = defload_response_array60s[-1][4] #終値を抽出 puts close_price #1分足の始値と終値を取得(終) #条件分岐(始) if (vol_1min > vol_1hr*1) && (open_price < close_price) #「1分足の取引量(BTC/分)>1時間足の取引量(BTC/分)×5倍」かつ「1分足の初値<終値」の場合 puts "「1分足の取引量(BTC/分)>1時間足の取引量(BTC/分)×5倍」かつ「1分足の初値<終値」なので、買いの成行注文を実行します。" #買いの成行注文を出す(始) timestamp = Time.now.to_i.to_s method = "POST" uri = URI.parse("https://api.bitflyer.jp") uri.path = "/v1/me/sendchildorder" body = '{ "product_code": "FX_BTC_JPY", "child_order_type": "MARKET", "side": "BUY", "size": 0.01, }' 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 "注文の承認ID↓" puts response.body #買いの成行注文を出す(終) elsif (vol_1min > vol_1hr*1) && (open_price > close_price) #「1分足の取引量(BTC/分)>1時間足の取引量(BTC/分)×5倍」かつ「1分足の初値>終値」の場合 puts "「1分足の取引量(BTC/分)>1時間足の取引量(BTC/分)×5倍」かつ「1分足の初値>終値」なので、売りの成行注文を実行します。" #売りの成行注文を出す(始) timestamp = Time.now.to_i.to_s method = "POST" uri = URI.parse("https://api.bitflyer.jp") uri.path = "/v1/me/sendchildorder" body = '{ "product_code": "FX_BTC_JPY", "child_order_type": "MARKET", "side": "SELL", "size": 0.01, }' 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 "注文の承認ID↓" puts response.body #売りの成行注文を出す(終) else #その他の場合 puts "その他の注文条件外なので、注文せずスルーします。" end #条件分岐(終) loopcount = loopcount + 1 #ループカウント+1回 puts "↑以上で、#{loopcount}回目のループ終了" puts " " sleep(60) #60秒待機 end #無限ループ(終)
実行してみるとプログラムどおりに動きました^^。注文が出せたのでAPI の承認 ID(“JRF********-******-******”)が返ってきてます。
今回は「一定時間毎チェックで取引量急増を判定すると、トレンド追従売買を実行するプログラム」を作成しました。
初心者の自分でもなんとかできそうです。Rubyプログラミング面白いです^^。
無限ループを長時間実行する際のエラー停止から自動復帰するプログラムについては、また後日(^^)ノ
br>
関連リンク集
この記事のBOTはビットフライヤーLightning用です。登録がまだの方は下のバナーからどうぞ。
この記事について
仮想通貨の利益の投資先について
ビットコインをはじめとする仮想通貨は基本的にハイリスクハイリターンのキャピタルゲイン型の投資ですので、利益をそのまま仮想通貨へ再投資するとリスクも増大していきます。利益を再投資して「ガンガンいこうぜ」ってアツくなる気持ちを抑えて、仮想通貨の利益はできるだけソーシャルレンディング等のミドルリスクミドルリターンのインカムゲイン型の投資へ回すという投資方針でいこうと考えています。
ハイリスクハイリターンな投資はアーリーリタイアを目指すため
そもそもなぜ、ハイリスクハイリターンの投資も並行して行っているかといえば、それはアーリーリタイアを目指しているためです。インカムゲイン型の投資の中で比較的利回りの良いソーシャルレンディングですが、アーリーリタイアの資金をソーシャルレンディングだけの投資で回すと時間がかかり過ぎて、リタイア資金が貯まった頃には、定年が近づいてきてあまりアーリーではなくなってしまうのです(笑)
ということで、アーリーリタイアが目的ではなく、今の収入+αで生活にゆとりを得るために投資を考えている人でしたら、ソーシャルレンディング等のミドルリスクミドルリターンのインカムゲイン型の投資をオススメします。仮想通貨取引よりも損失を出すリスクはぐっと低くなります。
ソーシャルレンディング会社の情報については下記(ソーシャルレンディングのカテゴリー)をご覧ください。
注意事項
- 仮想通貨取引は、法定通貨取引(FX取引)よりもハイリスクハイリターンです。
- リスク対策として、他の案件にも資金を分散して投資することをおすすめします。
- 投資は自己責任で行ってください。
.
Category:アーリーリタイア(FIRE)の記事一覧
- 「タイは物価が安くて日本より優雅なリタイア生活ができる」というのが過去の話になった件
- 年金受給開始「75歳とか、もっと延ばしてもいい」 内閣府の検討会で意見が!
- 待ちに待った休暇とアーリーリタイア
- 65歳定年延長とアーリーリタイア
- 【投資実績公開】 会社依存度編:2017年上半期は、投資の利益が給与収入を上回り、会社依存度は38%
- 人生における豊かさとは何か?価値観は人それぞれ【私の価値観】
- 投資資金と生活資金に対するスタンス;生活還元型と生活分離型【私の投資資金スタンス】
- 「普通の人が老後まで安心して暮らすためのお金の話」を読んで
- 投資ライフバランス(方針の見直し)
Tweet