前提・実現したいこと
・node.js のccxtライブラリを使いビットコイン自動取引プログラムをforeverを用い24時間稼働させたい
・foreverをvimで実行、以下のエラーメッセージが発生しました。
途中まではうまくいくのですがプログラム稼働から3,4時間経つと必ず停止してしまいます。
発生している問題・エラーメッセージ(コマンドプロンプトからvimを確認)
(node:11164) UnhandledPromiseRejectionWarning: ExchangeNotAvailable: bitflyer GET https://api.bitflyer.com/v1/getticker?product_code=BTC_JPY system request to https://api.bitflyer.com/v1/getticker?product_code=BTC_JPY failed, reason: write ECONNABORTED at C:\Projects\bitcoin\node_modules\ccxt\js\base\Exchange.js:395:35 at processTicksAndRejections (internal/process/task_queues.js:97:5) at async timeout (C:\Projects\bitcoin\node_modules\ccxt\js\base\functions\time.js:195:24) at async bitflyer.fetchTicker (C:\Projects\bitcoin\node_modules\ccxt\js\bitflyer.js:209:24) at async C:\Projects\bitcoin\btc-jpy.js:16:20
コードの意図
私はBTC現物取引をするために30秒ごとに計測し4回連続で上がれば売却、下がれば購入という簡単なプログラムを作りました。取引量は1回あたり0.001BTCとしています。
また売る元手、買う元手がない時はコンソールに取引ができないことを表示するようにしています。
該当のソースコード
JavaScript
1 'use strict'; 2const ccxt = require('ccxt'); 3const key = require('./key'); 4 5const btcPrice = []; 6const numberOfSheets = 0.001; //1回の取引で使うBTC枚数 7 8const sleep = () => { 9 return new Promise((resolve) => { setTimeout(() => { resolve(); }, 30000); }); 10} 11 12(async function () { 13 //bitflyer取引所を利用 14 let bitflyer = new ccxt.bitflyer(key); 15 while (true) { 16 const ticker = await bitflyer.fetchTicker('BTC/JPY'); 17 btcPrice.push(ticker.ask); 18 if (btcPrice.length > 4) { 19 btcPrice.shift(); 20 } 21 console.log(btcPrice); 22 // 上昇を検知 23 if (btcPrice[3] > btcPrice[2] && btcPrice[2] > btcPrice[1] && btcPrice[1] > btcPrice[0]) { 24 try { 25 await bitflyer.createMarketSellOrder('BTC/JPY', numberOfSheets); 26 console.log(`上昇傾向を検知,${numberOfSheets}BTC売りました`); 27 } catch (e) { 28 console.log("上昇傾向を検知しましたがBTCがないため売ることができませんでした"); 29 } 30 } 31 // 下降を検知 32 if (btcPrice[3] < btcPrice[2] && btcPrice[2] < btcPrice[1] && btcPrice[1] < btcPrice[0]) { 33 try { 34 await bitflyer.createMarketBuyOrder('BTC/JPY', numberOfSheets); 35 console.log(`下降傾向を検知,${numberOfSheets}BTC買いました`) 36 } catch (e) { 37 console.log("下降傾向を検知しましたがJPYがないため買うことができませんでした"); 38 } 39 } 40 await sleep(); 41 } 42})();
試したこと
取引間隔を変えてみたりしましたがどうにもなりませんでした。
宜しくお願い致します。
補足情報(FW/ツールのバージョンなど)
node 12.19.0
OS windows
npm 6.14.8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/01 08:47 編集
2020/12/02 18:10
2020/12/05 07:16