@azteam/candlestick-chart
Version:
N/A
146 lines (124 loc) • 4.13 kB
JavaScript
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('_')}`;
});
}