...
This commit is contained in:
parent
355db7fe20
commit
075a085b92
@ -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}]")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user