0.2.1 • Published 5 years ago

trade-sync v0.2.1

Weekly downloads
8
License
-
Repository
-
Last release
5 years ago

trade-sync

Install from NPM

install globally running

$ npm i -g trade-sync

run using

$ trade-sync [--config path/to/config.json]  [--fromBeginning]

Install from source

Installation

Clone the repository using git

$ git clone https://github.com/phl3x0r/zorro-fire-log.git

trade-sync requires Node.js and Typescript to run. Also, you must have a Firebase Firestore - see https://firebase.google.com/docs/firestore/quickstart for how to get started.

Install the dependencies.

$ cd trade-sync
$ npm install

Create a firebase service account and copy the contents to the firebase.credential property in your config file.

IMPORTANT: Don't share the contents of this file with others as it contains your private firebase credentials!

Configuration

Create or edit trade-sync.config.json such that it contains the path for your firestore db and a list of tradelogs to watch. Furthermore, each entry in tradLogs and positionLogs must contain a reference to a valid schema. The schemas property contains the schema to use when parsing the lines and should appear in the order corresponding to the entry parts.

Example config:

{
  "firebase": {
    "databaseURL": "<your databaseURL>",
    "credential": {
      "type": "service_account",
      "project_id": "<your project_id>",
      "private_key_id": "<your private_key_id>",
      "private_key": "<your private_key>",
      "client_email": "<your client_email>",
      "client_id": "<your client_id>",
      "auth_uri": "<your auth_uri>",
      "token_uri": "<your token_uri>",
      "auth_provider_x509_cert_url": "<your auth_provider_x509_cert_url>",
      "client_x509_cert_url": "<your client_x509_cert_url>"
    }
  },
  "tradeLogs": [
    {
      "path": "./test/demotrades.csv",
      "alias": "demo-trades",
      "schema": "mySchema"
    }
  ],
  "positionLogs": [
    {
      "path": "./test/positions.csv",
      "alias": "demo-positions",
      "schema": "mySchema"
    }
  ],
  "schemas": {
    "mySchema": {
      "name": "string",
      "type": "string",
      "asset": "string",
      "id": "int",
      "lots": "float",
      "open": "date",
      "close": "date",
      "entry": "float",
      "exit": "float",
      "profit": "float",
      "roll": "float",
      "exitType": "string"
    }
  }
}

Usage

Compile and run using the following commands:

$ npm start [--config path/to/config.json]  [--fromBeginning]

This will start watching the files specified in the tradeLogs array in the config file specified and write a new log entry when new lines get appended.

Optionally you can pass --fromBeginning to read all files from the first line.

Known Issues

If another program aquires a lock on the file, this can result in a [Error: EBUSY: resource busy or locked, open 'path\to\file.csv'] from fs.watch. Currently the only "fix" is to restart the script