This commit is contained in:
lunaticbum 2026-06-08 14:45:15 +09:00
parent 355db7fe20
commit 075a085b92

View File

@ -48,6 +48,7 @@ import java.time.ZoneId
import java.util.concurrent.atomic.AtomicLong import java.util.concurrent.atomic.AtomicLong
import kotlin.collections.List import kotlin.collections.List
import kotlin.collections.filter import kotlin.collections.filter
import kotlin.math.abs
// service/AutoTradingManager.kt // service/AutoTradingManager.kt
typealias TradingDecisionCallback = (TradingDecision?, Boolean)->Unit typealias TradingDecisionCallback = (TradingDecision?, Boolean)->Unit
@ -243,7 +244,7 @@ object AutoTradingManager {
if (hasCode && oldTarget != null) { if (hasCode && oldTarget != null) {
var avgPrive = oldTarget.avgPrice.toDouble() var avgPrive = oldTarget.avgPrice.toDouble()
var qty = oldTarget.quantity.toDouble() var qty = oldTarget.quantity.toDouble()
basePrice = ((avgPrive * qty) + (decision.currentPrice * orderQty.toInt())).div(qty!!.toInt() + (orderQty.toInt())) basePrice = avgPrive//((avgPrive * qty) + (decision.currentPrice * orderQty.toInt())).div(qty!!.toInt() + (orderQty.toInt()))
println("물타기 ${avgPrive}, ${qty} ${basePrice}") println("물타기 ${avgPrive}, ${qty} ${basePrice}")
} }
} catch (e:Exception) {e.printStackTrace()} } catch (e:Exception) {e.printStackTrace()}
@ -614,7 +615,7 @@ object AutoTradingManager {
println("${holding.name} ${holding.profitRate.toDouble()} ${holding.valuationProfitAmount.toDouble()} ${KisSession.config.getValues(ConfigIndex.LOSS_MAX_MONEY)} , ${KisSession.config.getValues(ConfigIndex.LOSS_MINRATE)} , ${KisSession.config.getValues(ConfigIndex.STOP_LOSS)}") println("${holding.name} ${holding.profitRate.toDouble()} ${holding.valuationProfitAmount.toDouble()} ${KisSession.config.getValues(ConfigIndex.LOSS_MAX_MONEY)} , ${KisSession.config.getValues(ConfigIndex.LOSS_MINRATE)} , ${KisSession.config.getValues(ConfigIndex.STOP_LOSS)}")
val profit = holding.profitRate.toDouble() val profit = holding.profitRate.toDouble()
var targetPrice = holding.currentPrice.toDouble() var targetPrice = holding.currentPrice.toDouble()
targetPrice = MarketUtil.roundToTickSize(targetPrice + MarketUtil.getTickSize(targetPrice) * 3.0) targetPrice = MarketUtil.roundToTickSize(targetPrice + MarketUtil.getTickSize(targetPrice) * KisSession.tradeConfig.autoSellOrderAppend)
tradeService.postOrder( tradeService.postOrder(
@ -953,10 +954,17 @@ object AutoTradingManager {
val rate = it.prdy_ctrt.toDouble() val rate = it.prdy_ctrt.toDouble()
val corpInfo = DartCodeManager.getCorpCode(it.code) val corpInfo = DartCodeManager.getCorpCode(it.code)
val isOk = (rate > 0 && rate < KisSession.tradeConfig.plusFilter) || (rate < 0 && rate > (KisSession.tradeConfig.minusFilter * -1)) val isOk = (rate > 0 && rate < KisSession.tradeConfig.plusFilter) || (rate < 0 && rate > (KisSession.tradeConfig.minusFilter * -1))
if (corpInfo?.cName.isNullOrEmpty()) { if (corpInfo?.cName.isNullOrEmpty()) {
false false
} else { } else if (it.code !in myHoldings &&
it.code !in pendingStocks &&
it.code !in executionCache.values.map { it.code } &&
it.code !in failList &&
it.code !in isSafetyBeltStockCodes){
isOk isOk
} else {
false
} }
} }
.filter { !it.name.contains("호스팩", true) } .filter { !it.name.contains("호스팩", true) }
@ -971,8 +979,8 @@ object AutoTradingManager {
currentBalance?.getHoldings()?.map { currentBalance?.getHoldings()?.map {
if( if(
it.quantity.toInt() > KisSession.tradeConfig.lowerAverageTargetCount && it.quantity.toInt() > KisSession.tradeConfig.lowerAverageTargetCount &&
it.profitRate.toDouble() < (KisSession.tradeConfig.lowerAverageMaxRate * -1) && it.profitRate.toDouble() < (abs(KisSession.tradeConfig.lowerAverageMaxRate) * -1) &&
it.profitRate.toDouble() > (KisSession.tradeConfig.lowerAverageMinRate * -1) ) it.profitRate.toDouble() > (abs(KisSession.tradeConfig.lowerAverageMinRate) * -1))
{ {
candidates.add(RankingStock(mksc_shrn_iscd = it.code, hts_kor_isnm = it.name)) candidates.add(RankingStock(mksc_shrn_iscd = it.code, hts_kor_isnm = it.name))
println("물타기 대상 추가 ${it.name}[${it.code}]") println("물타기 대상 추가 ${it.name}[${it.code}]")