From bdc18ce39c11a5b63fa56b5d17fc2b9ff6e53e8b Mon Sep 17 00:00:00 2001 From: KienVT9 Date: Mon, 14 Jul 2025 10:43:21 +0700 Subject: [PATCH] update --- src/dao/analysis.ts | 5 +++++ src/services/indicatorService.ts | 24 +++++++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/dao/analysis.ts b/src/dao/analysis.ts index 60442d4..298dd89 100644 --- a/src/dao/analysis.ts +++ b/src/dao/analysis.ts @@ -19,4 +19,9 @@ export interface Analysis { numberTouch200: number; numberMacdCrossUp: number; numberMacdCrossDown: number; + currentBB: { + upper: number; + middle: number; + lower: number; + }; } \ No newline at end of file diff --git a/src/services/indicatorService.ts b/src/services/indicatorService.ts index a4f89de..758332e 100644 --- a/src/services/indicatorService.ts +++ b/src/services/indicatorService.ts @@ -83,8 +83,17 @@ export class IndicatorService { numberMacdCrossDown: wave.numberMacdCrossDown, isMacdUpper: false, isMacdLower: false, + currentBB: { + upper: 0, + middle: 0, + lower: 0, + }, }; + analysis.currentBB.upper = bb[0].upper; + analysis.currentBB.middle = bb[0].middle; + analysis.currentBB.lower = bb[0].lower; + if (ema34[0] > ema200[0]) { if (wave.trend === "Bearish") { analysis.numberTouch200 = 0; @@ -221,10 +230,23 @@ export class IndicatorService { (max, c) => Math.max(max, c.high), Number.MIN_SAFE_INTEGER ); + let entry = candles[0].close; + if (side === "buy") { + if (analysis.currentBB.upper < candles[0].close) { + entry = analysis.currentBB.upper; + } + } + + if (side === "sell") { + if (analysis.currentBB.lower > candles[0].close) { + entry = analysis.currentBB.lower; + } + } + const order: Order = { symbol: analysis.symbol, side, - entry: candles[0].close, + entry, stopLoss: side === "buy" ? lowestPrice : highestPrice, volume: 1, };