UNPKG

@azteam/candlestick-chart

Version:

N/A

146 lines (124 loc) 4.13 kB
import _ from 'lodash'; import {CANDLE_COLOR} from './constant'; export function generateTickSMACompare51020(name, type, tick) { const arr = _.orderBy( [ { key: 5, value: tick[`${type}_sma_5`], }, { key: 10, value: tick[`${type}_sma_10`], }, { key: 20, value: tick[`${type}_sma_20`], }, ], ['value'], ['desc'] ); return `${name}_${type}_sma_straight_${_.map(arr, 'key').join('_')}`; } export function generateTickSMACompareBB(name, type, tick) { return [5, 10].map((i) => { const sma = tick[`${type}_sma_${i}`]; let value = 'UNKNOWN'; if (sma > tick.bb_sma) { if (sma > tick.bb_upper_band) { value = 'TOP'; } else { value = 'ABOVE'; } } else if (sma <= tick.bb_sma) { if (sma < tick.bb_lower_band) { value = 'BOTTOM'; } else { value = 'BELOW'; } } return `${name}_${type}_sma_${i}_bb_${value}`; }); } export function generateTickBBPercentRange(name, tick) { let value = 6; if (tick.bb_percent <= 0) { value = 0; } else if (tick.bb_percent <= 0.2) { value = 1; } else if (tick.bb_percent <= 0.4) { value = 2; } else if (tick.bb_percent <= 0.6) { value = 3; } else if (tick.bb_percent <= 0.8) { value = 4; } else if (tick.bb_percent <= 1) { value = 5; } return `${name}_bbp_range_${value}`; } export function generateTickProfitPercentRange(name, tick, currentTick) { let value = 0; if (tick.profit_percent < 0) { value = Math.floor(tick.profit_percent / 0.5); } else if (tick.profit_percent > 0) { value = Math.ceil(tick.profit_percent / 0.5); } let currentValue = 0; if (currentTick.profit_percent < 0) { currentValue = Math.floor(currentTick.profit_percent / 0.5); } else if (currentTick.profit_percent > 0) { currentValue = Math.ceil(currentTick.profit_percent / 0.5); } value = value >= 10 ? 10 : value; value = value <= -10 ? -10 : value; currentValue = currentValue >= 10 ? 10 : currentValue; currentValue = currentValue <= -10 ? -10 : currentValue; return `${name}_profit_per_range_${value}_${currentValue}`; } export function generateTickCandleSizeRange(name, tick, currentTick) { let value = 0; if (tick.color === CANDLE_COLOR.RED) { value = Math.floor(tick.candle_size / 0.5); } else if (tick.color === CANDLE_COLOR.GREEN) { value = Math.ceil(tick.candle_size / 0.5); } let currentValue = 0; if (currentTick.color === CANDLE_COLOR.RED) { currentValue = Math.floor(currentTick.candle_size / 0.5); } else if (currentTick.color === CANDLE_COLOR.GREEN) { currentValue = Math.ceil(currentTick.candle_size / 0.5); } value = value >= 10 ? 10 : value; value = value <= -10 ? -10 : value; currentValue = currentValue >= 10 ? 10 : currentValue; currentValue = currentValue <= -10 ? -10 : currentValue; return `${name}_candle_size_range_${value}_${currentValue}`; } export function generateTickColor(name, tickPrev2, tickPrev1, tickCurrent) { return `${name}_color_${tickPrev2.color}_${tickPrev1.color}_${tickCurrent.color}`; } export function generateTickCompare(name, tickPrev2, tickPrev1, tickCurrent) { return ['close'].map((i) => { const arr = _.orderBy( [ { key: 2, value: tickPrev2[i], }, { key: 1, value: tickPrev1[i], }, { key: 0, value: tickCurrent[i], }, ], ['value'], ['desc'] ); return `${name}_straight_${i}_${_.map(arr, 'key').join('_')}`; }); }