UNPKG

canvas-trading

Version:
141 lines (109 loc) 3.34 kB
# Interactive trading canvas ### React Typescript open source module Initially was made for an existing trading bot that provides an analyzed array of candles. [GitHub repository](https://github.com/makskornakov/canvas-trading-demo)\ [Demo application](https://makskornakov.github.io/canvas-trading-demo/) ## Candle type ```typescript interface CandleToDraw { open: number; openTime: string | Date; closeTime: string | Date; high: number; low: number; close: number; indicators: Indicators; //bellow trades?: AssignedTrade[]; asset?: string; } ``` ### Trade in the candle.trades[] ```typescript interface AssignedTrade { tradeID: number; tradeType: 'long' | 'short'; buyPrice: number; sellPrice: number; profit: number; isThisCandleStart: boolean; isThisCandleEnd: boolean; } ``` ### Indicators in candle.indicators ```typescript interface Indicators { revBar: 'buy' | 'sell'; fractal: 'up' | 'down'; alligator: { jaw: number; teeth: number; lips: number; }; ao: { value: number; // Custom value used by bot vertexValue: number; // Starts with 0, goes through array; // +1 if green AO bar, -1 if red; // Displays the strength of AO trend }; } ``` ### The logic of assigning the trade Each trade has an entry time and an exit one. We search for two candles (enter & exit) for each trade and add AssignedTrade to the trades array. ## Simple Usage ```typescript import Canvas, { CandleToDraw } from 'canvas-trading'; function App() { return ( <Canvas // Mandatory width={800} height={400} candleArray={candleArray} // CandleToDraw[] lastCandle={lastCandle} // CandleToDraw // Optional candlesShown={160} shift={0} shownTrade={undefined} otherSettings={{ // all optional allTradesShown: false, // display all trades alligator: true; ao: true; mountedIndicators: true; // revbar & fractal shift: true; scroll: true; showAsset: false; // shows big asset label showLastCandlePrice: false, cursor: true, resizable: false, // beta version to resize the canvas }} styles={ // any styles are applied to the Main wrap of the canvas and fonts are used through the hole canvas } ></Canvas> ); } export default App; ``` ## How to develop local packages with Hot Reload > Reference: https://pnpm.io/cli/link In a terminal, execute the following commands (assuming [`canvas-trading`][canvas-trading] is the package we want to develop): ```ps1 pnpm link ./packages/canvas-trading # `./` in the start is important — this is how `pnpm link` knows that it is a relative path. cd packages/canvas-trading pnpm i pnpm tsc --watch # Leave this terminal running for Hot Reload. ``` In another terminal, just execute `pnpm start`, or restart if it's already running. Good to go! Update anything in [`canvas-trading`][canvas-trading] for a test. #### When you're done In project root execute: ```ps1 pnpm unlink canvas-trading ``` You may also want to stop the terminal running `pnpm tsc --watch`. No need to stop the `pnpm start` terminal (if you have it running). [canvas-trading]: ./packages/canvas-trading/